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

TS文件格式详解

阅读更多

最近彻底研究分析了ts文件格式,这里做下学习总结:
简单的来说,ts文件中的信息其实就是通过负载类型字段来找,找到后把数据从负载中提取出来,ts中可以有很多媒体类型数据,比如说可以同时又音频和视频数据,
可是要如何区分ts文件中的数据是音频还是视频呢?这就需要动用ts文件中的PSI描述说明了。

PSI:

在MPEG-II中定义了节目特定信息(PSI),PSI用来描述传送流的组成结构,在MPEG-II系统中担任极其重要的角色,在多路复用中尤为重要的是PAT表和PMT表。PAT表给出了一路MPEG-II码流中有多少套节目,以及它与PMT表PID之间的对应关系;PMT表给出了一套节目的具体组成情况与其视频、音频等PID对应关系。PSI提供了使接收机能够自动配置的信息,用于对复用流中的不同节目流进行解复用和解码。PSI信息由以下几种类型表组成:

◆ 节目关联表(PAT Program Association Table)

     PAT表用MPEG指定的PID(00)标明,通常用PID=0表示。它的主要作用是针对复用的每一路传输流,提供传输流中包含哪些节目、节目的编号以及对应节目的节目映射表(PMT)的位置,即PMT的TS包的包标识符(PID)的值,同时还提供网络信息表(NIT)的位置,即NIT的TS包的包标识符(PID)的值。

◆ 条件接收表(CAT Conditional Access Table)

     CAT表用MPEG指定的PID(01)标明,通常用PID=1表示。它提供了在复用流中条件接收系统的有关信息,指定CA系统与它们相应的授权管理信息(EMM))之间的联系,指定EMM的PID,以及相关的参数。

◆ 节目映射表(PMT Program Map Table)

     节目映射表指明该节目包含的内容,即该节目由哪些流组成,这些流的类型(音频、视频、数据),以及组成该节目的流的位置,即对应的TS包的PID值,每路节目的节目时钟参考(PCR)字段的位置。

◆ 网络信息表(NIT Nerwork Information Table)

     网络信息表提供关于多组传输流和传输网络相关的信息,其中包含传输流描述符、通道频率、卫星发射器号码、调制特性等信息。

◆ 传输流描述表(TSDT Transport Stream Description Table)

    传输流描述表由PID为2的TS包传送,提供传输流的一些主要参数。

◆ 专用段(private_section)

     MPEG-2还定义了一种专用段用于传送用户自己定义的专用数据。

◆ 描述符(Descripter)

     除了上述的表述之外,MPEG-2还定义了许多描述符,这些描述符提供关于视频流、音频流、语言、层次、系统时钟、码率等多方面的信息,在PSI的表中可以灵活的采用这些描述符进一步为接收机提供更多的信息。

     在解码时,接收机首先根据PID值找到PAT表,找出相应节目的PMT表的PID,再由该PID找到该PMT表,再在PMT表中找到相应的码流,然后开始解码。

总下简单的说就是,解析ts的过程就是通过找到PAT表,从PAT表中找出对应存在的节目的id,按照这些id找到这些节目的PMT表,从中获到这些节目总的相对的媒体数据id,然后通过这些id,再从ts文件中找到这些文件的es数据,来完成解码或者别的什么操作。
  如图:

ts文件,将每个数据包分成188个字节来发送。ts文件格式如图:
   
 从图中可以看到 ts文件头分为包头和负载两部分,现在我们详细看下包头结构:
 
sync_btye固定为0x47 ,说明从这个字节后的188个字节都属于一个ts包。 比较重要的是PID这个字段,共13位,表示了这个ts包负载数据的类型,如果没有这个信息,无法再后续寻找我们想要的数据。调整字段的作用稍后会看到。这里先跳过介绍吧,其他的字段对于ts的学习可以先不研究,不是很重要。

    现在我们看看,PAT表的结构:
    
   
     TS的解析工作,一般都是从找PAT表开始,所以,要先找到负载中头个字节是0x00的,就说明找到PAT表了。section_length表示从这个字段开始后有几个字节,如果不满188个字节,就用0xff填满。可以发现去掉最后4位的crc校验位从section_number之后的5个字节开始,就是这个ts文件中缩有的节目了,每两个字节代表一个节目,从中很容易获取到节目的ID信息。
    获取到ID之后,就可以开始查找关于这个id的PMT表了。
    PMT:
    
      
        PMT表中 多数字段含义和PAT表类似,值得注意的是对于对应节目中的媒体数都是5个字节表示,音频数据或视屏数据。所以,从中可以发现当前节目有多少的音视频相关信息。从stream_type可以通过查表来得知是音频数据还是视频数据等信息,这个就靠大家自己在网上查阅了。
         之后就可以通过得到的elementary_pid来查找对应的音视频信息了。从而从中获取出es流。
      

 

