gpt4 book ai didi

flash - 如何检查H264/AVC ISO/IEC 14496-15 AVCDecoderConfigurationRecord?

转载 作者:行者123 更新时间:2023-12-04 08:36:47 26 4
gpt4 key购买 nike

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

到目前为止,我在检查编解码器配置时是否匹配 ISO/IEC 14496-15 AVCDecoderConfigurationRecord 布局。但是,我在解码 SPS PPS 单元时遇到麻烦。

编解码器配置数据包,包括5个字节的 header :

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



特定于Flash/Wowza的是头文件:

17 00 00 00 00


  • 17 = 10111 = H.264 K帧
  • 00 = 0 =编解码器配置数据包
  • 000000 = 0 =开始时间0

  • 接下来是AVCDecoderConfigurationRecord(十六进制=十进制):
  • 配置版本:01 = 1
  • AVCProfileIndication:4D = 77(主要)
  • profile_compatibility:00 = 0
  • AVCLevelIndication: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 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单元语法)
  • 第一个字节:67 = 1100111
  • forbidden_​​zero_bit:1(糟糕,禁止将0位设置为1?)
  • nal_ref_idc:2
  • nal_unit_type:0111 = 7(SPS)

  • 假设SPS有效负载如下:
    (使用 ITU-T H.264 06/2011 7.3.2.1.1序列参数集数据语法)
  • profile_idc:4D = 77(主匹配)
  • 约束+保留2位(等于0):40 = 1000000(看起来不错)
  • level_idc:15(2.1个匹配项)

  • 假设这只是一个SPS:
    (使用 ITU-T H.264 06/2011 7.3.2.1.1序列参数集数据语法)
  • profile_idc:67 = 103(我认为应该像AVCProfileIndication这样是77)?
  • 约束+ 2个保留位(等于0):4D = 1001101(嗯,保留位设置了吗?)
  • level_idc:77(这不是像AVCLevelIndication这样的21吗?)

  • 看起来像是以前的NAL单元头+ SPS记录,我怀疑它是不好的数据,因为每个捕获的配置数据包都是相同的,但令我失望的是为什么禁止0位设置为1?

    谢谢

    最佳答案

    我发现了问题...太多盯着1和0,您会想念一个(双关语)。

    67 4D 40 15...

    Assuming this is a NAL unit containing SPS type: (Using ITU-T H.264 06/2011 7.3.1 NAL unit syntax)

    First byte: 67 = 1100111



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

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

    关于flash - 如何检查H264/AVC ISO/IEC 14496-15 AVCDecoderConfigurationRecord?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11172534/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com