ts文件component是什么文件


ts文件component是什么文件

最近彻底研究分析了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表用MPEG指定的PID(00)标明,通常用PID=0表示。它的主要作用是针对复用的每一路传输流,提供传输流中包含哪些节目、节目的编号以及对应节目的节目映射表(PMT)的位置,即PMT的TS包的包标识符(PID)的值,同时还提供网络信息表(NIT)的位置,即NIT的TS包的包标识符(PID)的值。

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

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

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

◆传输流描述表(TSDTTransportStreamDescriptionTable)

除了上述的表述之外,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流。

ts流文件解析工具easyicev2.6,支持windowsxp,windows7,windows8下使用,内含ts示例文件demo.ts,可直接解析。

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

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

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

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

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

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

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

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