转自:http://blog.chinaunix.net/uid-24922718-id-3686257.html

分享到:
评论

相关推荐

    MPEG-TS 文件格式解析

    EasyICE MPEG-TS 文件分析工具

    ts流文件解析工具 easyice v2.6 内含ts示例文件demo.ts

    ts流文件解析工具 easyice v2.6,支持windows xp, windows 7, windows 8下使用,内含ts示例文件demo.ts,可直接解析。

    qt解析excel直接生成ts文件

    qt解析xml,将excel的多语言直接转换为ts文件。避免一个个转换ts文件的麻烦

    从ts文件或流中解析I帧

    ts流解析从PAT表的解析开始,从PAT中解析PMT,然后获取PES数据,最终解码获取YUV420P格式I帧图像

    TS格式详解

    对TS流格式的详细中文说明,包含PES结构说明,如何从TS流中解析PAT信息等。

    解析TS文件

    解析传输流188或204byte的Ts文件

    视频文件文件头解析--ts

    视频文件文件头解析--ts

    解ts文件包含多路视频流和音频流

    该工程可以解析合成多路视频流和音频流的ts文件,主要类有Mux,Demux,混屏类MixVideo,混音类MixAudio。

    TS格式解析并再次封装

    解码 ts源成es流,获取其中的pcr时间,并统计一些数据,同时将es流中的视频流再次封装成ts流,提取i帧成ts流。可以控制新ts的播放速率。(缺陷就是只能有一个PMT表和2个program)

    ffmpeg自动下载m3u8合并为ts(自动解析key文件)

    资源兼容多种媒体格式,下载解压后配置一下环境变量(目录下bin文件夹) 转换命令: ffmpeg -i "20090401010.mp4" -y -ab 32 -ar 22050 -qscale 10 -s 640*480 -r 15 /opt/a.flv -i 是 要转换文件名 -y是 覆盖...

    MPEG-2 解析工具(附测试TS文件)

    简介:分析TS流数据。打开TS流文件,分析后得到TS流的包的数量,PID的种类,PAT,PMT, PES Header,Adaptation Field 包的数量及包的序号。根据包的类型列出各个字段的值及其含义。

    解ts流的文件

    本程序判断文件是否是ts 文件,能够解析ts文件中的PAT、SDT、PMT表,并且能够把这几个表关联起来,打印出节目的信息,还可以提取出存在program_number的节目文件

    解析本地ts文件,分离出音视频

    代码实现了本地ts文件的解析,分离出音视频,在本地生成.264文件和.aac文件。里面必要的字段和逻辑都做了注释。如果对TS流的结构不清楚的,建议先学习下,然后再来看代码。有需要的朋友可以下载。

    【python爬虫】爬取网页视频,解析m3u8文件,获取ts并合成mp4

    python爬虫相关: 由于很多网站上的视频只提供在线观看,...利用requests获取网页源代码中的m3u8链接,对链接进行逐步解析,获取ts列表,下载所有ts文件,将其合并生成mp4文件。做到对视频的爬取。 同名博文相关代码。

    TS流文件结构解析程序

    可分析TS流的结构,如PAT PMT SDT EIT等表的内容

    TS解析源代码

    TS解析源代码,比较详细,经典,适合入门开发者参考

    解析TS流,播放音视频

    默认是接收网络udp组播窜流,然后解析TS,播放音视频。也可以做些小改动,改为读取本地TS文件。里面核心的代码是解析TS流,使用ffmpeg软解,使用sdl播放三大块。希望对你们有所帮助。

    从TS文件中搜索节目信息

    从TS文件中过滤出section,在对section的内容进行解析,获取service_id,name,pmt_pid,sudio/video_id,frequency,symbol_rate等

    s参数snp格式详解.pdf

    s参数snp格式详解.pdf TouchStone格式文件也就是我们通常是到的SnP文件,用来表示S参数。它是用来保存N端口网络有源设备或者无源连接的参数。在TouchStone格式成为事实上的标准的同时,并没有正式的文档规定文件的...

    C语言TS流文件解析,JNI库.zip

    C语言TS流文件解析,JNI库.zip

Global site tag (gtag.js) - Google Analytics