RAW MPEG4ストリームからフレームディメンションを取得しますか?
-
15-09-2020 - |
質問
Raw Video BitstreamからMPEG4ビデオ(非H264、すなわちMPEG4パート2)のフレーム寸法をどのように検索できるかを知っていますか? 現在、Windows Media Foundation用のカスタムメディアソースを書いています。フレームサイズが必要なメディアタイプを提供する必要があります。それなしではうまくいきません。 何か案は? ありがとう
解決
私はあなたを連れて行かないで。あなたはストリーミングされているビデオの幅と高さを知ろうとしていますか?もしそうなら(そして私はそれがあなたが探している「寸法」であると思います)彼女はどうやって:
- この整数
000001B0
(Hex)のストリームを解析します(Hex)、常にあなたがストリーミングされた最初のものです。そうでない場合は、ストリームのSDP(任意の場合、およびconfig=
フィールドを検索しています。これは今だけです。今すぐBase16文字列です。 - 整数
000001B6
(Hex) になるまで、すべてのバイトを読みます。
- あなたはこのようなものを得るべきです(16進数):
000001B0F5000001B5891300000100000001200086C40FA28 A021E0A2
- これは "Stream Configuration Header"またはフレーム、または何でも、正確な名前はビデオオブジェクトシーケンスです。それはすべての情報を保持しており、デコーダはビデオストリームを復号する必要があるでしょう。
- 最後の4バイトを読み取る(マイ例では、1スペースで区切られています -
A021E0A2
) - これらのバイトを1つの32ビット符号なし整数として監視します...
- width を最初の8ビットを読み、次に を掛けます。
- 次の7ビットをスキップする height を読む9ビット
-
疑似コード:
WIDTH = readBitsUnsigned(array, 8) * 4; readBitsUnsigned(array, 7); HEIGHT = readBitsUnsigned(array, 9);
あなたは...幅と高さに行きます。 (:
所属していません StackOverflow