Mac で VHS から動画を取り込み 480i  MOV を ffmpeg で 480p H.264/mp4 にする

タイトルまんまです。いま、自宅の片付けの一環として VHS で持っている動画を電子化して物理媒体を破棄する作業中でして、ここに自分の備忘録も兼ねてその方法をメモしておきます。

# 用意するもの

- VHS ビデオデッキ
    - メルカリで探すと、条件が悪く動作確認無しのもの 2000 円程度から業者っぽい質がある程度担保されてそうなもの 5000 円程度までの価格レンジ (送料込み) で手に入ります。
    - 今回用意したのは懐かしのアイワブランド (Sony 買収後) のビデオデッキ HV-FR150 です。
- RCA コンポジットビデオキャプチャコード
    - Amazon で "VHS ビデオキャプチャ" で検索すると色々でてくるやつで、謎の輸入品 1200 円程度から、名の通ったメーカー品 4000 円程度までの価格レンジです。
    - 今回は口コミ等を参考に、macOS Catalina で動作確認が取れている "ezcap 159 USB 2.0 Video Capture" というのを選びました。

# Mac への取り込み

Windows 上でのビデオキャプチャは専用ドライバ・専用ソフトで行うのが主流なようですが、Mac ではドライバだけ入れて QuickTime で録画するのが主流のようです。

ezcap の箱を開けるとドライバの入った光学ディスクが同梱されていて、Mac 対応を謳いながらも印字されているロゴが OS9 時代のロゴで一抹の不安を覚えましたが、macOS Catalina でもすんなりとドライバがインストール出来ました。

ドライバが入ったら、MacBook Pro <-> USB Type-C / Type-A アダプタ <-> ezcap <-> RCA コンポジットケーブル <-> ビデオデッキのビデオ出力、の形に接続して QuickTime を立ち上げます。

QuickTime では、ファイル -> 新規ムービー収録、を選ぶと新しいウィンドウが立ち上がり、録画が可能になるので、動画と音声の入力に ezcap を選びます。
![new-movie.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24898/cdee2de4-4935-d1af-7bf8-08e5b6617ec4.png)
![usb-input.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24898/f168870d-f3b7-3477-ed93-19cdf3241a2c.png)

ここでビデオデッキからの映像や音声の出力が確認できれば準備は完了です。ビデオデッキ側の操作で VHS を再生し、QiuckTime 上の録画ボタン (赤い丸) をクリックすれば録画が始まります。実際の再生時間分は待たないといけないので、2 時間テープの 3 倍モードなんかを取り込みたい場合は 6 時間かかります。気長に待ちましょう。

# 動画のトリムと変換

前述の方法で録画すると動画のフォーマットは Mac 標準の MOV 形式になります。動画のエンコードを完全にリアルタイムで行う必要があるため、エンコードに時間がかかる高効率な動画形式を使えない事情は分かるのですが、MOV 形式はファイル容量がクソでかくて 720 x 480 でも 1 時間で 20GB くらいになります。

VHS から取り込む際に含まれてしまう最初と最後の要らない部分をトリムしたいところですが、録画が終わったそのままの状態でオンメモリ (実質的には SSD 上へのスワップ状態) で編集しようとすると、ふいに長時間レインボーカーソルになったりして、録画に待たされた何時間もの時間が無駄になってしまわないかと心臓に悪いです。なので、録画が終わったらまずいったんファイルに保存してしまうことをお勧めします。あとは QuickTime 上でトリムも出来るのでトリムした上で保存し直しましょう。

ストレージ容量が無限にあるならこれで終わりでも良いですが、SD 画質 1 時間に 20GB はさすがにあほらしいので H.264 に変換したいですね。また VHS はインターレース動画なので、ブラウン管で見ていた時代ならまだしも、現代のディスプレイで動きの速い場面を見ると視聴に耐えません。ですので ffmepg で動画を変換しこれらの問題を解決します。

ます Homebrew が入ってない場合は Google など参考にインストールし、次のコマンドで ffmpeg をインストールします。

```bash
$ brew install ffmpeg
```

そして次のコマンドで動画を変換します。`movie.mov` が入力ファイル、`movie.mp4` が出力ファイルです。

```bash
$ ffmpeg -i movie.mov -vf w3fdif -pix_fmt yuv420p movie.mp4
```

これは色々検索して辿り着いたオプション値で (ありがとうインターネット！)、簡単に説明すると `-vf w3fdif` がインターレースの解除、`-pix_fmt yuv420p` が Mac の QuickTime で再生可能な H.264 動画を生成するオプション、拡張子 `.mp4` で出力形式を自動判別、という感じです。それらのオプションに指定可能な追加パラメータもあるのですが、全てデフォルトで上手く動いているようなので、特に何もいじっていません。

そして変換が完了すると、ファイル容量は元のファイルの約 3 % になり、動きの速い場面でもブレが見えないプログレッシブ動画になっていました。

最後にオマケになりますが、これらのオプションを覚えられる気が全くしなかったので、`.bash_profile` に簡単な関数を追加して、コマンドラインから簡単に使えるようにしています。

