AviUtlを使ったMP4 (H.264) エンコード
| AviUtl最終更新日 | 現行の最新バージョン |
| 2008/08/30 | version0.99f |
目次
概要 †
ニコニコ動画の仕様 †
- 当初はプレミアム会員のみH.264動画の投稿が可能でしたが、2008年7月5日より一般会員でも投稿できるようになりました。
- 正式なコンテナは「MPEG-4 Part 10 AVC」です。プロファイルはベースラインプロファイル、またはメインプロファイルが推奨です。
- 固定フレームレートが推奨で、VFR等の可変フレームレートは正しく処理されない場合があります。
- 最大許容ビットレートは、プレミアム会員が800kbps、一般会員が600kbpsです。
- 音声AACは「HE-AAC(44.1kHz/48.0kHz・32kbps~64kbps推奨)」、または「AAC-LC(44.1kHz/48.0kHz・64kbps~96kbps推奨)」が対応しています。
- MP4コンテナには映像1チャンネル、音声1チャンネルのみ対応です。その他の音声・映像の多重化は対象外です。
- 解像度制限があるようです。800x600までは問題ないのを確認。800x640ではサーバサイドエンコードされました。
- ファイルサイズの最大は40MBです。
- オーディオ情報の無い動画はサーバサイドエンコードされます。無音の動画を作る際は無音の音声ファイルと合成させましょう。
- これらの仕様を満たさない場合は通常の動画として扱われ、通常のサーバサイドエンコードの対象となります。
- エンコードにあたっては「zoome Wiki Encode」も参考にして下さい。
FLV4 (VP6+MP3) との違い †
- エコノミーの発動条件は8月30日時点でビットレート合計が一般会員は約311kbps以上、プレミアム会員は約244kbps以上(一度仕様が変わったことがあります。今後も要注意)、再生数1000以上でエコノミーモードになります(VP6は一般会員もプレミアム会員もビットレート合計が約310kbps以上、再生数1000以上でエコノミー)。
- 基本的にはVP6より高速に圧縮できます。ただしスペックや設定によって大きく変化します。x264.exeはマルチスレッドに対応しているため、高性能なPCほどVP6との速度差が開きます。
- エンコードの際、上下反転するバグがないので余計な手間がかかりません。
- 高度な動き検出やレート配分、Bフレームのおかげで動きが激しい動画でもVP6に比べて綺麗に圧縮できます。逆に動きの激しい部分にレートを取られるため、静止画部分はVP6の方が綺麗な場合があります。
- 音声 (AAC) は特に低ビットレート(大体80kbps以下)においてMP3よりかなり綺麗に圧縮できます。160kbps以上のビットレートであれば著しい差は発生しませんが、概ねAACの方が良質です。
手順 †
1.準備 †
- 当然だけど、ニコニコ動画に投稿したい動画は自分で用意しましょう。動画の作成から始めたい、という人は動画の作り方ページなどを参照して下さい。
1.必要ソフト・プラグインの準備 †
2.リサイズと黒べた †
3.バッチ登録 †
A.シングルパスでエンコード †
- シングルパスでのエンコード方法です。
- 上下反転はしないで下さい。H.264では不要です。
- 元ファイルの音声がMP3などで圧縮されていると出力されないので、外部でPCM-WAVにしてから「音声読み込み」して下さい。
- AviUtlで、[ファイル] → [開く] でエンコードしたい動画を開きます。
- [ファイル] → [プラグイン出力] → [拡張x264出力(GUI)] を選択し、ファイル名を入力します。
- [ビデオ圧縮] ボタンを押すと【拡張x264出力(GUI)】ウィンドウが表示されます。以下の項目は最低限設定しましょう。
| ビットレートタブ内設定 |
| 映像 | 「シングルパス - 固定ビットレート」←ココ重要 |
| ビットレート | 500(※1 元ファイルにより最適値は変化) |
| null出力 | チェックボックス→オフ |
| 音声 | エンコーダ | NeroAACエンコーダ |
| エンコード設定 | HE-AAC(32kbps~64kbps) AAC-LC(64kbps~96kbps)推奨 |
| 処理モード | パイプ |
| 拡張設定タブ内設定 |
| 拡張設定 | 初期Delayカット | チェックボックス→オフ (※2 使うべきでない) |
| TimeScale4倍精度 | チェックボックス→オフ (基本的に使うべきでない) |
- 設定したら [保存] ボタンを押します。コレでエンコードが開始されます。
B.マルチパスでエンコード †
- 2pass、または3pass以上することでシングルパス以上の画質が見込めます。「拡張x264出力(GUI)」の「x264.748.release4」以降を導入しないと手間が増えるので注意しましょう。以下の説明は全て「x264.748.release3」以降を導入していることを前提とします。
- 上下反転はしないで下さい。H.264では不要です。
- 元ファイルの音声がMP3などで圧縮されていると出力されないので、外部でPCM-WAVにしてから「音声読み込み」して下さい。
- AviUtlで、[ファイル] → [開く] でエンコードしたい動画を開きます。
- [ファイル] → [プラグイン出力] → [拡張x264出力(GUI)] を選択し、ファイル名を入力します。Npass_Encode等分かりやすい名称が良いでしょう(エンコードが上手く行ったらリネームしておこう)。ただしVP6と違って1stPassファイル自体は出力されません。最後の本番エンコードのみファイルが作成されます。
- [ビデオ圧縮] ボタンを押すと【拡張x264出力(GUI)】ウィンドウが表示されます。メニューの [プリセット] から「NicoNico?:SP1」プリセットを呼び出し、以下の項目を設定しましょう。
| ビットレートタブ内設定 |
| 映像 | 「マルチパス - Nth PASS」←ココ重要 |
| ビットレート | 500~720(※1 元ファイルにより最適値は変化) |
| null出力 | チェックボックス→オン←ココ重要 |
| 自動マルチパス | チェックボックス→オン、数値は2~3推奨 (例:3を指定すると2回nul+1出力の計3回エンコード) あまり多くても意味は無い上逆効果に成る事も。 |
| 音声 | エンコーダ | NeroAACエンコーダ |
| エンコード設定 | HE-AAC(32kbps~64kbps) AAC-LC(64kbps~96kbps)推奨 |
| 処理モード | パイプ |
| 他タブ内設定 |
| 拡張設定 | 初期Delayカット | チェックボックス→オフ (※2 使うべきでない) |
| TimeScale4倍制度 | チェックボックス→オフ (基本的に使うべきでない) |
- ※1
このbitrate設定の目安は40MBで使用できるビットレート早見表を参照するとなんとなくつかめるはず。SP1で上限が800kbpsに変更されたので、アップ可能な有効実ビットレート値は検証データ待ち。実ビットレート850kbps程度でアップ成功の例有り(過去の話)。2008/03/14以降、仕様変更により、828kbps付近が限界である。
- ※2
オフにすることで固定フレームレートにできる。チェックを入れていると可変フレームレートになり、スマイルビデオにうpした時に弾かれる恐れがある。
- 設定したら [バッチ登録] ボタン、もしくは [保存] を押します。[保存] ボタンを押した場合は直ちにエンコードが開始されますので下記の「エンコードの開始」操作は不要です。
4.エンコードの開始 †
- [ファイル] → [バッチ出力] を開き、[開始] ボタンを押すとエンコードが始まりMP4が出力されます。時間がかかるので、出かける前や寝る前などに実行するのが良いでしょう。「バッチ出力終了時に」から [ウィンドウズをシャットダウン] などを選択することもできます。
- 初挑戦時は10~20秒程度のファイルで練習推奨! 長い動画は編集ソフトで切り取りましょう。
Tips †
AVI出力からの作成法 †
- プラグイン出力をうまく導入できない人がいるのでAVI出力からの動画作成方法を記載します。ただしAVI形式ではH.264は正式にサポートされていないので推奨はできません。
- 必要ソフトのダウンロード・インストール
- 動画のエンコード
aviutlを使ったVP6 2pass参照
コーデックがx264になっただけ。設定はプラグイン出力を参考に。
- AVI→MP4
MP4Boxを使ってMP4にする。
- 音声の変換と合成
別途SwitchなどでAACを作成してMP4Boxを使って動画と合成。
音声を後から合成する †
- まずWAVE出力を行う。
- Switch等使いWAVE→AACへ変換する。
- MP4BoxとYambを同じ場所に置き、Yambを使いMP4(またはAVI)とAACを合成する。
複数のmp4動画の結合・合成 †
- MP4Boxを使用することで、以下の動画を結合することができます。
- 同解像度
- 同ビットレート(動画のビットレートは多少違ってもおk?)
- 同fps(タイムスケール変更で対処可能?)
- YambはMP4BoxのGUIフロントエンドですが、結合などの処理に関しては最低限のオプションしか使用できないので、コマンドラインを使える人はMP4Boxを使うことをお薦めします。
MP4Boxの概要 †
mp4box [入力...] 出力
入力 ::= (-cat|-add) 入力1[#ストリーム][:オプション...] (-cat|-add) 入力2[#ストリーム][:オプション...] ...
mp4box -info 情報が欲しいmp4ファイル
- 入力されたストリームを、全て結合して出力します。
- mp4ファイルは内部にストリームと呼ばれる単位で別個のデータを保存しています。
- ストリーム1は映像、2が音声。 大体は。 それ以外のものが入っているとニコニコに弾かれる(?)
- 詳しくは-infoオプションを使って見てみましょう。
- それぞれの入力の前に"-cat"とつけるか"-add"とつけるかで、挙動が異なります。
- addなら新しくストリームを0:00から始めます
- catなら既に存在する同種のストリームのお尻に連結します
- #によるストリーム指定は任意です。 "#video"または"#audio"のどちらか。
- :を使っていくつかのストリーム入力オプションを指定することができます。 オプションの度に:を書きます。
- 出力先のファイルがすでに存在していた場合上書きでなく追加を行なうので注意してください。
- 大抵の場合、映像と音声の尺は微妙に異なるため多くの動画を連結すると音ズレが発生します。
- infoオプションで映像と音の尺の違いを確認しましょう
- 入力の際に、:の後にdelay=***と書くことで任意のストリームを任意msだけ遅らせることができます。
音声だけで映像が無いファイルが出来る問題について †
- x264gui.auoの最新版を導入すればたぶん回避できます。
- 他の回避方法
- 1stPASSで「null出力」をオン、2ndPASSで「null出力」をオフにする。
- それでもダメなら1stPASS終了後にAviutlを再起動してから2ndPASSをする。
(1stPASSだけバッチ登録→バッチ出力→2ndPASSをバッチ登録→Aviutl再起動→バッチ出力)
- QuickTimePlayer?で再生してませんか?
出力したmp4ファイルを再びAviutlで開いてみるか、Gomplayer等で再生してみると上手くいってるかもしれません
拡張 x264 出力(GUI)の設定項目とその機能について †
拡張 x264 出力(GUI)の設定項目とその機能について
コメント †