量産メモ帳

忘れっぽいのでメモを残しています。

動画ファイルを圧縮する。

スポンサーリンク

以前、約1時間半のある講演会のストリーミング映像を、後で見るために「アマレコTV」( http://www.amarectv.com/ )でキャプチャーして保存しておいたんですが、動画ファイルのサイズが 6GB 近くになってしまいました。
保存時のコーディックは可逆圧縮方式の AMV4 ですが、動画を再編集するつもりはないので、非可逆圧縮方式のコーディックを使ってファイルを再圧縮しようと思うようになった訳です。
けれどもコーディックに関しては知らないことが多くて、どのコーディックを選べば良いのか分からなかったので、色々なサイトを見て回りました。
結果、自分的には下記のサイトが一番分かり易かったです。

ビットレート当りの画質の良さ(圧縮率)まとめ
H.265/HEVC = VP9 > H.264/MPEG-4 AVC >= WMV9 > MPEG-4 > Xvid = Divx > MPEG-2 > MPEG-1 > DV >= Motion JPEG
※WMV9とMPEG-4の順番は(もしかしたら)逆かもしれない

2016年現在、非可逆圧縮方式のコーディックの中で一番良いのは、JCT-VC によって開発され2013年に登場した「H.265/HEVC」や、2011年に Google が開発を始めた「VP9」みたいです。
自分は「K-Lite Codec Pack」( http://www.codecguide.com/download_kl.htm )の Mega をインストールしましたけど、「H.265/HEVC」も「VP9」も含まれていませんでした。
「Combined Complete Codec Pack (CCCP)」( http://www.cccp-project.net/ )もインストールしてみましたが、こちらにも含まれていないようでした。


そもそも「H.265/HEVC」を使用するには特許料がかかるらしいので、選択の対象から外しました。


一方、「VP9」の方は「VP9 Converter」( http://www.techisky.com/software/vp9-converter.html )というコンバータを使えば動画ファイルのコーディックを VP9 に変換できそうだったんですが、インストールしようとしたら一時的に作成されたファイルがセキュリティソフト(Comodo)のオンアクセススキャンによりウィルス(トロイの木馬)判定されてしまったので、このコンバータのインストールは諦めました。
ならば今度は VP9 だけをインストールしようと思い、下記のサイトを頼りに Cygwin の Git を使ってインストールを試みましたが、、、

git clone https://chromium.googlesource.com/webm/libvpx
cd libvpx
git co master ## likely unnecessary
./configure
make

./configure を実行した時に"Unrecognized toolchain 'x86_64-win32-gcc'"というエラーが発生してしまい、、、

Configuring selected codecs
enabling vp8_encoder
enabling vp8_decoder
enabling vp9_encoder
enabling vp9_decoder
Unrecognized toolchain 'x86_64-win32-gcc'

Configuration failed. This could reflect a misconfiguration of your
toolchains, improper options selected, or another problem. If you
don't see any useful error messages above, the next step is to look
at the configure error log file (config.log) to determine what
configure was trying to do when it died.

Cygwin のパッケージにそんなツールチェーンは見当たらないため、VP9 のインストールも断念しました。


こういった経緯があり、結局、3番目の「H.264/MPEG-4 AVC」を使って再圧縮することにしました。
使用したコンバータは「AviUtl」( http://spring-fragrance.mints.ne.jp/aviutl/ )です。
インストーラプラグインが色々あるので、どれを選べば良いのか迷いましたが、とりあえずプラグインがセットになった aviutl_plus_20120619.zip をダウンロードさせていただきました。
AviUtl を使った動画変換の手順は下記のサイトに詳しく記されていますけど、、、

一応、自分の手順も記載しておきます。

  1. ダウンロードした aviutl_plus_20120619.zip を適当なフォルダで解凍する。
  2. 解凍されたフォルダの中にある aviutl.exe を実行する。
    ⇒【AviUtl】が起動します。
  3. 【AviUtl】「ファイル」→「開く」を選んで、変換したい動画を選択する。
  4. 【AviUtl】「ファイル」→「AVI出力」を選択する。

    ⇒【AVI出力】ダイアログが表示されます。
  5. 【AVI出力】「ビデオ圧縮」ボタンを押す。

    ⇒【ビデオの圧縮】ダイアログが表示されます。
  6. 【ビデオの圧縮】コンボボックスの中から「H.264/MPEG-4 AVC」が名前に含まれている項目を選択して「OK」ボタンを押す。

    ちなみに選択肢に表示される項目は aviutl.ini に定義されています。
  7. 【AVI出力】「ファイル名」欄に変換後のファイル名を入力して「保存」ボタンを押す。

    ⇒変換が始まります。

変換前のファイルのサイズは 6,002,376,704 バイト(5.59GB)だったのと、自分の PC が高性能ではないせいか、変換には30分近くかかりましたけど、変換後のファイルのサイズは 1,065,946,672 バイト(0.99GB)になりましたので、約6分の1に圧縮できたことになります。
但し、これはオーディオ部分のサイズも含まれていて、ビデオ部分のストリームサイズを見ると、4.46GB から 93.6MB になっており、約50分の1に圧縮できました。
このサイズ比率(4.46GB:93.6MB)は、下記のサイトに掲載された「動画コーディック比較」表にある「AMV2,3,4」と「H.264/MPEG-4 AVC」の「ファイルサイズ目安」の比率(20:0.6)に近いです。



この辺の数値は、下記のサイトで紹介されている MediaInfo.exe で確認できます。

実は、前述の「K-Lite Codec Pack Mega」をインストールすると、インストールフォルダの中に Tools というサブフォルダがあり、その中に mediainfo.exe という実行ファイルがありまして、上記の MediaInfo.exe とは別物ですが、得られる情報は一緒です。
これらのツールを使えば、変換後のファイルのビデオ部分のコーディックが「H.264」になっていることを確認できます。
また、ビデオ部分のビットレートは 7,627Kbps から 156Kbps になってしまいましたけど、見た目的には画質に大きな変化は感じませんでした。



2016/05/08 追記:
上記のやり方だと、映像と音声がズレることが分かりました。
映像が音声に比べて8秒遅れていました。
詳しくは後で書くつもりですが、以下の記事を参考にして、「x264guiEx」という出力プラグインを使ってズレをなくすことができました。



それから「VP9」を使った圧縮は諦めたと書きましたけど、「FFmpegOUT」という出力プラグインを使えば「VP9」での圧縮も可能みたいです。

こちらはいつか試してみようと思っています。


その他の参考記事: