Hatena::Diary

普通ダイアリ

2008年05月07日 ニコニコ動画用にMP4エンコード

ニコニコ動画用にMP4エンコード

ゆっくりしていってね!!!


動画圧縮ソフトは定番のAviUtlを使います。まずは最新のAviUtlをダウンロード。

AviUtlプラグイン等のインストール

※ファイルが見えない場合は拡張子を表示してください。


初期設定

  1. aviutl.exeを起動させ、動画ファイルを読み込む (読み込みに失敗した場合はトラブルシューティングへ)
  2. x264guiを起動する (ファイル → プラグイン出力 → 拡張x264出力(GUI) → ビデオ圧縮ボタン)
  3. メニューのプリセットからニコニコ用の設定を選択する
  4. 音声エンコーダに「NeroAACエンコーダ」を選択し、neroAacEnc.exeの場所も指定する

以上でインストールは完了です。

※Vistaの場合、AviUtlをWindowsXP SP2の互換モードで動くようにしてください。(aviutl.exeを右クリック→プロパティ→互換性)

エンコードの簡単な流れ

  1. aviutl.exeを起動させ、動画ファイルを読み込む (読み込みに失敗した場合はトラブルシューティングへ)
  2. ニコニコ動画の解像度に合わせるために必要に応じて
    • 画面の端を削る (設定→クリッピング&リサイズの設定)
    • 黒ベタを追加する (設定→縁塗りつぶし。マイナス方向で黒ベタを外側に追加)
    • 拡大/縮小する(設定→Lanczos 3-lobed 拡大縮小。Pentium4/Athlon64以上ならSSE2整数で)
    • (詳しくは解像度の変換を)
  3. x264guiを起動する (ファイル → プラグイン出力 → 拡張x264出力(GUI) → ビデオ圧縮ボタン)
  4. ビットレート計算機で算出したビットレートを入力し、名前を付けて保存するとエンコードが開始されます

完成したMP4ファイルはSmileVideoからアップロード

エンコードに慣れないうちは動画を短い時間に区切って練習するのがよいです。 (編集→選択範囲の指定)

ニコニコ動画の仕様

MP4は無料会員でもアップロードできるようになりました new

ファイルサイズ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)など。

動画のビットレートを計算する

calc ニコニコ動画用のビットレート計算機

  • ビットレート(kbps) = ファイルサイズ(Byte) ÷ 再生時間(秒) ÷ 125
  • 再生時間(秒) = ファイルサイズ(Byte) ÷ ビットレート(kbps) ÷ 125
  • ファイルサイズ(Byte) = ビットレート(kbps) × 再生時間(秒) × 125
  • ※1kbps=1000bps

動画のビットレートを調べるには真空波動研が便利です。

圧縮方式の説明

MP4圧縮方式特徴
映像H.264最新の標準規格
音声AAC-LC96kbps以上向け
HE-AAC80kbps〜48kbps向け
HE-AACv240kbps〜16kbps向け

映像と音声はMP4という形式で1つのファイルにまとめられます。(拡張子.mp4)

圧縮技術の凄さを一言で表すと「99%オフ!」。ニコニコ用の動画は無圧縮動画と比較すると99%以上圧縮されたものになります。


x264guiの設定

x264の設定はあまり理解してないので上手く説明できませんが参考にどうぞ。 (環境:PentiumE2140 1.6GHz-2コア)

x264gui ビットレート

  • 画質を高めたりビットレートを指定通りに収めたい場合は2パスエンコードします。
  • 音声は3方式あるのでビットレートと相談して決めてください
  • 映像と音声のビットレートは最も重要な設定です


x264gui レート設定

  • QP(Quantization Parameter)は各フレームの圧縮率とでも理解。0が無圧縮、51が最高圧縮率(画質最低)
  • QPの指定はビットレートより優先される傾向。「QPの上限」を低くすると画質は向上するが、ビットレートがオーバーしやすくなる
  • 「QPの上限」はビットレートを守りたい場合は51に、1パスエンコードで画質を安定させたい場合は33あたりにする


x264gui マクロブロック

  • こんな感じで


x264gui 詳細

  • 動き予測関連は処理速度に大きく影響する。処理速度が遅い場合は動き予測関連をまず見直す。重要
  • スレッド数は0にしておくとマルチコアを自動的に使ってくれる
  • SARは画素の横縦比で通常は1:1。画面の横縦比ではないので注意。


x264gui その他

  • とりあえず無効で


x264gui 拡張設定

  • 「自動フィールドシフト」「初期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者のトレードオフであり、また元動画によっても最適値が変化するので一概にこれが正しいというものはないです。


解像度の変換

代表的な解像度の変換例をいくつか

