3

H264 ビデオ ストリームのフォーマットについて混乱しています。簡単に言えば、ISO仕様と他のソースから、H264 NALユニットは開始コードで区切られており、長さ情報を含まないことおよび開始コードがなく、4バイトでリードされていることの両方を読みました(これは異なる場合があることを知っています) ) NAL ユニットの長さを指定します。さらに混乱させるために、私はSpydroidのコードを見てきましたが、両方のシナリオに対処しているようです。私が混同している2つの異なるフォーマットがありますか?もしそうなら、誰かが2つを説明する情報に私を導くことができます.

バックグラウンド

Android カメラからのライブ ストリーミングに取り組んでいるのに役立つ場合に備えて、背景を説明します。ストリームは、RTP 用にデバイス上で分割されるか、生の MP4 データとして送信されてサーバー上で分割されます。どちらの方法でもストリームはライブになるため、オーディオ フレームとビデオ フレームを見つけるための MOOV 情報はありません。プロジェクトの大部分は理解できたと思いますが、H264 ストリームで何が見られるべきかについて、基本的に混乱しています。長さが実際にNALユニットに含まれていれば、間違いなく役に立ちます。

4

2 に答える 2

3

H.264 ビットストリームに関する限り。startcode プレフィックスで区切られた NAL ユニットに分割されます。すなわち

startcode_prefix  NALUnit    startcode_prefix  NALUnit .....  

これはビットストリームであるため、長さ情報はありません。次の NAL ユニットのビットストリームで startcode パターン (0x000001 または 0x00000001) を探す必要があります。

詳細はこちら: H264 解析 - スライス ヘッダー検出

于 2012-06-15T18:57:32.343 に答える
2

次のリンクによると、H.264 サブタイプがあります。ストリーム内に開始コードを持つものもあれば、1、2、または 4 バイトの長さフィールドを持つものもあります。

http://msdn.microsoft.com/en-us/library/windows/desktop/dd757808(v=vs.85).aspx

そのため、ストリームを解析する方法を決定するために、サブタイプのチェックを行う必要があるようです。

于 2012-06-16T04:24:39.867 に答える