```bash:.bash_profile
function conv-movie(){
    ffmpeg -i $1 -pix_fmt yuv420p $2
}
function conv-movie-deinterlace(){
    ffmpeg -i $1 -vf w3fdif -pix_fmt yuv420p $2
}
```

```bash
$ movie-conv-deinterlace movie.mov movie.mp4
```

# (追記1) 6 時間超の動画の取り込み

基本的に 120 分テープが使われていた VHS ですが、最後期には 210 分テープなども発売されており、この場合 3 倍モードでの録画時は実に 10 時間超の動画になります。手元にも約 8 時間ほど録画されたビデオテープがありそれを取り込んでいたのですが、手元の環境では 6 時間 30 分くらいのところで QuickTime が録画を停止してしまうという事が起きました。ストレージの空き容量には十分な余裕があったにも関わらずです。幸いにして取り込み済みのデータは失われずそのまま保存できたので 6 時間が丸々無駄になることはなかったのですが、ずっと放置して様子を見ていなかったので、QuickTime が録画を停止した後もビデオデッキ側はテープの最後まで延々と再生を続けていました。

じゃあまあ録画できなかったところまで戻してそこから録画の続きをすればいいや、と思ったし、実際にそうしたのですが、テープデバイスの使い勝手などとうの昔に忘れてしまった一般的な現代人にこの操作はつらすぎました。また、全ての録画が終わった後に分かれてしまった動画を再び連結する際も、どのフレームで連結するかを探すのがまた一手間でした。全ての人の環境で同様の問題が起きるとは限りませんが、6 時間超の連続録画は QuickTime の想定外であるとしてもおかしくはありません。ですので、6 時間超の動画を取り込む場合は、いったん 6 時間のあたりでビデオの再生を止め、そこまでの録画をいったん保存することをお勧めします。その上で録画を再開してから再びビデオを再生すれば、後ほどトリムして動画を連結するのも簡単で、煩わしさがありません。

# (追記2) 20 年前、 30 年前の VHS テープの取り込み

3 回分の週末を費やして古い VHS テープの取り込みを試行した結果、VHS テープの状態によっては民生用機器での再生に限度があり、どう頑張っても無理という結論に達したのでここに追記しておきます。

まず、古いビデオテープの取り込みが上手くいかないケースが散発したため、下記の検証を行いました。

- コンポジットケーブルの交換
    - 購入した VHS デッキに付いてきたものではなく、手持ちの古い DVD プレーヤーで使用中で実績のあったケーブル
- ビデオキャプチャケーブルの交換
    - 前述の「謎の輸入品 1200 円」を購入
- ビデオキャプチャケーブルを使用せず直接 TV モニタへの出力

このいずれにおいても再生に失敗するテープが存在し、もはやテープ自体に問題があると結論づける他ない状態になりました。富士フイルムの VHS 取り込みサービスの謳い文句そのままで癪ではあるのですが「約5割のテープにカビや劣化のトラブル！」は体感として事実でした。保存状態によって劣化具合が違うであろう事は明白ですが、我が家における保存環境がテープごとに大きく異なるとは考えずづらく、シンプルに古さと録画の品質で劣化具合に差が出るという傾向がありました。

例えば、テストで取り込んでみた一番新しいテープで 15 年くらい前に買ったミシンに付いてきた説明ビデオがあったのですが、これは VHS としては十分綺麗な画質で何の問題もなく取り込めました。比較的新しい事は元より、工場生産された — ダビングではない — ビデオである事が大きかったのだと思います。一方ほぼ同時期、16 年前の結婚式のビデオに関しては取り込み自体は可能だったのものの一部で画質の乱れがありました。ミシンのテープと古さは同等程度でも、やはり一点物でダビングに相当する操作で作成されたビデオは品質の点で問題があり劣化が早かったのでしょう。

一番ひどかったのは、約 25 年前にマスターである 8mm ビデオから VHS にダビングし、そこからさらに 3 倍録画モードでダビングされたビデオです。運が良ければ数秒間は映像が再生される事がありつつも、ほぼ全編にわたって音声のみしか再生できない状態でした。経年劣化と録画品質がテープの劣化具合の主因になっているとすれば、推して知るべしといった状態ですね…。一方で、これと同時期ではあるのですが、高校の卒業記念に映画研究部が作成したビデオを購入したものはちゃんと再生ができて、アナログ特有のノイズが乗ったりする事はあるものの視聴には全く問題無い状態でした。さすが映研。恐らくはマスターから直接、質の高いテープに質の高い機材でダビングしていたであろう事が想像され、25 年後の今、きちんと結果を出している感じです。

以上を踏まえて、今から取り込もうとしている VHS テープが 20 年前、ともすれば 30 年前のテープで、保存状態が悪かったり低品質での録画やダビングを行った物である場合は、この記事で紹介している方法はお勧めできません。大切な思い出をいつまでも視聴可能にしておきたいのであれば、素直にプロにお金を払うことをお勧めします。動画の価値と払う金額を天秤にかけて判断することになると思いますが、年月が経てば経つほど再生は難しくなり、いつかプロでも再生できなくなったり特別料金が必要になったりすることは想像に難くありませんので判断はお早めに。