4:3の映像(1.33)Lanczos3で512×384に拡大/縮小する
16:9の映像(1.77)Lanczos3で512×288に拡大/縮小する
720×480 16:9スクイーズ左右8削って、Lanczos3で512×288に縮小する
720×480 3:2左右8削って、Lanczos3で512×384に縮小する
ファミコン (256×224)表示2倍(512x448)でキャプチャして、Lanzcos3で512×384に縮小する ニコニコ動画
Nestopiaの表示2倍をSCFH DSF(アスペクト比維持しない、縮小:Bilinear)+ふぬああ(512x384)でキャプチャする
スーパーファミコンSNESGTの512×384×32bpp(フィルタ:拡大二倍化)でキャプチャする ニコニコ動画
ゲームボーイ (160×144)TGB Dualの160×144(または表示2倍)をふぬああでキャプチャする。 ニコニコ動画
※描画フローの設定:Heap->Sys->Primary
ゲームボーイアドバンス (240×160)240×160でキャプチャする
上下16と左右8の黒ベタを追加し、Lanzcos3で512×384に拡大する

  • ゲームのキャプチャにはFrapsDxtoryふぬああを使用します
  • ゲーム動画でビットレートが足りない場合は、拡大せずにキャプチャ/エンコードした方が綺麗になる場合もあります


よくある質問

  • 音声にノイズがのる/バグバグになる
    • DirectShow File Reader経由でファイルが読み込まれると音声トラブルに陥りやすいようです(特にWMV)。対処方法は、mv2aviとかでAVIに変換してしまうことです。
  • 音がズレてしまう
    • 固定的な音ズレなら「フィルタ→音声の位置調整の設定」で予め調整してみる
    • ファイル→開くで「fps調整」にチェックを入れてファイルを開いてみる
    • mv2aviでAVIに変換してみる
  • エンコードしたら音声が異常になったので、音声だけを差し替えたい
    1. 元動画から音声をWAVで抽出する (ファイル→WAV出力)
    2. neroAacEnc.exe -br 96000 -if "抽出した.wav" -of "tmp.m4a"
    3. 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で字幕を入れたい
    • 公式プラグインの拡張フィルタ編集を入れればできます。帯付きならレイヤ1に帯BMP、レイヤ2に文字という感じで。
  • 他ファイルのx264オプションが知りたい
    • x264でエンコードされたファイルなら、メモ帳で開いて「x264」で検索するとオプションが見えます
  • 画質の指標を知りたい
    • 自分の目で確かめるのが一番ですが、客観的に調べてみたい場合は、x264guiのログ表示を「INFO」にしてエンコードし、情報ウインドウに表示されるSSIMの値が参考になります。一般的にSSIMは0.98以上あると元動画に忠実と言えるそうです


動画の読み込みについてのトラブルシューティング

  • 「〜を超える画像サイズのファイルは編集できません」と表示される
    • ファイル→環境設定→システムの設定を開いて「最大画像サイズ」の値を増やしてください
  • MPEG2を読み込みたい
    • 「DirectShow File Reader」でも読み込めますが専用プラグインを使うことをお勧めします
      1. MPEG-2 VIDEO VFAPI Plug-Inをダウンロードする
      2. 「m2v.vfp」のファイル名を「m2v.aui」に変更する
      3. 「m2v.aui」と「m2vconf.exe」をAviutlフォルダに入れて、「m2vconf.exe」を一度起動させる
      4. 入力プラグイン優先度の設定で「MPEG-2 VIDEO File Reader」を「DirectShow File Reader」よりは上にする
  • MP4を読み込みたい
    • 「DirectShow File Reader」でも読み込めますが専用プラグインを使うことをお勧めします
      1. MP4プラグインをダウンロードする
      2. 「mp4input.aui」と「mp4export.auf」をAviutlフォルダに入れる
      3. 入力プラグイン優先度の設定で「MP4 File Reader」を「DirectShow File Reader」よりは上にする
  • 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を再起動すると有効に)


高画質な動画を作る

  • 元動画を綺麗にキャプチャする (一番重要)
    • エンコードはいくら頑張っても元動画以上にはならないので、元動画が綺麗でなければ始まりません
    • ウインドウをキャプチャしたり外部入力をキャプチャするならふぬああがオススメです (使い方)
    • ゲームでフルスクリーンや60fpsの録画が必要ならFrapsDxtoryがオススメ(有料)
  • 画面の縦横比を考慮し、Lanczos3で拡大縮小する
  • ビットレートを十分に取って2パスエンコードする
  • フィルターを使って綺麗に見せる (お好みで)
    • 一般的には鮮やかでクッキリした絵が高画質に見えます。音は大きい方が好まれるようです
    • 鮮やかさを出すためにはコントラストを上げる (設定→色調補正の設定→コントラスト)
    • クッキリさを出すためにはシャープフィルタを掛ける (設定→シャープフィルタの設定)
    • 音を大きくする (設定→音量の調整の設定)

エンコードの設定はこれらをクリアした後の最終手段くらいに思ってください。


MP4とFLVを再生できるようにする

CCCPをインストールすると、メディアプレイヤ等でMP4とFLVが再生できるようになります。



スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証