提取现成的ts流中的i帧文件

这篇博客介绍了如何从TS流中提取出i帧。作者首先解析了PES包的结构,通过判断不同条件确定ES包的长度。接着,详细讲述了如何识别ES包中的i帧,依据起始码和编码类型确定i帧的开始和结束位置。最后,强调了保存i帧时需要包含序列头以确保文件可播放,并列举了编写代码时需要注意的几个问题。
摘要由CSDN通过智能技术生成

    进入公司的新人培训第二个作业,看了几天的文档都没太搞懂es包的结构,网上的资源也比较少,多数是介绍ts流和pes包的。所以花费了好几天才完成。

    这个作业是对第一个作业的继续,在上一次作业中成功提取出来了pes包的视频,这次作业在第一次的基础上将pes包的包头去掉提取出来es视频,然后在es视频中提取出i帧来。

  

上图是pes包的结构。

     pes包6个字节的包头,其中Optional PES Header的长度是不固定的,一个字节的PES Header Data Length的值表示该字段后的字段的长度。后边的pacrt data bytes就是es包了。

      所以提取es包就是要确定es包前面的长度。

adaption_control == 0x10时表明ts包中没有调整字段,ts包头后直接是有效负载,若payload_unit_start == 1说明ts包头后面是pes包那么es包前的长度就是length = 4 + 6 + 3 +PES_header_data_length;   若payload_unit_start == 0说明ts包后面的有效负载直接是es包,那么es包前面的长度就是length = 4 ;即ts包header的长度。

adaption_control == 0x30时表明ts包头后面是调整字段,调整字段后面才是有效负载,此时计算e

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值