UYOの部屋/特別企画/サウンドカード デジタル入力への道

特別企画-SPECIAL-

番外編その1・BSデジタル音声でビデオキャプチャ

番外編その2・間違いサンプリングレートの直し方
番外編その3・DATデッキに光出力
番外編その4・SC-88でデジタル出力

 部屋に置いてあるデジタル音声出力付きBSチューナーに、ようやくアンテナが繋がったので、音声デジタルでのビデオキャプチャに挑戦しました。しかし、予想以上に手間がかかったので、解決法をここに書いておこうと思います。もしも同じ理由で困っている方のお役にでも立てば幸いです。(^^;

ご注意!

 当たり前な話ですが、BS等のデジタル放送や、LD,CD,MD等から取り込んだ音楽などは、個人で楽しむなどの他は、著作者に無断で使用できません。データの取り扱いには十分に注意してください。権利の行使は義務を守ってから、です(^^)
 また、この作業はソフト的にかなり危険なデータの書き換えを伴います。少しでも間違えるとキャプチャしたデータの消失に繋がりますので、バックアップはしっかり取っておきましょう。それなりの知識も必要としますので、この内容を見てさっぱり分からないという方は、手を出さない方が無難かもしれません(^^;

#初版:1998/11/9

1.必要な設備

 私のパソコン紹介を見れば分かることですが、ビデオキャプチャカードはカノープスの Power Capture PCI を使用しています。キャプチャに使用するソフトは、キャプチャカード添付のもの(Video Commander 32)です。
 サウンドカードは、デジタル入力改造を行ったEnsoniq AudioPCI(CREATIVE)です。通常のビデオやテレビの場合は、ここにMDやDATデッキを繋いでA/Dコンバータ代わりにしますが、今回はBSチューナー(NEC NE-BST2300)の光デジタル音声出力を繋ぎます。
 とりあえずキャプチャはこれで行えますが、この後の作業でいくつかのソフトを利用します。ソフトについては後の項で説明します。

2.まずはキャプチャ

 何より最初に、映像と音声を取り込まねばなりません。通常と同じように、ビデオキャプチャソフトを起動して、キャプチャを行います。ところが、PowerCapturePCIのキャプチャドライバは、サンプリング周波数32kHzや48kHzの音声を設定することができません。仕方がないので、とりあえず22.05kHzか44.1kHzの設定にしておきます。
 すると、キャプチャ終了後に出てくるダイアログの表示がこんな感じになります。



 これは30フレーム/秒・44.1kHzの設定で、Aモード音声(32kHz)のBS放送を約15秒間取り込んだ場合の表示です。映像はドロップもなく取り込まれているのでフレーム数は正常(30*15=450、この場合452フレーム)ですが、音声は44,100SPS(Sample Per Second:サンプル/秒)でなければならないところに32,000SPS分しかデータが記録されなかったので、強引に44,100SPSで音声の長さを計算し、これをもとにAVIファイルの長さまで決めてしまっています。そのため、秒間のフレーム数も通常より大幅に大きい数になっていて、再生すると映像・音声ともに早回しになります。
 そこで、この値を強引に正常な値に書き戻すことで、正常な再生ができるデータにしてやります

3.作業用ソフトウェアの用意

 AVIファイルのデータの書き換えはバイナリエディタを用います。以前はBZ EditorとMFCutを組み合わせて利用していました(これらを利用した方法はこちら)が、現在はより効率のいいBinUtyを利用しています。
 このソフトは一般のバイナリエディタと違って、ある特定のデータの検索とパッチ当てに特化しているものなので、今回のAVIヘッダ書き換えにも適しています。ファイル全体をメモリに読み込むことがないので、ディスクアクセスも最小限で時間がかかりません。
 なお、この方法は多少の危険を伴います。間違った場所を書き換えてしまうとAVIファイルを壊しかねませんので、あらかじめバックアップを取るなどの対処をしておくことをお勧めします。
 他に、私はShowRiffというソフトで、AVIファイル内の書き換える位置を調べました。今回のような場合はファイルの構造が常に同じなので毎回使う必要はありませんが、持っていると重宝しますし、確認のためにも持っておくと良いでしょう。
 なお、いずれのソフトウェアも、Vector Software Packで入手することができます。フリーソフトなのでお金は必要ありません(^^)。作者の方々に感謝いたします。

4.データの書き換え

 さて、実践に入ります。まずはBinUtyを起動し、エクスプローラなどからAVIファイルをドラッグ&ドロップして開きます。次に「手動」ボタンをクリックして、手動編集のダイアログを開きます。

BinUty (C)yanyas
 ダイアログの設定項目は左の画像のようにして(表示方法:10進/サイズ指定:4)、以下に示すアドレスを書き換えます。
 「アドレス」を入力後、「設定値」の部分に書き換えたい値を入力し、右下の「書き換え」ボタンを押すと、「現在値」が「設定値」と同じ表示になり、書き換え完了です。
アドレス元の値書き換える値
2024211くらい(32kHz入力時)
36317くらい(48kHz入力時)
33367
 ここは映像1フレームあたりの表示時間をマイクロ秒で示しています。秒間30フレーム(30fps:Frame Per Second)の設定でキャプチャした場合は、正しい値である29.97fpsに相当する33367(マイクロ秒)に書き換えます。
8024211くらい(32kHz入力時)
36317くらい(48kHz入力時)
100
8410000002997
 ここも秒間のフレーム数に関わる値が入っています。(アドレス84の値)/(アドレス80の値)が秒間のフレーム数になりますので、29.97を表すように、2997/100に書き換えます。
124176400128000(32kHz入力時)
192000(48kHz入力時)
15C176400128000(32kHz入力時)
192000(48kHz入力時)
 この2箇所は同じ値が入っていて、音声部分の秒間のデータ量を表しています。正しい値はサンプリングレートx4(ステレオ16bitの場合)です。
1584410032000(32kHz入力時)
48000(48kHz入力時)
 ここは見ての通り、PCM音声のサンプリングレートを示します。正しいサンプリングレートに書き換えます。

 以上の作業が済んだら、ダイアログを閉じ、BinUtyを終了します(「上書き保存」は必要ありません)。

 これで作業は終了です。AVIファイルのプロパティを表示して、値が正常に書き換えられたか確認するとともに、正常に再生されるか確認しましょう。
 なお、BS放送のデジタル音声はプリエンファシスがかかっていますので、こちらのエンファシスについてのページも続けてご覧ください。


書き換え前


書き換え後

 なお、書き換える場所を確認したいときは、先程紹介したShowRiffを使用します。コマンドプロンプトを出して、

ShowRiff.exe D:\TEMP\Test.avi > D:\TEMP\TEST_AVI.TXT

のように使います。作成されるテキストファイルを見て、同じ値の場所をBinUtyの検索機能等で探せば、場所が確認できるでしょう。

 おまけとして、私が独自に解析したAVIファイルの構造をこちらに置いておきます。この内容が正しいとは限らないので、ご利用の場合はその点ご注意ください。



目次へ戻る    トップページへ