|
まず、000001b3
の32ビットがシーケンスヘッダのコードです。
これに続いて、12ビットが横の解像度の下位12ビット
次の12ビットが縦の解像度の下位12ビット
次の4ビットがアスペクト比、その次の4ビットがフレームレート
この、12+12+4+4ビットの次から18ビットがビットレートの下位18ビットとなっています。
例を挙げると
720*480 29.97fps 4:3 15000000bpsのデータの場合↓のようになっているかと思います。
00 00 01 b3 2d 01 e0 24 24 9f 23
ビットレートは9バイト目(65ビット目)からですので、249f23を抜き出し、この中の、18ビットがビットレートとなります。
私たちが使っているような用途では、通常、この下位18ビットで間に合うはずですので、余り深く考えずに、この18ビットのみで計算すれば良いでしょう。
シーケンスヘッダに記述されているビットレートの計算方法は以下の通りです。
249f23
↓2進数へ
1001001001111100100011
↓÷1000000(ビットシフト)
1001001001111100
↓10進数へ
37500
↓×400
15000000
コレを、例えば、8Mbpsに書き換えるとして
8000000
↓÷400
20000
↓2進数へ
100111000100000
↓不足している6ビットを付加する
100111000100000100011
↓16進数へ
138823
249f23の部分を138823に書き換えればよろしいかと思います。
ただし、DVD-Video用のMPEG2の場合、1GOPごとにシーケンスヘッダが付加されているはずですから、全てを書き換えたいので有れば、かなりの数のヘッダを書き換えることが必要となります。
また、書き換えの際は、プログラムストリームではなく、エレメンタリストリームにしてから書き換えることをお勧めします。
今回の場合、00 00 01 baと書かれているところから、プログラムストリームを見ている物と考えられます。
もし、上記のことがよく分からないようでしたら、ヘッダの書き換えを行うことはお勧めできません。
ちなみにDVDit!の場合、ヘッダを書き換えてもVOBへMUXするときにビットレート高いとエラーが出ますよ。
SpruceUPの場合は、読み込みの時にエラーが出たような記憶があります。
多くのDVD-Videoオーサリングソフトは、シーケンスヘッダに記述されているビットレートではなく、実ビットレートを取得してチェックしていると思います。
このため、これらのオーサリングソフトでは、ビットレートを書き換えても、正常に出力が完了しないと思われます。
私的には、ペガシス社のオーサリングソフトに期待してます。
色々遊べそうですし、現在販売している安価なオーサリングソフトで、満足行く物は有りませんからね・・・
|
|
|