twitter ■お問い合わせ当サイトへのリンクサイト仕様

現在位置 > LostTechnology > Movie > MP4でビデオ保存

MP4でビデオ保存

2007年末から一部の番組で実験的にMP4ファイルでの保存を行ない、安定した画質で保存できる目処が立ったのでAVIUTLを利用してMP4ファイルを作成する方法を紹介します。MicrosoftのXbox360やSONYのPS3でMP4ファイルの再生がサポートされるなど、MP4ファイルを再生できる機器が増えてきたため、MP4ファイルでビデオを保存しておくのは悪い選択肢ではありません。解像度とビットレートを抑えればPSPで再生できるデータの作成もできます。

映像部に圧縮率の高いH.264(MPEG-4/AVC)を用いて音声には高音質のAACを組み合わせたMP4ファイルは汎用性が高く圧縮効率も良好なので、自分は2008年からは新規にキャプチャーして保存する番組はすべてMP4ファイルにするつもり。ただし、圧縮・再生ともにCPU負荷は高くなるので、使っているPCのCPUによっては少々つらい可能性があるかもしれません。なお、自分は実写番組はMPEG-2のままDVD-Rに書き出しているのでアニメ番組を前提とした紹介となることをあらかじめご了承ください。

用意するもの

手順はこれまでとあまり変わらないものの、必要となるツール・プラグイン類は結構変わっているので注意が必要です。一応、記事作成時に使用していたバージョンをカッコ書きしておきます。「x264 詰め合わせ」は「.Net Framework」などインストールしなければならないものがいくつかあるため、付属するreadme.txtをよく読んで必要なものを用意しておきましょう。RAR書庫ファイルなので、WinRARなどで解凍する必要があります。出力プラグインは解凍したauoフォルダにあるので、VCフォルダのほうをAVIUTLのプラグインを入れているフォルダにコピーしましょう。IntelのCPUならばICCのほうが最適化が期待できてよいかもしれませんが、うちのPentiumD環境ではx264のCRFを使うとAVIUTLが落ちてしまうので……。ここでは安定性を考慮してVCのほうのファイルをお薦めしておきます。

x264の設定によってはQuickTimeでも再生可能ですので、普段からQuickTimeを使っている人はそのまま再生ができるかもしれません。しかし、基本的にMP4ファイルはそのままでは再生ができないので、MP4 SplitterHaali Media Splitterのどちらか片方をインストールしてMP4コンテナをPCで利用可能にしておきましょう。両方インストールするのは問題が発生する可能性があるので避けてください。ただし、Media Player Classicで再生する場合はどちらもインストールする必要はありません。コンテナの問題はそれで解決ですが、再生にはデコーダーが必要です。またそれかと思われそうですが、再生時に使う映像部分のデコードはffdshowを利用するのが楽。「H.264/AVC」と「AAC」にチェックをつけてインストールしておきましょう。

※何も入れなくてもWindows7では標準でMP4が再生可能です。

  1. AVIUTL (0.99a3⇒0.99h)
  2. MPEG-2 VIDEO VFAPI Plug-In (0.6.54)
  3. ジャンプウィンドウ (2.07)
  4. 自動フィールドシフト インタレース解除プラグイン (7.5a)
  5. x264 詰め合わせ (714.release3⇒x264patch.859.release04) ※閉鎖してしまったようなのでx264guiEXで代用してください。
  6. ffdshow(セットアップ) 《再生用》 ※H.264/AVCとAACにチェックをお忘れなく
  7. MP4 Splitter 《再生用》(※Windows7では不要)
  8. Haali Media Splitter 《再生用》(※Windows7では不要)

AVIUTLでビデオデータを編集する方法はこれまでと基本的に同じです。2~5の各プラグインはAVIUTLと同じフォルダに入れるか、AVIUTLのフォルダ内にPluginsフォルダを作成してそこに入れてください。ただし、出力にはプラグイン出力から選べる拡張x264出力(GUI)を使います。

紹介している手順ではキャプチャーカードが音声部を"MPEG-1 Audio Layer2"で記録しているか、AVIファイルで素材が用意されていることを前提にしています。それ以外の場合は、あらかじめDVD2AVIやDGIndexやVirtualDubModなどで音声部をWAVファイルに切り出しておきましょう(「SUPER」を利用して用意しても可)。また、必要に応じて以下のプラグインを使ってみてください。

事前設定

