`
rcfalcon
  • 浏览: 228637 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ts流中mpeg2音视频同步及算法小记

 
阅读更多

在ts流中,MPEG2编码中,音视频包是交错出现的。

分析其pts可以发现,在同等交错位附近,音频的pts要比视频的靠前得多。

比如一段实际码流数据如下:

--------------------------

valid video packet count1

video packet 视频包1

packet.pts -9223372036854775808

packet.dts 3529565163

packet.duration 3600

packet.size 37460

packet.pos -1

--------------------------

valid video packet count1

audio stream packet: 音频包1

packet.pts 3529553320

packet.dts 3529553320

packet.duration 2160

packet.size 384

packet.pos -1

--------------------------

valid video packet count2

video packet: 视频包2

packet.pts 3529568763

packet.dts 3529568763

packet.duration 3600

packet.size 18508

packet.pos -1

--------------------------

valid video packet count2

audio stream packet 音频包2

packet.pts 3529555480

packet.dts 3529555480

packet.duration 2160

packet.size 384

packet.pos -1

--------------------------

valid video packet count3

video packet 视频包3

packet.pts 3529572363

packet.dts 3529572363

packet.duration 3600

packet.size 17960

packet.pos -1

--------------------------

valid video packet count3

audio stream packet 音频包3

packet.pts 3529557640

packet.dts 3529557640

packet.duration 2160

packet.size 384

packet.pos -1

--------------------------

valid video packet count3

audio stream packet 音频包4

packet.pts 3529559800

packet.dts 3529559800

packet.duration 2160

packet.size 384

packet.pos -1

--------------------------

valid video packet count4

video packet 视频包4

packet.pts -9223372036854775808

packet.dts 3529575963

packet.duration 3600

packet.size 39632

packet.pos -1

--------------------------

valid video packet count4

audio stream packet 音频包5

packet.pts 3529561960

packet.dts 3529561960

packet.duration 2160

packet.size 384

packet.pos -1

其实这样的理由是,在播放器实际播放过程中,音频是持续播放,以视频来同步音频。

这样的好处是,音频缓冲,而视频实时解码。音频占用存储量较小,而用视频来同步音频,如果解码速度实在跟不上,可以调帧。

人的肉眼对每秒比如25帧的视频跳帧是没有太大察觉度的,但如果音频出问题,很容易听出来,会影响到用户体验。

这就是为什么ts流中音频数据比视频数据优先传输的原因。

如果我们需要对音视频进行同步,关键就是找一个绝对的基准点。而之后所有的音视频数据都可以根据帧率、码率算出来偏移量。如何寻找这个绝对基准点呢?

比如从我要找到某个视频帧对应的确切PCM,可以在音频包上向前寻找附近pts与视频包较为吻合的两个音频包。

然后由于PCM和音频包大小都是固定的,就可以计算出具体的偏移量了。(根据前后pts及视频帧pts计算偏移)

这样,我从ts流任意一个地方开始播放,可能刚开始的视频帧是没有声音的。(因为刚开始的音频包对应的是之后的视频帧)

那在播放过程中,如何指定从确切的某视频帧开始播放?(一般播放器可能不能精确定位到一帧,而是附近的I帧)。

我们只需要向前索引最近的I帧,然后从I帧解出来当前帧就可以了。为了加快速度,甚至可以刚开始建力帧数据的索引信息,用于迅速定位I帧。

分享到:
评论

相关推荐

    从MPEG2 TS流中提取视频序列流

    在数字视频传输和存储中,MPEG2 Transport Stream (TS) 是一种广泛使用的格式,它将音视频数据打包成固定长度的包,每个包由188个字节组成。TS流包含多种服务,如视频、音频和辅助数据,通过特定的PID标识不同的服务...

    H264和音频流打包成TS流 (MPEG2-TS)

    描述中提到的 "TsMuxer.dll" 是一个C/C++编写的TS流打包库,它允许开发者将H.264编码的视频流和音频流合并成符合MPEG2-TS规范的数据流。这个库通常用于构建流媒体服务器、视频转码工具或者嵌入式设备中的多媒体处理...

    解析TS流,播放音视频

    解析器会识别和提取TS包头中的同步字节,解析出PID(Packet Identifier),进而找到对应的服务如音频流或视频流。解析过程中,还需要处理错误检测和修复,确保数据的完整性。 FFmpeg是一个强大的开源库,包含了多种...

    ts流找同步

    MPEG2的TS流找同步程序,连续找到5个188字节的同步包才认为同步上,否则未同步;

    MPEG2TS转换为MPEG2PS的方法(附图)

    在多媒体领域,MPEG2TS(Transport Stream,传输流)和MPEG2PS(Program Stream,节目流)是两种常见的编码格式,它们主要用于存储和传输视频数据。MPEG2TS通常用于数字电视广播,而MPEG2PS则常用于DVD等存储介质。...

    FFmpeg如何同步音视频的解决方案

    音视频同步是指在播放音视频文件时,音频和视频流保持同步的过程。为了实现音视频同步,FFmpeg提供了两个重要的参数:DTS(解码时间戳)和PTS(显示时间戳)。DTS告诉我们什么时候需要解码,而PTS告诉我们什么时候...

    TS流 包 结构以及同步

    TS流的解析需要先找到PAT表,然后找到PMT表,最后找到音视频流。PAT表和PMT表需要定期插入TS流,以便解码器能够正确地解码TS流。 TS流是一种广泛应用于数字电视和流媒体领域的数据传输格式,它可以将TS流理解为一种...

    以FFmpeg为基础的音视频同步代码(linux)

    本文将深入探讨如何使用FFmpeg库在Linux系统中实现音视频同步的代码实践。 音视频同步的核心在于确保音频和视频的数据流在播放时能够正确对齐,以避免出现声音提前或滞后于画面的现象。FFmpeg提供了丰富的API来帮助...

    TS tools mpeg2ts 格式分析工具

    在IT领域,MPEG2-TS(Transport Stream)是一种广泛应用于数字电视、卫星广播和视频流媒体的容器格式。TS工具是专门用于分析和处理这种格式的文件的工具集,帮助我们理解、调试和优化MPEG2-TS流。下面我们将深入探讨...

    MPEG2_TS.rar_mpeg2_ts_ts流

    要从MPEG2_TS流中提取视频序列流,首先需要识别出携带视频数据的包。这通常通过PID来实现,因为每个服务(频道)的视频和音频数据都有各自的PID。一旦找到视频数据的PID,就可以把相关的TS包汇集起来,去除包头,...

    FFMpeg对mpeg2ts流解码的流程分析

    "FFMpeg对mpeg2ts流解码的流程分析" ...FFMpeg中mpeg2-ts流的解码流程是一个复杂的过程,需要了解mpeg2-ts流的格式和FFMpeg的解码机制。通过本文档的学习,读者可以快速掌握相关知识,并应用于实际项目中。

    MPEG2TS流解析程序,输入为TS流文件,可以将视频和音频解析出来.zip

    MPEG2TS流解析程序是针对传输流(Transport Stream,简称TS)文件进行处理的工具,主要用于解码和提取TS文件中的视频和音频数据。在数字电视广播、视频编码和网络传输等领域,TS流格式被广泛应用。这个程序是用C#...

    MFC-MPEG2TS流转PS流软件

    PS格式更加紧凑,不包含TS流中的错误修复和流同步信息,但仍然能承载多路音视频数据,适合连续、无损地存储和播放。 描述中提到的“分析TS流中的PSI节目信息”,PSI(Program and System Information)是TS流中的...

    TS包协议(音视频编解码)

    TS包协议是数字电视系统和网络中不可或缺的一部分,它支持音视频编解码的同步和组合。 描述: 本文档提供了13818标准的TS协议, 用于分析TS流, 主要用于音视频流的编解码 国际标准13818-1,也称作ITU-T H.222.0,是...

    mpeg2ts1394dec-0.3.1.rar_音视频

    在音视频解码过程中,mpeg2ts1394dec-0.3.1首先会解析PAT,获取到节目信息,然后通过PMT解析出具体节目的音视频流配置,包括编码格式(如H.262 for video, MPEG1/2 Audio等)、声道数、分辨率等关键参数。...

    MPEG2 TS 资料 协议 标准

    关于TS流的解析.pdf:此文件可能详细讲述了TS流的解析过程,包括如何从TS流中提取音视频数据,理解不同类型的包,以及如何处理时间码和PTS/DTS(节目时钟参考/解码时间戳)。 TS协议.pdf:这份文档可能涵盖TS协议的...

    TS流解析出单路视频ES

    标题中的“TS流解析出单路视频ES”指的是在数字电视传输系统中,对Transport Stream (TS) 流进行解析,以提取出其中的Video Elementary Stream (ES)。TS流是一种用于传输多路音视频数据的协议,常用于数字电视广播、...

    MPEG2_TS流基本概念和数据结构

    MPEG2_TS流,即MPEG-2传输流,是一种广泛应用于广播和存储媒体系统中的数据格式,主要用于传输和存储多个同步的音视频流。以下是对MPEG2_TS流基本概念和数据结构的深入分析。 #### 1. ES-Elementary Streams(原始...

    FFMpeg对MPEG2_TS流解码的流程分析

    根据给定的信息,本文将深入解析FFMpeg中MPEG2_TS流的解码流程,重点探讨mpegts.c文件中的关键部分以及整个解码过程的关键技术细节。 ### 一、FFMpeg中MPEG2_TS流解码的流程概述 #### 1.1 MPEG2协议简介 MPEG2...

    TS流分析工具,可以看码流视频

    描述中的"可以看码流视频"意味着该工具不仅具备分析能力,还可能提供实时预览功能,允许用户直接观看TS流中的视频内容,以便更好地理解和评估TS流的播放质量。 标签中的“TS”是传输流的缩写,是由国际电信联盟定义...

Global site tag (gtag.js) - Google Analytics