VHSをパソコンで見られる形式にしてほしい
という感じで簡単に頼まれたものの、いろいろと試行錯誤が必要だった。
もう西暦2015年なのに。
次回以降自分が同じことをする際に一発でうまくいくよう、難しいところを書いておく。
ちなみに私はドがつくシロートなので、もし参考にする無謀な方がいたら十分注意してください。
実はあまりビデオに詳しくない自分、とりあえず繋がれば良いのでは?ということで、手元にあって一番SD品質のビデオを扱うのに信頼性高そうなワークステーション、SGI O2にビデオデッキを直結する作戦を試した。
そのままビデオデッキをSGI O2に直結。 頼まれたのは普通のVHSなので、75Ωの同軸で繋ぐより画質が良いということは無いが、Sビデオケーブルで繋いだ。
O2のmediarecorder
で640x480, JPEG-A, 48 kHzに設定して録画ボタンをクリック!
キャプチャ中の映像がたまに固まるような?ということで調べると、videopanel
でVTRモード
を切ると固まらなくはなった。
が、今度は画面が乱れ放題。
推測だが、同期信号が乱れすぎていて良く分からないことになっている模様。
仕方ないのでSビデオケーブルの代わりに75Ωのコンポジットビデオケーブル(黄色いやつ)にしたり、videopanel
の設定を弄くったり、mediarecorder
の代わりにコマンドラインのdmrecord
を使ったりしたものの、状況は改善せず。
この方法ではダメだ。
ちなみに右のスクリーンショットではFilter Bytass
にチェックが入っているが、実際にはFilter Bypass
は画面がざらつく感じになるだけなので切っておく方が良かった。
まさかSGI O2でうまくいかないとは…と狼狽えてしまったが、とにかく変換しないといけないので、別の方法を考えた。 アナログ信号をIEEE1394に変換してくれるDV変換箱をもっているので、これをIEEE1394でパソコンに繋げてDVテープの要領でキャプチャすればうまくいくに違いない!と思ったのであった。
iMovieの取り込みボタンとデッキの再生ボタンを同時に押す。 確かに取り込みはされている、が、なぜかファイルが細切れになっている… どうやら、同期信号のロックが外れる度に別ファイルにしているようですな。クソが。
でもいいや、iMovieで全部並べて書き出しちゃえば仕事終わりだもん、と思ったのだが、最終的にできたムービーファイルの数は1000超。 全部選んでタイムラインに並べたらiMovieが固まった。
ffmpeg
で結合するから気にしないもん、ということで、iMovieのライブラリから*.mov
を取り出して、連番に改名し、index.txt
に
file 0.mov file 1.mov file 2.mov ...
と順番を書き下し、ffmpeg
で
ffmpeg -f concat -i index.txt -vf 'yadif=0:0:0' -c:v libx264 -preset slower -crf 22 -pix_fmt yuv420p -c:a libfaac -b:a 96k -f mp4 output.mp4
とやって無事ムービーは繋がった、ように見えた。 でもなんだかffmpegから恐ろしい数の警告が出ているような…と気にしつつ、QuickTime Playerでmp4ファイルを再生!
映像はまあ仕方ないかな、稀にフレームが10秒近く重複されてるけど…という感じだが、音が完全な雑音になっている所がある。 細切れのムービーを繋いでいるのでどうもうまくいっていないみたい。 私としてはこの品質で仕事終わりという気分にはなれない代物だった。
そういえばこのVHSデッキ、DVテープにダビングする便利機能が付いているな、ということで、もしかしたらDVテープに一度ダビングすれば、そのテープを取り込むことで、それなりに見られる映像にデジタイズできるかも、という作戦。
ビデオデッキWV-DR9でのダビングはボタンをいくつか押すだけで簡単にでき…ない。 書込禁止の爪が折られているVHSからはDVテープにダビングしてくれないらしい。 ありがとう著作権保護…ということで、ビニールテープで爪を復元すれば簡単にコピーできた (今回依頼を受けたテープは自作ビデオに字幕機でキャプションを入れる等したものなので、著作権的にはクリア。 もしかして字幕機のせいで同期信号がおかしかったのかな…)。 依頼を受けたテープは90分なのに対し、miniDVテープは60分のものしか手持ちが無いため、LPモードにてダビングした。
ビデオデッキのIEEE1394端子とパソコンを繋いで、iMovieで取り込みボタンをクリック! 今回はDVデッキなので勝手にモーターがまわり始める。 ボタンを同時に押す苦労は無い。
あれ、なぜかしょっちゅうフレームが落ちて、取り込み画面が黒くなる… VHSテープの状態が悪かったからなのか、DVテープの段階でいくつかのフレームが抜けているような感じを受けた。 ビデオデッキに直結したビデオモニタの映像はそんな風には見えないので、どうやら、本来やるべきフレーム落ちの際の補間 (というか直前フレームの繰り返し)をiMovieはやってくれていないみたいだ。 iMovieの取り込み画面がチラチラして体に悪そうな感じだ。 これじゃあダメだ。
まあ液晶ビデオモニタではそれなりに見られる絵が出てきてるので、このアナログ出力を拾ってやればいいでしょ、ということで、最終作戦だ。
挑戦3でminiDVテープにダビングする所まではやっているので、あとはアナログ出力(Sビデオ)をO2のビデオ入力に繋いで、コマンドラインでdmrecord
を叩くだけだ!
事前にvideopanel
でVTR mode
は切っておいた。
videoin
で確認したところその方がスムーズに映っているように見えたので。
dmrecord
は、
dmrecord -p video,device=mvp,comp=jpeg,engine=ice,quality=90 -p audio,channels=1 output.mov
として起動したが、1時間ちょっと記録した所で様子を見たら
Hit the Enter key to begin recording... Hit <ctrl>-c to stop recording... VL: Resource temporarily unavailable. vlDMBufferGetValid(video.server, video.path, video.drain, &buf) failed in file capture.c, line 754 audio queue = 83774 samples 83.8% full Audio buffer overflow (can't write movie file fast enough). Error capturing audio for frame 85275 Post-processing output file 'output.mov' ... Timing information: Recording could not be done in real time. 85258 image frames were captured. 17 image frames replicated. Warning: failed to capture 17 of 85275 image frames. Compression information: Average compressed frame size: 86699.6 bytes Average compression ratio: 7.1 : 1 Bit rate achieved: 20787098.9 bits/sec
などと言って死んでいた。
それでも、元テープの品質を考えると、フレームのドロップ率はかなり低い。
ちなみに、理由は調べてないが、dmrecord
でキャプチャしたファイルはQuickTimeでは開けなくて、ffmpegでは読める。
エラーメッセージのcan't write movie file fast enough
は嘘っぽい気がする。
エラーメッセージで検索するとO2はCBRの方がうまくいく [nekochan.net]という情報があったのでこちらを試す:
# dmrecord -p video,device=mvp,comp=jpeg,engine=ice,brate=30000000 -p audio,channels=1 output.mov Hit the Enter key to begin recording... Hit <ctrl>-c to stop recording... Recording was done in real time successfully. Post-processing output file 'output.mov' ... Timing information: 164303 image frames = 5482.25 seconds of video captured. Compression information: Average compressed frame size: 125998.1 bytes Average compression ratio: 5.7 : 1 Bit rate achieved: 30209299.6 bits/sec
というわけで、CBRで30 Mbpsに設定したところ、90分のビデオを1フレームも落とさずにキャプチャできた。 大成功だ。 キャプチャしたファイルは90分で20 GBytesで、DVと概ね同じサイズになった。
このファイルをO2からエンコードサーバーに移し、ffmpeg
でエンコードする。
なお、scp
でコピーすると20 GBytesに7 時間という恐ろしい予想時間が表示されたため、ftp
で送ることにした。
ftpなら大体1 時間で20 GBytesの転送ができた (O2は100 Mbps Fast Ethernetで、サーバー側は10 Gb Ethernet)。
ffmpeg -i output.mov -vf 'yadif=0:0:0' -c:v libx264 -preset slower -crf 22 -pix_fmt yuv420p -c:a libfaac -b:a 48k -f mp4 output.mp4
オーディオのビットレートが変に低く見えるのは、キャプチャの段階で32 kHzモノラルにしたのでそれに合わせている。 VHSだしこんなものだろう。
無事mp4ファイルが完成。 MacPro4,1のQuickTimeで再生を確認したところ、フレーム落ちで画面が黒くなったり固まったりは起きておらず、音も安定して再生されていることを確認できた。 mp4ファイルのサイズは1.1 GBytesだった。 成功!!
brate
)を指定で使うべき