「MPEG-2 VIDEO VFAPI Plug-In」はm2v.vfpm2v.auiに拡張子を変更してAVIUTLの入力プラグインにしましょう。AVIUTLのファイルから環境設定を選び、入力プラグイン優先度の設定MPEG-2 VIDEO File Readerを一番上にしておきます。これを行なわないとAVIUTLの0.99a3では優先度をもっと低くしているDirectShow File Readerがなぜか優先される現象が発生することがありましたので(0.99a1までは大丈夫だった)。その後、m2vconf.exeを実行して設定を済ませておきます。

  1. アスペクト比:無視
  2. フィールド順:トップ→ボトム純で出力
  3. IDCT関数:整数(32bit AP-922)
  4. CPU拡張:環境による(付けられるだけチェック)
  5. GOPリスト:チェックなし
  6. 連番ファイル:結合して開く
  7. YUV→RGB変換:ITU-R BT.601から伸張
  8. 色空間行列:自動認識(解像度から)
  9. YUY2色空間行列:元のYUVデータを維持

「ジャンプウィンドウ」は、新規にフォルダを作ってAVIUTLの0.99a3環境を作った際に、なぜか表示させようとするとAVIUTLが落ちてしまうことがありました。その場合は、AVIUTLのフォルダにあるaviutl.iniをメモ帳などのテキストエディタで開いて[ジャンプウィンドウ]という部分を探し、disp=0となっている部分をdisp=1と変更して保存することで問題が解消したのでご参考までに。

「自動フィールドシフト」の設定と使用はお好みで。MP4は可変フレームレート(VFR)をサポートしているため、24fpsと30fpsの混在でも問題がありません。異なるフレームレートが混在している場合、拡張x264出力(GUI)は自動フィールドシフトの情報を元にして、24fps部分は24fps、30fps部分は30fpsで出力してVFRなMP4ファイルを出力することができます。AVIファイルで作成するときのように120fpsにする必要はありません。

※可変フレーム出力したMP4はAVIに戻すことはできません。AVIはフレームレートが固定なので正しく変換できずに音ズレが発生します。

AVIUTLの基本設定

最も基本的な部分だけ設定に触れておきます。テレビ放送の受信状態は人によって異なるので、万能な設定というのは残念ながらありませんし。デジタル放送のみになればキャプチャーカード別とかでそのカードのクセに対応できる可能性はありますけれど。

まずは編集したいビデオファイルをAVIUTLで開きます。今どきのキャプチャーカードの書き出すファイルはたいていの場合MPEG-2ファイルなので、起動しておいたAVIUTLに録画したMPEG-2のファイルをドロップすればOKです。

え? ソースはDVD? dvd2aviのd2vファイルをAVIUTLで開いてファイルから音声読み込みでWaveファイルを読み込めばいいんじゃないかなぁ~、たぶん。自分としてはDVDならそのまま再生すればいいと思うわけで、DVDソースでの圧縮は違法な用途しか思い浮かばないので検証する予定はありません。合法的な用途を示して連絡していただければ時間のあるときに調べてみますけれど。

AVIUTL上部のメニューバーにある設定から各種基本設定を行なっていきます。以下のような感じにすればまずまず問題なしではないかと。仕上がりイメージは各自の好みがあるでしょうから、明確な理由が説明されていない部分はあくまでも参考程度と思ってください。

クリッピングで左右を8ドットずつ削るのは、本来テレビでは映らない部分だからです。これを残して圧縮してもよいと思います。ただし、その場合に注意しなければならないのは、本来は画面に見えない部分を圧縮するデータに含めるからといってアスペクト比(Aspect Ratio)が変わるわけではないということ。基本的にPCは縦横比1:1の正方形ピクセル(ディスプレイと解像度により一部例外があるけどそれが特殊な環境というだけ)で、テレビ(NTSC)は縦横比10:11で縦長の非正方形ピクセルです。このため4:3放送はPCとTVのアスペクト比として10:11を使い、16:9放送は40:33を使います。クリッピングの有無に関係なくアスペクト比が特定の値となるわけです。MP4に埋め込むアスペクト比の情報はPC(やDVDなど)のピクセルとTVのピクセルの違いについての比率ですから、クリッピングするか否かに関係なくアスペクト比は決まっているわけですね。したがって、放送されている番組の映像の縦横比は必ず覚えておきましょう。あとで指定に必要な情報となります。

