エンコード特集(H.264)
こんにちは!
今回はフリー動画編集ソフトAviUtlを使ったMP4(H.264)形式のエンコードについて解説して行こうと思います。
動画をネットワーク上で公開されたサーバーへアップロードし、広く他の方に見て頂く為には撮影直後の動画ファイルではサイズが大きすぎますので、エンコードと呼ばれる圧縮を行う必要があります。
エンコードの方法には色々なものがあり、それぞれが出来るだけファイルサイズをより小さく、画質・音質をより綺麗な状態を維持しようとしており、様々な形式が存在します。
なかでも、MP4(H.264)と呼ばれる形式は現状で最も人気の圧縮形式です。
圧縮形式の方法を詰め込んでいる辞書の様な「アルゴリズム」の事を「コーデック」と呼びます。
※アルゴリズムとは プログラムの仕組みの事。プログラムは機械言語で書かれているものを差しますが、アルゴリズムとはプログラムを人間の言葉に訳したものや、プログラムに「書いてある内容」の事を差します。
※MP4(H.264)とは MP4はファイル形式の事で、H.264はコーデックです。MP4ファイルは動画ファイルの一つの形式(拡張子)なのですが、色々な方法でMP4ファイルを書く事が出来ます。その中でも、「H.264コーデックによって書かれたものです」と表す為に、「MP4(H.264)」と言う表記が使われています。例えれば、○○.txtというファイルが「テキストファイル」だとすると、テキストファイルの中身を書いた時言語によってtxt(日本語)やtxt(英語)と区別している様なものです。
今回はAviUtlというフリーの動画編集ソフトを前提にお話を進めて行きますので、まずはこのソフトを準備して下さい。
エンコード以前の段階として、動画を撮影する為の環境も勿論必要になりますので、それに関しては以前の記事のこちらをご参照下さい。
http://ameblo.jp/yuugenbana/entry-11270551351.html
こちらのwikiサイトを参考にして頂くとソフトが揃えやすいです。
ニコニコ動画まとめwiki『AviUtlを使ったMP4(H.264)エンコード」』
http://nicowiki.com/aviutl_h264.html
※その他、必要な知識なども詳細に書かれていますので御参照下さい。
「1.準備」の項目で必要なソフトウェアやプラグインが紹介されているので、少々数が多く面倒ですが順番通りに必要なものを集めて下さい。
AviUtl
http://spring-fragrance.mints.ne.jp/aviutl/
やゑの使っている設定もこちらのwikiにあった内容を参考に組ませて頂いているのですが、wikiの解説を読むのが面倒な人も多いと思うので、設定値だけまとめたメモをこちらに載せておきます。
ビットレート 映像1486kbps 音声AAC-LC128kbps
フレームレート 60fpsキャプチャ→60fps
ビットレートの値は拡張x264出力(GUI)のビットレートタブにあるスライドバー調整で行えます。
動画の時間やアップロード先の規制によって変化しますので、上記の値は参考程度にしかなりません。
この値の算出方法については各設定値の後に記載します。
キャプチャ段階の設定で縦横サイズをある程度縮小しておけると動画サイズも小さくなる為、ストレージに書き込む速度にゆとりが生まれます。
エンコ形式はH264で。
↓AviUtl設定メモ
※ファイル>プラグイン出力>拡張x264出力(GUI)を選んでファイル保存名記入ボックスの少し下の[ビデオ圧縮]ボタンから出したメニューで設定する。
※以下の設定は左側のタブから順に、映像全タブ→音声と記述しています。
◆ビットレート
マルチパス-Nth Pass nul出力ON ターボON 自動マルチパス2
ビットレート1800
デフォルトプリセット
速度Medium チューニングNone プロファイルHigh
◆レート設定
ビットレート
I-Pフレーム間QP係数 40%
P-Bフレーム間QP係数 30%
ビットレート変動量 60%
量子化の限度
QPの下限 10
QPの上限 51
QP変動幅の最大 4
シーンカット
シーンカット閾値 40
IDRフレーム間隔の下限 1
IDRフレーム間隔の上限 250
◆マクロブロックタイプ
マクロブロックタイプの指定
8x8離散コサイン変換 ON
8x8 , 8x16 and 16x8 Pフレーム動き補償 ON
8x8 , 8x16 and 16x8 Bフレーム動き補償 ON
4x4 , 4x8 and 8x4 Pフレーム動き補償 OFF
8x8 イントラ動き補償 ON
4x4 イントラ動き補償 ON
Bフレーム設定
Bフレームの最大連続数 3
適応的Bフレーム挿入 簡易
傾向 0
参照距離 3 混合 ON
ピラミッド参照化 none
重み付け予測
Bフレーム ON
Pフレーム Smart analysis
◆詳細
動き予測
動き予測アルゴリズム Exhaustive Search
サブピクセル精度 9
ベクトル探索範囲 16 彩度動き予測 ON
動き予測方式 Auto
詳細設定
SAR 0:0 スレッド数 OFF
CABAC ON
インターレース保持 OFF
スキップMB検出 ON
DCT係数間引き ON
mb-tree レート制御 ON
デブロックフィルタ ON 強度0 閾値0
ノイズ除去0
RD最適化 Last MB Encode
マトリックス Flat
ログ表示 INFO
◆その他
Adaptive Quatization
モード Auto VAQ
強度 0.05
Psy-RD
RDO 1.00
Trellis 0.00
結果出力
PSNER OFF
SSIM OFF
スライス数
0/Level自動
◆コマンド
--colormatrix smpte170m を適用
進捗状況表示 ON
◆拡張設定
自動フィールドシフトv7対応 OFF
ビデオ先読みスレッド OFF
インターレース対応 YUY2-YV変換(MMX/SSE) ON
timecode.txt出力 OFF
◆音声 NeroAACエンコーダー AAC-LC128kbps
2passOFF 処理モードWAV
.mp4
外部Muxerを利用する OFF
.mkv
拡張オプション OFF
☆動画ファイル容量の計算
こちらのページで簡単にファイルサイズを概算する事ができます。
動画ファイルサイズ計算ツール
http://bel.s221.xrea.com/size_forecast/
合計サイズやビットレート上限がアップロードしたいサイトの規制に沿う様計算し、調整しておきましょう。
エンコード時の演算によって若干の誤差が生じる為、サイト側の規制をはみ出さない様にほんの少しのマージン(余裕)を設けておくことをお勧めします。
※ビットレートとは 動画はフレーム単位でのパラパラ漫画として成り立っていますが、1フレーム単位である1枚の画像をどれだけのビットレートで描くかの設定になります。このサイズが大きければ大きいほど1枚の画像をより綺麗なまま残しておける事になり、画質の荒れ(音の場合は音質劣化)が少なくなります。
※フレームレートとは 1秒間に何枚の画像を表示するかの分割です。フレームレートの値が高ければ高いほど高速なパラパラ漫画になり、動きが滑らかになります。但し、ディスプレイ側の性能でリフレッシュレートが60Hzのものではそれ以上の早いフレームレートは描写しきれない為、あまり意味がありません。液晶ディスプレイが主流の現在では60FPSもあれば充分でしょう。単位のFPSはフレームパーセカンドの略で、「フレーム/秒」を意味しています。
※音質劣化について
音の劣化に関して、一般的なユーザーはMP3などの音楽ファイルで劣化した音に耳が慣れてしまっているせいもあり、ある程度劣化した音でも不快に感じる人は少ないです。エンコードによる音質劣化は初期の段階で高音に表れやすいです。シンバルなどの金物系の音は周波数が高い為、波形をデジタルのマス目で区切った際にマス目が大きいと高い周波数の波は波同士が密集している為、一マスの中に複数の波が入ってしまうようになります。よってシンバル音などの高い周波数の音を倍音に含む音で、生の状態では澄み渡る様な高音が少し平たく、シャカシャカした様な音に劣化しはじめます。実際はコーデックによって低音部も削られているのですが、ここで削られる低音部の帯域はイヤホンや小口径スピーカーでは再生可能周波数の帯域外に当たる場合が多い為、余り気付かれません。
☆BGMについて(ゲームBGM以外の曲とミックスする方法)
キャプチャ撮影の段階でゲーム内設定で予めBGMをOFFにしておき撮影する事で、ゲーム内の効果音だけの音声データが得られます。
AviUtlでキャプチャ動画を読み込んでから効果音だけのゲーム音をWAVEで保存する為、一旦、ファイル>WAVE出力を行ってWAVEデータを作ります。
RadioLine Free等のミキシングソフトを使用して(ProTools等があれば最適)出来上がったゲーム効果音だけのWAVEファイルを読み込み、BGMファイルを別途用意してゲーム音側の時間に合わせてミックスダウンし、Waveファイルへとバウンスします。
出来上がったBGM+ゲーム音のミックスされたWAVEファイルを再度AviUtl側で読み込ませる事で、ゲーム効果音を失わずに動画に好きなBGMを乗せる事ができます。
ファイルをエンコード前に分割する場合は先に分割ポイントを決めて置き、AviUtlのウィンドウ上部に表示されているフレーム単位で覚えておきましょう。(メモとして外部に一時記録推奨)
分割するポイントにウィンドウ下部のスライドバーのカーソルを移動させ、使用する部分以外を選択状態にし、「編集>選択範囲のフレーム削除」によって使わない部分を削除します。この状態でゲーム音のみのWAVEファイルを書き出し、ミックスダウンした後にエンコードを行いましょう。この手順を使う事でBGMの曲数や曲の時間調整などを分割ポイントに合わせる事ができます。
3分割以上にする場合、2区分目からは前半部のフレームを削除した時点でウィンドウ上部に表示されるカーソル位置のフレーム数が削除したフレーム数分減算処理されている事に注意して下さい。メモを控えておくことで足し算をして今全体の内何フレーム目にポイントしているのかを把握できます。
映像2970kbps 音声AAC-LC320kbps設定のMP4(H.264)エンコーディング