加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash – 如何检查H264 / AVC ISO / IEC 14496-15 AVCDecoderCon

发布时间:2020-12-15 07:32:33 所属栏目:百科 来源:网络整理
导读:一些历史背景:我正在与Wowza合作并尝试解码来自IMediaStream的AMFPackets.视频数据包将具有5字节标头,第一个数据包是编解码器配置. 到目前为止,在我的检查中,编解码器配置与ISO / IEC 14496-15 AVCDecoderConfigurationRecord布局相匹配.但是,我在解码SPS和
一些历史背景:我正在与Wowza合作并尝试解码来自IMediaStream的AMFPackets.视频数据包将具有5字节标头,第一个数据包是编解码器配置.

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

编解码器配置包包括5字节头:

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(十六进制=十进制):

> configurationVersion: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 bytes)
>(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,并且有禁止的零位.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读