この記事ではテレビ番組のキャプチャーを前提としているため、4:3と16:9の情報だけを記しています。映画だと別の比率のものがあるので異なる比率を指定しないといけないケースもあるかもしれません(DVDのデータを編集していないので実際の状態を知らない)。でもテレビ放送ではその2つだけなので。テレビ放送だと映像が別の比率でも黒帯つきの放送になるから、個別に比率を調整しないといけなくなるような問題は起こらないですからね。DVDソースの映画を圧縮するなら--sarに別の値を指定する必要があるかもしれませんということで……。

フレームレートが固定であることが分かっていたり、手動でフレームレートごとに切り分けて編集する場合は自動フィールドシフトは使わずほかのインターレース解除を使ってかまいません。

表示オーディオ波形の表示には必ずチェックを付けておくべきです。番組によっては、オープニングやアイキャッチなどの音声が続いているのにコマーシャルに移ってしまうものがありますので。そのようなケースでのCMカット編集時に音声波形を見て、番組の最終フレームを編集現在のフレームをクリップボードにコピーでクリップボードに映像データを入れておき、音声の終了部まで編集現在のフレームにクリップボードから貼り付けを実行して映像を修正していくことが可能となるからです。そんな細かい部分まで編集しないよとかいわれそうだけど……。

編集作業

圧縮時の設定が済んだらCMなどの不要な部分を取り除きます。AVIUTLの右下にある4つのボタンは、左から1つ前のフレームへ移動、1つ右のフレームへ移動、範囲選択の先頭に指定、範囲選択の末尾を指定なので、不要な部分を範囲選択しましょう。カーソルキーやPageUp,PageDownキーも前後のフレームを参照できるので、それらを使って選択してください。範囲選択した不要部分を除去するには、編集から選択範囲のフレーム削除を実行します。

すべて必要な部分だけとなったら、圧縮を開始しましょう。ただしその前に、AVIUTLが落ちてしまうとかの不測の事態を想定して、ファイルから編集プロジェクトの保存を実行して編集内容をファイルに保存しておくことをお薦めします。

MP4ファイルの出力は、ファイルプラグイン出力にある拡張x264出力(GUI)から行なってください。ビデオ圧縮を押して出力設定を変更することができます。このあたりは画質とファイルサイズのトレードオフとなるので、好みのバランスは皆さん異なると思いますが、自分の現時点における設定を以下に公開しておきます。あくまでも自分はそういう設定で出力しているというだけなので、プリセットとして用意されている「低画質:高速」「中画質:中速」「高画質:低速」「PSP向け:高速」「PSP向け:高画質」「NicoNico SP1」から選んでも問題ありません。さすがにPSP向けやニコニコ動画用設定でのデータ作成は保存用には向かないと思いますが……。

--crf 20 --qpmin 16 --qpmax 36 --qpstep 8 --level 4.1 --scenecut 65 --min-keyint 1 --bframes 3 --ipratio 1.2 --pbratio 1.7 --analyse p8x8,b8x8,i4x4 --b-pyramid --weightb --trellis 2 --no-b-adapt --direct auto --ref 3 --mixed-refs --subme 7 --b-rdo --no-fast-pskip --no-dct-decimate --no-chroma-me --deblock 3:3 --8x8dct --me umh --merange 32 --no-psnr --no-ssim --bime --threads auto --sar 40:33

※最近のx264では--b-rdoと--bimeが無効なようです。利用できないオプションがあるとボタンが押せないので、オプションを削っていって無効になったオプションを探すことになります。

自分の使っている設定は、拡張x264出力(GUI)の右上にあるCLI MODEをクリックしてダイレクトにx264のオプションを指定しているものです。x264が改良された場合にGUIよりも早く対応できそうだからね。まあ、CLIでたまに実験していた頃の名残としてダイレクト指定しているともいえますけれど。このオプションで気をつけなければならない部分があるとしたらアスペクト比を指定する--sarオプションかな。--sar 40:33は16:9放送の数値で4:3放送は--sar 10:11となりますので気をつけてください。アニメならばこの設定でアスペクト比を番組にあわせるぐらいで結構きれいに圧縮がいけるはずです。4:3放送でも扱うデータが左右黒帯状態になっているならばクロップして16:9のアスペクト比でよいと思います(そのような番組を録画していないので未確認)。地デジのTSファイルを開くと1440x1080のデータになるので、そのままの解像度で行くのであれば--sar 4:3にしないと16:9のデータにならないと思われます。

