2017-04-19 25 views
0

ラズベリーパイのカメラからH.26​​4ストリームを読み取っています。私はこれをWebページを使ってBroadwayに渡してWebページにレンダリングしようとしています。H.264デコードで異常なフレームヘッダーの解析が失敗する

ストリームにはNALユニットが含まれていますが、NALユニットを個別に送信してからデコードするには、[0,0,0,1]開始プレフィックスコードでチャンクします。私はそれがうまくいっていると思うが、Broadwayは私が結局の結果をデコードできない。 the parsing code I've based this onに掘り

は、しかし、それはどちらかであることを(ストレート開始プリフィックスコード後の)5バイト目を期待しているようだ:

  • 0x65 - Iフレーム
  • 0×41 - Pフレーム
  • 0x67 - SPSフレーム
  • 0x68 - PPSフレーム

私もこれらの他の場所での言及をたくさん見てきました。私もを通じて来ているすべてのユニットは(順番に)で開始しているように見える:

  • は0x27 0x64(第1ユニット)
  • の0x28 0xEE(第2ユニット)
  • 0x25 0x88(第三ユニット、その後、断続的に後で
  • 0x21で)に0x9A(ストリーム内のすべての単一他のユニット)

は、これらのヘッダは、H.264ストリームに何を意味するのですか?彼らはブロードウェイの期待にマッチするために私が何をすべきかについて何か提案していますか?

(完全なコードは、このことをよく理解するために有用であろう場合は、https://github.com/pimterry/pi-cam/tree/d801de9bを参照してください)

+1

NALU [ここ]の最初のバイトについて読む(http://yumichan.net/video-processing/video-compression/introduction-to-h264-nal-unit/) –

答えて

0

これは赤ニシンだった。ここで私の実際の問題は、いくつかの既存のコマ落ちロジックは、私が渡していなかったことを意味していることでしたストリームの最初の数フレームをブロードウェイし、レンダリングに失敗しました。すべての新しい接続のSPSおよびPPSフレームを再生し、決して落とされないことを確認して問題をうまく解決しました。

私はまた、これらのバイトを助けた、しかしであり、参考のために他人のために有用である可能性があるものをうまくでしたけれども

Hex Binary  NAL type Meaning 
0x65 = 11 00101 = type 5 Coded slice of an IDR picture (I-frame) 
0x41 = 10 00001 = type 1 Coded slice of a non-IDR picture (P-frame) 

0x27 = 01 00111 = type 7 Sequence parameter set (B-frame) 
0x28 = 01 01000 = type 8 Picture parameter set (B-frame) 
0x25 = 01 00101 = type 5 Coded slice of an IDR picture (B-frame) 
0x21 = 01 00001 = type 1 Coded slice of a non-IDR picture (B-frame) 

感謝Jaromanda Xへ - NALユニットの記事は[こちら]とnal_ref_idcを記事では、これをもっと簡単に行うことができました。

関連する問題