在成功完成了从TS码流中提取出H264和AAC之后,开始一下最终的挑战,就是把H264封装成TS个数。这里想把码流的切片一起实现在里面。这里画了一个大概的实现图。
这个图主要是实现了切片的流程。
我计划把一个gop里的视频组成一个ts文件。
TS切片格式:
每个ts切片第一个ts包(188字节肯定是包含pat信息)
每个ts切片第二个ts包肯定是pmt信息
然后开始是N个pes信息
下面上一下定义:
弄明白了ts的结构之后,终于可以开始干活了,下面开始码代码。
*************************等待中********************
这里的pes包和ps流中的pes包不太一样,主要在分包的处理上面。
这里的pes包只有一个pes头,后面全是裸数据,这个pes头为9个字节+10个字节的解码时间和显示时间
一共19个字节,固定值。这样就可以方便计算分包了。
由于ts个包只有188个字节,这里先分包
第一个包:ts头4个字节+长度1个字节+7个字节的adapter+每个pes包开头有9+10个字节,一共4+1+7+19 =31个字节
第二个包:第二个包只有4+后续裸数据
最后个包:ts头4个字节+需要使用adapter补充+后续裸数据
ts头当是pes第一个包时,adaptation_field_control =3,
ts头当是pes中间包时,adaptation_field_control =1,
ts头当是pes最后包时,adaptation_field_control =3,
ts头是pat时候,adaptation_field_control=1
ts头是pmt时候,adaptation_field_control=1
历时一天时间,终于完成了H264---》封装到ts。累死累死。