h.264 ES流转PS流

这些天一直在做h.264 ES流转PS流的方法。现在把我的一点小经验总结下。

1、将SPS,PPS和IDR帧组合成一个PES包,其他I、P、B帧分别为一个PES包。

2、每个IDR帧的封包顺序从外到里分为为PS头,PSM头,PES头。其他I、P、B帧从外到里为PS头,PES头。

3、可以将PES包里的PES_packet_length填写为0x00,但封装后的PS流,一般VLC和ffmjpeg可以播放,但storm不可以。如果要填充PES_packet_length的话,需要进行分包,因为PES_packet_length是两个字节,最大支持0xFFFF个字节,当数据包长度大于这个的时候需要分包。分包时不用管NALU的完整性。

4、时间戳和SRC的对应方法:时间戳(ms) = SRC/90 

 

 

其中包头打包的部分代码如下:

int make_ps_packet_header(unsigned char *_pHeader,unsigned int _iHeaderLen,unsigned int _iResolutionFlag,unsigned int _iFrameIndex)
{
 if (NULL == _pHeader || _iHeaderLen < sizeof(PS_HEADER_tag))
 {
  return -1;
 }

 PS_HEADER_tag ePSHeader;
 
 float fInterval = 33.3333333333;
 UINT64 ui64SCR = fInterval * _iFrameIndex * 90;
 ePSHeader.setSystem_clock_reference_base(ui64S

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值