TS流解析

来源:互联网 发布:win10 v1703新手优化 编辑:程序博客网 时间:2024/05/22 09:49

 1. 介绍:​TS即是"Transport Stream"的缩写。他是分包发送的,每一个包长为188字节或者是204的字节(204字节的就是在后面添加了16字节主要用于高清解码),在TS流里可以填入很多类型的数据,如视频、音频、自定义信息等。他的包的结构为,包头为4个字节,负载为184个字节(这184个字节不一定都是有效数据,有一些可能为填充数据),废话我就不多说了,一些表的结构每个字段表示的意义在网上有很多的。我就直接讲实际的,我写的一些代码,主要解析的是PAT,SDT,PMT,EIT,NIT,TDT一些表格。(C语言)

          2. 大概要实现的功能:

                       1)在终端显示流中所有节目的信息(节目号,解码名字,音视频ID,输入一个节目号能够保存音视频数据包,能够在播放器中播放)。(PAT,SDT,PMT表的解析)

                       2)输入一个节目号能够显示未来几天的信息(EIT表的解析)

                       3)显示NIT表中的信息

                       4)显示CAT表的信息(主要是ECM_PID,和EMM_PID)

                       5)显示系统的时间,这个是我猜的其实我也不知道是系统时间(TDT表的解析)

          3. 直接上代码啊(一些介绍信息)

                       1)ParseTS_Length.c 文件是解析TS流的包长(188还是204),TS流的其实位置。

                       2)GetPidPackage.c 保存指定PID的数据包。PID我用的是一个数组存的因为保存的目的是为了保存音视频的数据包,有多个PID。数组的第一个元素存放的是PID的个数。

                       3)GetSection.c 得到SECTION,以为我解析的过程其实就是解析SECTION的过程,SSCTION是由一个或者多个包组成的。多个SECTION组成一个TABLE

                       4)Descriptor.c 描述符的解析,有各种各样的描述符。

                       5) ParseCAT.c  ParseEIT.c ParseNIT.c ParsePAT.c ParsePMT.c ParseTDT.c ParseSDT.c PAT,SDT,PMT,EIT,NIT,TDT,CAT表的解析。

         4. 直接上源码 (测试文件太大了上次不上去你可以直接找个188或者204的都可以,在main函数中改下路径就行了,我就直接上传了代码在CSDN上 象征性的收取了1分的资源分)

                        TS流解析