在MPEG-2系统中,信息复合/分离的过程称为系统复接/分接,由视频,音频的ES流和辅助数据复接生成的用于实际传输的标准信息流称为MPEG-2传送流(TS:TransportStream)。 据传输媒体的质量不同,MPEG-2中定义了两种复合信息流:传送流(TS)和节目流(PS:ProgramStream)TS流与PS流的区别在于TS流的包结构是固定长度的,而PS流的包结构是可变长度的。 PS包与TS包在结构上的这种差异,导致了它们对传输误码具有不同的抵抗能力,因而应用的环境也有所不同。TS码流由于采用了固定长度的包结构,当传输误 码破坏了某一TS包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。而PS包由于长度是变化的,一旦某一 PS包的同步信息丢失,接收机无法确定下一包的同步位置, 就会造成失步,导致严重的信息丢失。因此,在信道环境较为恶劣,传输误码较高时,一般采用TS码流;而在信道环境较好,传输误码较低时,一般采用PS码流 如DVD等等。 由于TS码流具有较强的抵抗传输误码的能力,因此目前在传输媒体中进行传输的MPEG-2码流基本上都采用了TS码流。 简单说就是ps流(主要用在DVD上)如是中间丢了一断码流,后面的都没法播了;而TS流(DVB-T,DMB-TH等)如果断了码流,后面的随时可以再开始解码怎么看都行。 DVB-T,DVB-H,DMB-TH 主要指的是调制解调(信道编码和解码)方式为COFDM,信源编解码采用的都是MPEG-2,TS流。 目前地面波数字电视标准中只有日本的ISDB 采用MPEG-4(H.264)编解码。 清晰度方面,DVB-T,DMB-TH标准都可以达到高清标准,DVB-H主要面向手持设备,接收终端的解析度有限。 ps码流:dvd等本地文件 ts码流:rtp网络传输等 ==================================================== pes,ts,ps ts流是由很多不同种类的包所组成的,这些数据包都是188个字节大小,这188个字节包含两部分,包头和负载,包头包括同步信息,包信息等等,而负载则是传输的数据,而这些负载则可以组成PES流或者私有流等等数据流. 举例说,一个TS流包括100个包,其中PSI信息包占20个,PES数据包80个,此TS流中只有一套节目流,不含有私有流,所以从这80个PES包中 的负载连接在一起,就是2个PES流(视频,音频),如果每个PES包的负载长度为100字节,则这两个PES流一共长度为8000个字节.假设其中视频 的PES流长度为6000字节.则视频的6000字节的PES流,是由PES包组成的.PES包没有固定的长度,而是由包头部的数据给出.而PS也是类似 TS流分解的方式,逆向的由PES包封装成包,其中要添加PACKET_HEAD,SYSTEM_HEAD等信息.所以上次所做的程序,并不是 TS->PS的转换,而是从一个复杂的TS流中,过滤去一套节目,构造出一个简单的TS流的过程. mpeg-ts,mpeg-ps的转换 mpeg2文件都是以数据包传递的,同样都是188个字节为一个包,但是作为传输流和节目流,包的组织结构还是不太一样的,作为传输流来说,其包含的包的 种类比较多(其实不是包的种类,而是包含不同用途的数据的种类比较多),比如有PID为0x0000的PAT,EIT,TDT,TOT,还有PMT,等等 不同的表或包.而节目流所包含的就比较少,只要包含PAT,PMT,以及包含音频,视频的PES包就可以了.所以在TS,PS的转换 中,TS->PS的转换比较简单,只要去掉相对没有作用的包,在修改一下PAT,PMT表就可以了. 例如现在我所做的DVB-T的MPEG2存储,就是先得到MPEG2压缩的数据包(完整的包,包含同步等等所有信息,共188个字节),其中包含音频,视 频两种数据包(两者以PID不同,相区分).那么作为PS流存储时,就要虚构出新的PAT,PMT表假如到PS流中,其中PAT,PMT中需要修改的就是 PMT中指向音频,视频流的PID值必须是要存储的音频,视频数据包的PID.这样就完成了TS->PS的转换. 简言之:先对TS进行过滤,保留要存储的节目所对应的音频,视频流,删除所有其他的包.然后虚构一个新的PAT,PMT表,其中音频,视频流的指针必须指向存储的音,视频流的PID.这样就完成了转换. 问题:1.音频,视频同步问题,这两个包应该以什么样的比例交叉传输呢?也就是多少个视频包中间发送一个音频包呢?如果这个比例控制不好,那么就容易造成音,视频不同步. 2.对于我们所虚构的PAT,PMT表应该以什么样的频率发送呢?也就是说发送多少PES包后,发送一次PSI包呢?这个问题似乎影响不大.好象还没有出现播放时的问题. 3.我现在所采用的这种做法,虽然解决了存储,然后播放的问题,但是似乎并没有实现TS->PS的转换,实现的是对TS流的过滤,即是把一个含有多套节目的TS流,转换成一个只含有一套节目的TS流,不知道这样说对不对? 4.还有一个主要问题就是对于TS流中传输PES信息的包来说,其负载信息中的数据,如何组成PES流的呢?应该是通过包头部分的控制信息来明确的,还的好好看看文档.