10

いくつかの歴史的背景:私は現在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に設定されているのはなぜですか?

ありがとう

4

1 に答える 1

4

私は問題を見つけました...1と0を見つめすぎると、1つを見逃します(しゃれが意図されています)。

67 4D 40 15 .. ..

これがSPSタイプを含むNALユニットであると仮定します:(ITU-T H.264 06/2011 7.3.1 NALユニット構文を使用)

最初のバイト:67 = 1100111

1100111は7ビットしかないため、これは間違っています。MS Calculatorを使用して変換を行ったところ、先頭の0が削除されました。正しいバイナリは01100111であり、禁止されているゼロビットがあります。

この質問を解決しようとした人々に感謝します。

于 2012-06-25T08:17:58.167 に答える