いくつかの歴史的背景:私は現在Wowzaで作業しており、IMediaStreamからのAMFPacketsをデコードしようとしています。ビデオパケットには5バイトのヘッダーがあり、最初のパケットはコーデック構成です。
これまでのところ、コーデック構成はISO / IEC14496-15AVCDecoderConfigurationRecordレイアウトと一致しています。ただし、 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.264Kフレーム
- 00 =0=コーデック構成パケット
- 000000 =0=開始時刻0
次はAVCDecoderConfigurationRecord(16進数= 10進数)です。
- 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バイト)
- (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に設定されているのはなぜですか?
ありがとう