動画のCodecを変更したい。目的は2つ。
まずは「iPadで閲覧可能な動画形式に変換する」こと。保管しているビデオやアニメはほとんどがDivX系であり、PCやPS3では閲覧できるが、iPadではできない。WebM(VP8 + Vorbis)の普及が未確定の現在、やっぱり、AVC(H.264)/AACに変換するのがよいのでしょうかね。
次に「動画ファイルサイズを縮小する」こと。個人的にはそれほど画質にはこだわりがない。一見してわからない程度の劣化であれば、BitRateを下げてHDDの空き容量を優先したい。
MediaCoder 0.7.5.4732 †
標準Presets †
品質重視設定のため、30min.動画のencodeに150min.かかる。(Powered by Pentium4 3GHz)
- overall.ui.stats = "Never"
- overall.ui.noWelcome = "4730"
- アプリ起動時のSetup Wizardは不要。Build番号を指定する。
- overall.ui.trayConfig = "Disable tray icon"
- タスクトレイに格納すると、アプリがエラー終了することがある? タスクバーのみを使うように変更。
- overall.task.interval = "180"
- transcode中は100%に張り付くProcessorに、休止時間を与えましょう。
- overall.audio.channels = "Original"
- overall.audio.autoEncoder = "true"
- overall.audio.format = "LC-AAC"
- overall.audio.encoder = "FAAC"
- 「Nero Encoder + HE-AAC V2」よりも「FAAC + LC-AAC」の方が、音質劣化が少ない場合があるようだ
- overall.video.mode = "3-Pass"
- 品質 > エンコード時間
- 「"2-Pass"と変わらない」意見が多い中、このPresetsだと差異が視認できましたので。
- overall.video.bitrate = "512"
- このBitrateで、動画ファイルサイズは約100MB/30min. (高速な流体描写のない)1280x720のアニメなら、十分キレイだと思う。
- iPadでコマ落ち・ノイズ等を確認して、必要なら"768 Kbps"、更に"1024 Kbps"以上を試す。
- overall.playback.preview = "Disabled"
- audioenc.faac.quality = "72"
- 元audioのBitRateが64bps程度なら"48"、128bps以上なら"72"。音質重視の場合は"96"or"128"とか。
- audioenc.faac.container = "MP4"
- Defaultの"AAC"だと、生成されたAudioファイルを再利用・再結合できないみたい?
- audioenc.aacplus.type = "LC-AAC"
- 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.deblockAlpha = "-1"
- debloking filter有効(default)時に使われる。画質がSharpに。
- videoenc.x264.deblockBeta = "-1"
- videoenc.x264.qpmin = "1"
- videoenc.x264.qcomp = "90"
- Bitrateの変動幅を大きく、画質の変動を小さく。
- videoenc.x264.allpart = "true"
- videoenc.x264.me = "Uneven Multi-Hexagon"
- videoenc.x264.me_range = "64"
- 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"
- videofilter.scale.dsize = "true"
- 上記3つは、通常は利用されない。Scale Filter有効時に適応される。
- videofilter.frame.fps = "30000"
- videofilter.frame.fpsScale = "1001"
- 上記2つは、通常は利用されない。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"
元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"以上を試す。
元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.2.7-update1 †
- 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をできるだけ変えたくない)