一些历史背景:我目前正在与Wowza合作并尝试解码来自 IMediaStream 的 AMFPackets 。视频数据包将具有5字节标头,第一个数据包是编解码器配置。
到目前为止,在我的检查中,编解码器配置与 ISO / IEC 14496-15 AVCDecoderConfigurationRecord 布局相匹配。但是,我无法解码 SPS 和 PPS 单位。
17 00 00 00 00 01 4D 00 15 03 01 00 2F 67 4D 40 15 96 52 02 83 F6 02 A1 00 00 03 00 01 00 00 03 00 28 E0 60 03 0D 40 00 49 3E 7F 18 E3 03 00 18 6A 00 02 49 F3 F8 C7 0E D0 B1 68 90 01 00 04 68 EB 73 52
17 00 00 00 00
67 4D 40 15 96 52 02 83 F6 02 A1 00 00 03 00 01 00 00 03 00 28 E0 60 03 0D 40 00 49 3E 7F 18 E3 03 00 18 6A 00 02 49 F3 F8 C7 0E D0 B1 68 90
假设这是一个包含SPS类型的NAL单元: (使用 ITU-T H.264 06/2011 7.3.1 NAL单元语法)
假设SPS有效负载遵循: (使用 ITU-T H.264 06/2011 7.3.2.1.1序列参数集数据语法)
假设这只是一个SPS: (使用 ITU-T H.264 06/2011 7.3.2.1.1序列参数集数据语法)
看起来它是以前的NAL单元标头+ SPS记录,我怀疑这是不好的数据,因为每个捕获的配置数据包是相同的,但是什么让我失望是为什么被禁止的0位设置为1?
由于
答案 0 :(得分:4)
我发现了问题......过于盯着1和0,你会错过一个(双关语)。
67 4D 40 15 ...
假设这是一个包含SPS类型的NAL单元:(使用ITU-T H.264 06/2011 7.3.1 NAL单元语法)
第一个字节:67 = 1100111
这是错误的,因为 1100111 只有7位。我使用MS计算器进行了转换,并且它去掉了前导0.正确的二进制文件是 01100111 ,并且有禁止的零位。
感谢那些试图解决这个问题的人。