neroAacEnc.exeの指定は「x264 詰め合わせ」の付属説明書に従い用意しておいた該当ファイルを指定してください。音質の設定は好みによりますが、自分はCDに近いレベルのAAC 128kbps近辺でいいやと思っているので、「Q-Based AAC 125~kbps」にしています。水冷PCでも結局PCは騒音を出しているのでこれでいいかなと。Xbox360にしろPS3にしろまだ完全ファンレスというわけでもないようだし。将来的にそのあたりが改善されたらもうちょっとAACのビットレートを上げるかもしれませんけどね。

拡張設定タブでは、自動フィールドシフトを使ってデータを作成する場合は自動フィールドシフト v7対応にチェックをつけておきましょう。音ズレを防ぐために初期Delayカットにもチェックをつけておきます。ビデオ先読みスレッドはPentium4環境でエラーが出ていたので、現状ではチェックをつけないほうがよさそうですね。

補足説明となりますが、--crfはベースとなる品質を決めるものなので、数値を小さくすれば画質が向上します。--crfオプションは指定した範囲の品質で動きの遅いところを静止画優先で高品質にし、動きの速いところは静止画で見ることはあまりないから品質を落としてデータ量を節約するという意図で用意されているものなので、最高品質--qpminと最低元必要な品質--qpmaxの範囲内で自動的に調整してくれます。映像の破綻を防ぎたい場合は最低品質を高画質になるように設定すればOKです。ただし、品質を高めることはファイルサイズの増大になることはお忘れなく。

なお、ファイルサイズは気にしないから動きの速いシーンの画質も高いほうがいいという人は、これらのオプションを使わずにXvidなどのように品質一定でデータを作成できる--qpオプションを使うとよいでしょう。例えば品質20でいくならば先ほどのオプションは以下のように記述できます。

--qp 20 --level 4.1 --scenecut 65 --min-keyint 1 --bframes 3 --ipratio 1.2 --pbratio 1.7 --analyse p8x8,b8x8,i4x4 --b-pyramid --weightb --trellis 2 --no-b-adapt --direct auto --ref 3 --mixed-refs --subme 7 --b-rdo --no-fast-pskip --no-dct-decimate --no-chroma-me --deblock 3:3 --8x8dct --me umh --merange 32 --no-psnr --no-ssim --bime --threads auto --sar 40:33

--deblockは-6~6の範囲でデブロックフィルタの強さを指定します。指定した値だけ基準品質が変化するため、マイナス方向なほどシャープな映像となりファイルサイズが増大することになるでしょう。映像ソースが良好ならば0:0で大丈夫です。デジタル放送のブロックノイズを消すには3:3ぐらいが良さそうな感じだったので、今のところ自分はその値を使っています。映像ソースの種類や好みに合わせて変更してみてください。

なお、x264 詰め合わせのおまけディレクトリにあるx264patchに含まれるx264gui.auoを使う場合は、追加でadaptive quantizationを利用できます。オプションに以下の2つを追加するとファイルサイズが縮むはずです。画質は素材やシーンによるので一概にどうとは言えません。実際に試して好みに合うか比較してみてくださいとしかいえないかな。

--aq-strength 0.3 --aq-sensitivity 0

こんな感じですね。品質に大きく影響する部分はそのあたりなので、各自の好みに合わせて圧縮してみてください。Xvid+MP3やDivX+MP3のAVIファイルよりも画質がよくてファイルサイズも小さいMP4ファイルができることが多いと思います。2007年末の時点ではまだ夢の話という段階ではありますが、携帯電話で使われている動画はMP4から派生したモバイル用のコンテナなので、2~3年もすれば性能の向上に伴ってMP4ファイルをフルにサポートする携帯電話が出てきても不思議はありませんよね。将来性のあるMP4ファイルでのビデオ保存もぜひご検討してみてください。

なお、ここで紹介した設定でMP4のLevelを4.1にしているのはXbox360とPS3での再生をできるようにという配慮です。SD解像度(720x480)までならば今回紹介している設定で作成したMP4ファイルをPS3で再生できることを確認しています。しかしながら、HD映像はテストしていないので不明です。--ref 1への変更と--b-pyramid指定の解除をしないとPS3では再生できないかも……。そのあたりはPS3を自分が持っていないので不確定な情報で申し訳ありません。