PES,TS,PS,mpeg-ts,mpeg-ps

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流的呢?应该是通过包头部分的控制信息来明确的,还的好好看看文档.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GB28181是一种视频监控领域常用的协议,其支持拉取RTSP和RTP两种类型的数据流。其中,RTP数据流就是一系列以UDP协议进行传输的视频数据包,其负责视频信息及其时间信息的传输。而PS流作为RTP数据流的一种,其优点在于可以同时传输音频和视频数据,并且在网络不流畅的情况下稳定性更高。 下面是GB28181的PS流分析: 1. PS流格式 PS流是一种由包含多个包的MPEG-2传输流构成的流格式,其中每个包的大小为188字节。其包含了一个称为PES(Packetized Elementary Stream)的数据单元,同时还包括了一些元数据信息,例如视频码率、帧率、分辨率等。 2. PS流构成 一个PS流由多个PES包组成,其中每个PES包代表一个时间片段的音频或视频数据。在整个时间切片中,所有的数据包会按照时间顺序进行排列。其中,音频和视频的PES包可以通过PID值进行区分。 3. PS流解析 在解析PS流时,需要先解出MPEG2-TS首部,然后解析TS流中的PMT、PAT表,最后才能解析得到视频和音频数据。其中每个TS包分别由188个字节组成,最后4个字节为CRC校验码。其他字节代表位同步字节和不同PID的封装数据,其中每个PID对应着一种视频或音频的数据流。 综上所述,GB28181的PS流分析需要解析MPEG2-TS首部,PMT和PAT表以及PID封装数据来获取音视频数据信息。同时,对于PS流的使用还需要考虑网络环境质量和视频质量问题,以保证视频监控系统的正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值