動画のCodecを変更したい。目的は2つ。
まずは「iPadで閲覧可能な動画形式に変換する」こと。保管しているビデオやアニメはほとんどがDivX系であり、PCやPS3では閲覧できるが、iPadではできない。WebM(VP8 + Vorbis)の普及が未確定の現在、やっぱり、AVC(H.264)/AACに変換するのがよいのでしょうかね。
次に「動画ファイルサイズを縮小する」こと。個人的にはそれほど画質にはこだわりがない。一見してわからない程度の劣化であれば、BitRateを下げてHDDの空き容量を優先したい。
MediaCoder 0.8.0.5050 †
標準Presets †
品質重視設定。24min.動画のencode(VBR)に135min.かかる。(Powered by Pentium4 3GHz) 24min.動画のencode(VBR)に55min.かかる。(Powered by Core 2 Duo 2.4GHz)
- overall.ui.rss = "Never"
- overall.ui.stats = "Never"
- overall.ui.noWelcome = "5050"
- アプリ起動時のSetup Wizardは不要。Build番号を指定する。
overall.ui.trayConfig = "Disable tray icon"
タスクトレイに格納すると、アプリがエラー終了することがある? タスクバーのみを使うように変更。
- overall.task.destdir = "D:\"
- overall.task.interval = "180"
- transcode中は100%に張り付くProcessorに、休止時間を与えましょう。
- overall.audio.channels = "Original"
- overall.audio.format = "LC-AAC"
- overall.audio.encoder = "FAAC"
overall.video.mode = "3-Pass"
- 品質 > エンコード時間
「"2-Pass"と変わらない」意見が多い中、このPresetsだと差異が視認できましたので。
overall.video.bitrate = "512"
- このBitrateで、動画ファイルサイズは約100MB/24min. (高速な流体描写のない)1280x720のアニメなら、十分キレイだと思う。
- iPadでコマ落ち・ノイズ等を確認して、必要なら"768 Kbps"、更に"1024 Kbps"以上を試す。
- overall.video.mode = "VBR"
- overall.video.quality = "50" (crf=25)
- iPadでコマ落ち・ノイズ等を確認して、必要なら変更。
- 実写なら"60(crf=20)"以上必要かも
- アニメは調査中。
- overall.playback.preview = "Disabled"
- audioenc.faac.quality = "72"
- 元audioのBitRateが64bps程度なら"48"、128bps以上なら"72"。音質重視の場合は"96"or"128"とか。
- audioenc.faac.container = "MP4"
Defaultの"AAC"だと、生成されたAudioファイルを再利用・再結合できないみたい?
- build4740ぐらいから、一時ファイルが残らなくなったので、ど~でもよい?
- videoenc.x264.profile = "High"
- videoenc.x264.level = "40"
- videoenc.x264.preset = "Slower"
- tune="Animation"とした場合など、refが大き過ぎる("16"とか)とiPadで再生できない。その場合、"Slow"に変更する。
videoenc.x264.qp = "5"
- 「useful rangeは10~20」と説明されているが、これくらい小さくした方が画質が良い気がする。
- videoenc.x264.frameref = "6"
- videoenc.x264.bframes = "6"
- 3の倍数が良いらしい?(参考サイト)
- "3"だと圧縮率低下→画質低下。"9"だとiPadでの再生時にモザイク増加。(のような気がする)
- videoenc.x264.b_adapt = "Optimal"
videoenc.x264.b_pyramid = "Normal"
videoenc.x264.qpmin = "2"
videoenc.x264.qcomp = "90"
- Bitrateの変動幅を大きく、画質の変動を小さく。
- videoenc.x264.me = "Uneven Multi-Hexagon"
- videoenc.x264.me_range = "24"
- videoenc.x264.subq = "9"
- videoenc.x264.mixed_refs = "true"
- videoenc.x264.fast_pskip = "false"
- videoenc.x264.dct_decimate = "false"
- videoenc.x264.gh = "true"
audiofilter.resample.downSamplingOnly = "true"
- videofilter.scale.width = "1280"
- videofilter.scale.height = "720"
- 上記は、通常は利用されない。Scale Filter有効時に適応される。
- videofilter.frame.fps = "24000"
- videofilter.frame.fpsScale = "1001"
- 上記は、通常は利用されない。Frame Filter有効時に適応される。
元動画に依って、標準Presetsから変更するパラメータ †
元videoがアニメーションの場合 †
- videoenc.x264.tune = "Animation"
- "Animation"にするとrefが2倍になり、iPadで再生できないことがある。(ref > 10)の場合、videoenc.x264.preset = "Slow" に変更する。
- videoenc.x264.deblock = "false"
元videoが実写の場合 †
- videoenc.x264.tune = "Film"
- videoenc.x264.nr = "1000" & videoenc.x264.psy = "false"
元videoのresolutionが1280x720以上の場合 †
- videofilter.scale.enabled = "Yes"
- 1280x720以上は、iPadで正常に再生できないため。
- 元動画のaspect比が16:9以外の場合は、videofilter.scale.width・videofilter.scale.heightも変更する。
元videoのFrame Rateが適切でない(119fpsとか)場合 †
- videofilter.frame.enabled = "true"
元videoと比較して、画質劣化が視認できる場合 †
overall.video.bitrate = "768 Kbps"
それでも不足なら、"1024 Kbps"以上を試す。
- overall.video.quality = "50" (crf=25)
- それでも不足なら、"56(crf=22)"以上を試す。
元audioの音量が小さい場合 †
- audiofilter.volume.normalization = "Mode 1"
元audioのbitrateに合わせて音質を調整したい(or 音質を重視したい)場合 †
- audioenc.faac.quality = "48" or "96","128"
- 元audioのBitRateが64bps程度なら"48"、128bps以上なら"72"。音質重視の場合は"96"or"128"とか。
元audioをそのまま使いたい場合 †
- overall.audio.copy = "true"
- 元audioがAACで、BitRateが適切なら、re-encodeしない。
buffer overflowが発生する場合 †
overall.video.bufferSize = "200"以上
はっきりしないが、発生しにくくなるような気がする。
- overall.generic.priority="Normal"なら、"Auto"や"Lower"に変えると発生しにくくなる。
処理時間 (例 : 56secの動画) †
Air Video Server 2.4.2 †
- http://www.inmethod.com/air-video/
- iPadやiPhone側のClientアプリからconvert(Transcode)を指示する。
- max width, max heightを最大値(1024x768(iPad))、Qualityを"100%"にしてconvertすると、ファイルサイズが元のと同じ程度のAVC/AAC動画ができる。
- 30min.動画のencodeに50min.程度。(Powered by Pentium 4 3GHz)
- 私の要件には合わない。(ファイルサイズが小さくならない & rateやresolutionをできるだけ変えたくない)