2008年05月07日 ニコニコ動画用にMP4エンコード
■ニコニコ動画用にMP4エンコード
動画圧縮ソフトは定番のAviUtlを使います。まずは最新のAviUtlをダウンロード。
■AviUtlプラグイン等のインストール
- Lanczos 3-lobed 拡大縮小
- 「lanczos3.auf」をAviutlフォルダに入れる
- DirectShow File Reader
- 「ds_input.aui」と「ds_input.ini」をAviutlフォルダに入れる
- NeroAACエンコーダ
- Win32フォルダ内にある「neroAacEnc.exe」をAviutlフォルダに入れる
- x264gui
- 最新の「x264.〜.rar」をダウンロード
- auoフォルダ内にある「x264gui.auo」と「x264gui.ini」をAviutlフォルダに入れる
- Microsoft Visual C++ 2008 ランタイム
- x264guiの起動に必要
- Microsoft .Net Framework 2.0 (XP/2000用)
- x264guiの起動に必要
※ファイルが見えない場合は拡張子を表示してください。
■初期設定
- aviutl.exeを起動させ、動画ファイルを読み込む (読み込みに失敗した場合はトラブルシューティングへ)
- x264guiを起動する (ファイル → プラグイン出力 → 拡張x264出力(GUI) → ビデオ圧縮ボタン)
- メニューのプリセットからニコニコ用の設定を選択する
- 音声エンコーダに「NeroAACエンコーダ」を選択し、neroAacEnc.exeの場所も指定する
以上でインストールは完了です。
※Vistaの場合、AviUtlをWindowsXP SP2の互換モードで動くようにしてください。(aviutl.exeを右クリック→プロパティ→互換性)
■エンコードの簡単な流れ
- aviutl.exeを起動させ、動画ファイルを読み込む (読み込みに失敗した場合はトラブルシューティングへ)
- ニコニコ動画の解像度に合わせるために必要に応じて
- 画面の端を削る (設定→クリッピング&リサイズの設定)
- 黒ベタを追加する (設定→縁塗りつぶし。マイナス方向で黒ベタを外側に追加)
- 拡大/縮小する(設定→Lanczos 3-lobed 拡大縮小。Pentium4/Athlon64以上ならSSE2整数で)
- (詳しくは解像度の変換を)
- x264guiを起動する (ファイル → プラグイン出力 → 拡張x264出力(GUI) → ビデオ圧縮ボタン)
- ビットレート計算機で算出したビットレートを入力し、名前を付けて保存するとエンコードが開始されます
完成したMP4ファイルはSmileVideoからアップロード
エンコードに慣れないうちは動画を短い時間に区切って練習するのがよいです。 (編集→選択範囲の指定)
■ニコニコ動画の仕様
MP4は無料会員でもアップロードできるようになりました
ファイルサイズ | 40MB (無料会員) 100MB (有料会員) |
---|---|
ビットレート (映像+音声) | 600kbps (無料会員) 1000kbps (有料会員) |
解像度 | 横512×縦384 (4:3) 横512×縦288 (16:9) |
- エコノミーモードになる条件は、19時〜26時&再生数1000以上&MP4で246kbps以上
- 仕様外の動画は再エンコードされます。
- 無料会員なら、ファイルサイズはプロパティで確認してサイズが40.0MB未満ならセーフです。 (40.0MB=40,960KB=41,943,040バイト)
他の仕様としては、解像度は最大800×600(FLVは最大768×576)、可変フレームレートはNG、fpsは1〜60、映像と音声は必ず必要、ビットレートは多少オーバーしても可(無料会員656kbps/有料会員1049kbps/エコノミー回避310kbps)など。
■動画のビットレートを計算する
- ビットレート(kbps) = ファイルサイズ(Byte) ÷ 再生時間(秒) ÷ 125
- 再生時間(秒) = ファイルサイズ(Byte) ÷ ビットレート(kbps) ÷ 125
- ファイルサイズ(Byte) = ビットレート(kbps) × 再生時間(秒) × 125
- ※1kbps=1000bps
動画のビットレートを調べるには真空波動研が便利です。
■圧縮方式の説明
MP4 | 圧縮方式 | 特徴 |
---|---|---|
映像 | H.264 | 最新の標準規格 |
音声 | AAC-LC | 96kbps以上向け |
HE-AAC | 80kbps〜48kbps向け | |
HE-AACv2 | 40kbps〜16kbps向け |
映像と音声はMP4という形式で1つのファイルにまとめられます。(拡張子.mp4)
圧縮技術の凄さを一言で表すと「99%オフ!」。ニコニコ用の動画は無圧縮動画と比較すると99%以上圧縮されたものになります。
■x264guiの設定
x264の設定はあまり理解してないので上手く説明できませんが参考にどうぞ。 (環境:PentiumE2140 1.6GHz-2コア)
- 画質を高めたりビットレートを指定通りに収めたい場合は2パスエンコードします。
- 音声は3方式あるのでビットレートと相談して決めてください
- 映像と音声のビットレートは最も重要な設定です
- QP(Quantization Parameter)は各フレームの圧縮率とでも理解。0が無圧縮、51が最高圧縮率(画質最低)
- QPの指定はビットレートより優先される傾向。「QPの上限」を低くすると画質は向上するが、ビットレートがオーバーしやすくなる
- 「QPの上限」はビットレートを守りたい場合は51に、1パスエンコードで画質を安定させたい場合は33あたりにする
- こんな感じで
- 動き予測関連は処理速度に大きく影響する。処理速度が遅い場合は動き予測関連をまず見直す。重要
- スレッド数は0にしておくとマルチコアを自動的に使ってくれる
- SARは画素の横縦比で通常は1:1。画面の横縦比ではないので注意。
- とりあえず無効で
- 「自動フィールドシフト」「初期Delay カット」「TimeScale 4倍精度」はチェックを入れてはダメみたい。重要
--bitrate 500 --pass 3 --stats ".\x264.stats" --aq-mode 0 --qpstep 8 --min-keyint 30 --keyint 300 --8x8dct --partitions "all" --bframes 16 --bime --weightb --direct "auto" --subme 6 --me "umh" --merange 16 --ref 4 --mixed-refs --threads "auto" --cqm "flat" --no-fast-pskip
※エンコードの設定は「圧縮率」「処理速度」「画質」の3者のトレードオフであり、また元動画によっても最適値が変化するので一概にこれが正しいというものはないです。
■解像度の変換
代表的な解像度の変換例をいくつか
■よくある質問
- 音声にノイズがのる/バグバグになる
- DirectShow File Reader経由でファイルが読み込まれると音声トラブルに陥りやすいようです(特にWMV)。対処方法は、mv2aviとかでAVIに変換してしまうことです。
- 音がズレてしまう
- 固定的な音ズレなら「フィルタ→音声の位置調整の設定」で予め調整してみる
- ファイル→開くで「fps調整」にチェックを入れてファイルを開いてみる
- mv2aviでAVIに変換してみる
- エンコードしたら音声が異常になったので、音声だけを差し替えたい
- 元動画から音声をWAVで抽出する (ファイル→WAV出力)
- neroAacEnc.exe -br 96000 -if "抽出した.wav" -of "tmp.m4a"
- MP4Box.exe -add "エンコ済み.mp4"#video -add "tmp.m4a"#audio -new "new.mp4"
- ビットレートがオーバーしてしまう
- 元動画により圧縮には限度がありますが、いくつかのヒントを挙げておきます
- 2パスエンコード+QPの上限を51にする
- 解像度やfpsを落とす
- 諦めて100MBでアップロードする
- 一般的には絵や動きが複雑な映像は圧縮しにくいです。逆に絵や動きが単純な映像は圧縮しやすいです
- 元動画により圧縮には限度がありますが、いくつかのヒントを挙げておきます
- アップロードすると「エンコードしています」と表示される
- 必ず表示されるので心配する必要はありません
- ニコニコ上で再生すると動画がカクカクになってしまう
- 60fps以上の動画はカクカクしやすいので、もしそうなら30fps以下にすることをオススメします(設定→フレームレートの変更 or ファイル→開く→fps変換)。fpsを下げると画質が向上するメリットもあります。
- fpsを下げても直らない場合はPCのスペック不足の可能性が高いです
- 動きが激しい場面で縞々の模様が出る
- インターレースの解除をしてください
- 1パスエンコードすると動画の最初の部分の画質が酷くなる
- 1パスエンコードで「QPの上限」が51だとそうなりやすいです。2パスエンコードにするか、1パスで「QPの上限」を33あたりに下げると解決します
- ビットレートを制限一杯まで使ってUPしたら再エンコードされました (例:無料会員 映像600kbps+音声56kbps)
- ニコニコは「ファイルサイズ(Byte)÷再生時間(秒)÷125」で算出するビットレートが制限以上だとアウトになります
- AviUtlで字幕を入れたい
- 他ファイルのx264オプションが知りたい
- x264でエンコードされたファイルなら、メモ帳で開いて「x264」で検索するとオプションが見えます
- 画質の指標を知りたい
- 自分の目で確かめるのが一番ですが、客観的に調べてみたい場合は、x264guiのログ表示を「INFO」にしてエンコードし、情報ウインドウに表示されるSSIMの値が参考になります。一般的にSSIMは0.98以上あると元動画に忠実と言えるそうです
■動画の読み込みについてのトラブルシューティング
- 「〜を超える画像サイズのファイルは編集できません」と表示される
- ファイル→環境設定→システムの設定を開いて「最大画像サイズ」の値を増やしてください
- MPEG2を読み込みたい
- 「DirectShow File Reader」でも読み込めますが専用プラグインを使うことをお勧めします
- MPEG-2 VIDEO VFAPI Plug-Inをダウンロードする
- 「m2v.vfp」のファイル名を「m2v.aui」に変更する
- 「m2v.aui」と「m2vconf.exe」をAviutlフォルダに入れて、「m2vconf.exe」を一度起動させる
- 入力プラグイン優先度の設定で「MPEG-2 VIDEO File Reader」を「DirectShow File Reader」よりは上にする
- 「DirectShow File Reader」でも読み込めますが専用プラグインを使うことをお勧めします
- MP4を読み込みたい
- 「DirectShow File Reader」でも読み込めますが専用プラグインを使うことをお勧めします
- MP4プラグインをダウンロードする
- 「mp4input.aui」と「mp4export.auf」をAviutlフォルダに入れる
- 入力プラグイン優先度の設定で「MP4 File Reader」を「DirectShow File Reader」よりは上にする
- 「DirectShow File Reader」でも読み込めますが専用プラグインを使うことをお勧めします
- FLVを読み込みたい
- FLVをメディアプレイヤで再生できるようにすると、読み込めるようになります
- Frapsで作成した動画が正常に表示されない
- 2GB未満なら、入力プラグイン優先度の設定で「AVI File Reader(Video For Windows)」を一番上にすると読み込めます
- 「DirectShow File Reader」を一番上にすると2GB以上も読み込めますが、不安定です
- 「DirectShow File Reader」の入力プラグイン優先度について
- 「DirectShow File Reader」はメディアプレイヤで再生できるものが全て読み込めるという優れものですが、不安定なとこもあるので入力プラグイン優先度は基本的に一番低くしておくのがよいです
- AVIはどの入力プラグインで読み込むべきか?
- AVI形式は「AVI/AVI2 File Reader」で読み込むのが基本で、これはデフォルト設定でもあります
- AviUtlがどの入力プラグインで動画を読み込んでいるのか知りたい
- メニューからその他→ファイルの情報と開くと「ファイル制御」に表示されます
※入力プラグイン優先度の設定は「ファイル→環境設定」にあります。(設定変更はAviUtlを再起動すると有効に)
■高画質な動画を作る
- 元動画を綺麗にキャプチャする (一番重要)
- 画面の縦横比を考慮し、Lanczos3で拡大縮小する
- ビットレートを十分に取って2パスエンコードする
- フィルターを使って綺麗に見せる (お好みで)
- 一般的には鮮やかでクッキリした絵が高画質に見えます。音は大きい方が好まれるようです
- 鮮やかさを出すためにはコントラストを上げる (設定→色調補正の設定→コントラスト)
- クッキリさを出すためにはシャープフィルタを掛ける (設定→シャープフィルタの設定)
- 音を大きくする (設定→音量の調整の設定)
エンコードの設定はこれらをクリアした後の最終手段くらいに思ってください。
■MP4とFLVを再生できるようにする
CCCPをインストールすると、メディアプレイヤ等でMP4とFLVが再生できるようになります。