Flash 如何检查H264/AVC ISO/IEC 14496-15 AVCDecorder配置记录?

Flash 如何检查H264/AVC ISO/IEC 14496-15 AVCDecorder配置记录?,flash,h.264,codec,wowza,Flash,H.264,Codec,Wowza,一些历史背景:我目前正在与Wowza合作,试图解码来自IMediaStream的AMFPackets。视频数据包将有一个5字节的报头,第一个数据包是编解码器配置 到目前为止,在我的检查中,编解码器配置与ISO/IEC 14496-15 AVCDecoderConfigurationRecord的布局匹配。但是,我在解码SPS和PPS单元时遇到问题 包含5字节头的编解码器配置数据包: 17 00 00 00 01 4D 00 15 03 01 00 2F 67 4D 40 15 96 52 02

一些历史背景:我目前正在与Wowza合作,试图解码来自IMediaStream的AMFPackets。视频数据包将有一个5字节的报头,第一个数据包是编解码器配置

到目前为止,在我的检查中,编解码器配置与ISO/IEC 14496-15 AVCDecoderConfigurationRecord的布局匹配。但是,我在解码SPSPPS单元时遇到问题

包含5字节头的编解码器配置数据包: 17 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 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

Flash/Wowza特定的第一个是标题: 170000

  • 17=10111=H.264 K帧
  • 00=0=编解码器配置数据包
  • 000000=0=开始时间0
接下来是AVCDecoderConfigurationRecord(十六进制=十进制):
  • 配置版本:01=1
  • AVCProfileIndication:4D=77(主)
  • 配置文件\u兼容性:00=0
  • 平均盲法:15=21(2.1)
  • 保留6位+lengthSizeMinusOne:03=00000011=3(4字节)
  • 3位保留+numOfSequenceParameterSets:01=0001=1
  • sequenceParameterSetLength:002F=(47字节)
  • (SPS记录长度为47字节)
  • numOfPictureParameterSets:01=1
  • pictureParameterSetLength:0004=(4字节)
  • (PPS记录4字节长)
  • (完)
SPS记录(47字节): 67 4D 40 15 96 52 02 83 F6 02 A1 00 03 00 01 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 九十

假设这是一个包含SPS类型的NAL单元: (使用ITU-T H.264 06/2011 7.3.1 NAL单元语法)

  • 第一个字节:67=1100111
  • 禁止0位:1(哦,禁止0位设置为1?)
  • nal_参考数据中心:2
  • nal_装置类型:0111=7(SPS)
假设SPS有效负载如下所示: (使用ITU-T H.264 06/2011 7.3.2.1.1序列参数集数据语法)

  • 配置文件_idc:4D=77(主要,匹配)
  • 约束+保留的2位(等于0):40=1000000(看起来不错)
  • 级别:15(2.1,匹配)
假设这只是一个SPS: (使用ITU-T H.264 06/2011 7.3.2.1.1序列参数集数据语法)

  • profile_idc:67=103(我认为这应该是77,就像AVCProfileIndication一样?)
  • 约束+2个保留位(等于0):4D=1001101(哦,保留位设置?)
  • 级别idc:77(这不应该是像AvClevelindination一样的21吗?)
它看起来像是以前的NAL单元头+SPS记录,我怀疑它是坏数据,因为每个捕获的配置数据包都是相同的,但让我感到困惑的是,为什么禁止的0位设置为1?


谢谢

我发现了问题。。。太多地盯着1和0,你会错过一个(双关语)

67 4D 40 15

假设这是一个包含SPS类型的NAL单元:(使用ITU-T H.264 06/2011 7.3.1 NAL单元语法)

第一个字节:67=1100111

这是错误的,因为1100111仅为7位。我使用MS Calculator进行了转换,它去掉了前导0。正确的二进制文件是01100111,并且有禁止的零位


感谢那些试图解决这个问题的人。

关于视频包格式,您有什么参考资料可以分享吗?具体来说,我可以在哪里查找“Flash/Wowza specific first is the header”下的信息?我正在尝试获取一个Flash(red5)H.264编码的视频流并对其进行解码,但显然,它在传递到编解码器之前需要进行一些按摩。