生のビデオビットストリームからmpeg4ビデオ(非h264、つまりMpeg4 Part 2)のフレームサイズを取得する方法を知っている人はいますか? 私は現在、Windows Media Foundation 用のカスタム メディア ソースを作成しています。フレーム サイズを必要とするメディアタイプを提供する必要があります。それなしでは機能しません。何か案は?ありがとう
1783 次
1 に答える
3
私はあなたを取得していません。ストリーミングされているビデオの幅と高さを知りたいですか?もしそうなら(そして私はそれがあなたが探している「次元」であると思います)ここにどのように:
- この整数
000001B0
(16進数)のストリームを解析します。常に最初にストリーミングされます。そうでない場合は、ストリームのSDPを確認します(存在する場合は、フィールドを検索しconfig=
ます。そこにあります...今だけBase16文字列です! 000001B6
整数(16進数)に到達するまですべてのバイトを読み取ります- 次のようなものを取得する必要があります(16進数):
000001B0F5000001B5891300000100000001200086C40FA28 A021E0A2
- これは「ストリーム構成ヘッダー」またはフレームなど、正確な名前はビデオオブジェクトシーケンスです。デコーダーがビデオストリームをデコードするために必要なすべての情報を保持します。
- 最後の4バイトを読み取ります(私の例では、1つのスペースで区切られています-
A021E0A2
) - ここで、これらのバイトを1つの32ビット符号なし整数として観察します。
- 幅を取得するには、最初の8ビットを読み取り、取得した値に4を掛けます。
- 次の7ビットをスキップ
- 高さを取得するには、次の9ビットを読み取ります
擬似コードの場合:
WIDTH = readBitsUnsigned(array, 8) * 4; readBitsUnsigned(array, 7); HEIGHT = readBitsUnsigned(array, 9);
そこに行きます...幅と高さ。(:
于 2011-01-26T12:57:20.080 に答える