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分的资源分)