iPod / 最新ffmpeg用設定
<変更履歴>
(2007/12/09) ini ファイルの内容を再度吟味して修正したものを再アップしました。
(2007/12/25) 変換君同梱のffmpeg向け解説とページを分けました。またiniファイル類を一つのファイルにまとめました。
(2007/12/25) 初回アップ時に WMV 用の ini に不具合があったので差し替えアップ
最新版FFmpegをつかったiPod(5G)用動画変換設定 †
最新ffmpegと変換君の組み合わせでiPod動画変換するためのiniファイルを作成してみました。
一部オプション周りが変わっているのでそのあたりを変更しています。また音声のエンコードは Nero でやるようにしています。
多分 iPod Classic, Touch, nano 3G にも流用可能と思われますが、検証できないので保証はできません。
上記の機種で使用してうまく再生できた方はこのページのコメント欄か報告板にでもコメントいただければと思います。
通常のファイル用 †
ffmpeg を使って、通常のファイル変換を行う ini ファイルです。
必要なもの †
iniの記述例 †
2ch の iPod 動画スレとか Doom9 とかその辺にある情報を参考にして作った例です。
これらの場に情報を提供なさっている方々に感謝します。
また、以下の設定だと変換時間は ffmpeg のデフォルトよりもだいぶかかります。
iPodに入れる動画にそんなにこだわる必要ないという人はオプションを適宜削ってください。
- QVGA (320x240) / アスペクト比 4:3 で映像・音声とも 2pass の例
- [Item*]
Title=QVGA (4:3)/FFMpeg libx264 384kbps 2pass/Nero AAC-LC 2ch 48KHz 96kbps 2pass
TitleE=QVGA (4:3)/FFMpeg libx264 384kbps 2pass/Nero AAC-LC 2ch 48KHz 96kbps 2pass
FileNameMax=59
Command0=""<%AppPath%>\cores\ffmpeg.exe" -y -i "<%InputFile%>" -vn -acodec pcm_s16le -ac 2 -ar 48000 "<%TemporaryFile%>_a.wav""
Command1=""<%AppPath%>\cores\NeroAACEnc.exe" -lc -2pass -br 96000 -if "<%TemporaryFile%>_a.wav" -of "<%TemporaryFile%>_a.mp4""
Command2=""<%AppPath%>\cores\ffmpeg.exe" -y -i "<%InputFile%>" -pass 1 -passlogfile "x264_2pass" -threads auto -s 320x240 -vcodec libx264 -coder vlc -level 30 -b 384k -bt 1536k -bufsize 2048k -maxrate 1536k -g 300 -keyint_min 30 -qmin 10 -qmax 51 -qdiff 4 -qcomp 0.6 -partitions parti4x4+partp8x8 -sc_threshold 40 -me_method umh -me_range 16 -subq 6 -cmp chroma -flags loop -refs 3 -flags2 mixed_refs -i_qfactor 0.7142857 -rc_eq "blurCplx^(1-qComp)" -an -f mp4 "<%TemporaryFile%>_v.mp4""
Command3=""<%AppPath%>\cores\ffmpeg.exe" -y -i "<%InputFile%>" -pass 2 -passlogfile "x264_2pass" -threads auto -s 320x240 -vcodec libx264 -coder vlc -level 30 -b 384k -bt 1536k -bufsize 2048k -maxrate 1536k -g 300 -keyint_min 30 -qmin 10 -qmax 51 -qdiff 4 -qcomp 0.6 -partitions parti4x4+partp8x8 -sc_threshold 40 -me_method umh -me_range 16 -subq 6 -cmp chroma -flags loop -refs 3 -flags2 mixed_refs -i_qfactor 0.7142857 -rc_eq "blurCplx^(1-qComp)" -an -f mp4 "<%TemporaryFile%>_v.mp4""
Command4=""<%AppPath%>\cores\NicMP4Box.exe" -add "<%TemporaryFile%>_v.mp4" -add "<%TemporaryFile%>_a.mp4" -new "<%OutputPath%><%RandomNumber6%>.mp4""
Command5="cmd /c "move /y "<%OutputPath%><%RandomNumber6%>.mp4" "<%OutputFile%>.mp4"""
Command6="cmd /c "del /f "<%AppPath%>\x264_2pass*.log"""
Command7="cmd /c "del /f "<%TemporaryFile%>_*.*"""
- VGA (640x480) / アスペクト比 4:3 で映像・音声とも 2pass の例
- [Item*]
Title=VGA (4:3)/FFMpeg libx264 1.5Mbps 2pass/Nero AAC-LC 2ch 48KHz 160kbps 2pass
TitleE=VGA (4:3)/FFMpeg libx264 1.5Mbps 2pass/Nero AAC-LC 2ch 48KHz 160kbps 2pass
FileNameMax=59
Command0=""<%AppPath%>\cores\ffmpeg.exe" -y -i "<%InputFile%>" -vn -acodec pcm_s16le -ac 2 -ar 48000 "<%TemporaryFile%>_a.wav""
Command1=""<%AppPath%>\cores\NeroAACEnc.exe" -lc -2pass -br 160000 -if "<%TemporaryFile%>_a.wav" -of "<%TemporaryFile%>_a.mp4""
Command2=""<%AppPath%>\cores\ffmpeg.exe" -y -i "<%InputFile%>" -pass 1 -passlogfile "x264_2pass" -threads auto -s 640x480 -vcodec libx264 -coder vlc -level 30 -b 1500k -bt 6000k -bufsize 2048k -maxrate 6000k -g 300 -keyint_min 30 -qmin 10 -qmax 51 -qdiff 4 -qcomp 0.6 -partitions parti4x4+partp8x8 -sc_threshold 40 -me_method umh -me_range 16 -subq 6 -cmp chroma -flags loop -refs 1 -flags2 mixed_refs -i_qfactor 0.7142857 -rc_eq "blurCplx^(1-qComp)" -an -f mp4 "<%TemporaryFile%>_v.mp4""
Command3=""<%AppPath%>\cores\ffmpeg.exe" -y -i "<%InputFile%>" -pass 2 -passlogfile "x264_2pass" -threads auto -s 640x480 -vcodec libx264 -coder vlc -level 30 -b 1500k -bt 6000k -bufsize 2048k -maxrate 6000k -g 300 -keyint_min 30 -qmin 10 -qmax 51 -qdiff 4 -qcomp 0.6 -partitions parti4x4+partp8x8 -sc_threshold 40 -me_method umh -me_range 16 -subq 6 -cmp chroma -flags loop -refs 1 -flags2 mixed_refs -i_qfactor 0.7142857 -rc_eq "blurCplx^(1-qComp)" -an -f mp4 "<%TemporaryFile%>_v.mp4""
Command4=""<%AppPath%>\cores\NicMP4Box.exe" -add "<%TemporaryFile%>_v.mp4" -add "<%TemporaryFile%>_a.mp4" -new "<%OutputPath%><%RandomNumber6%>.mp4""
Command5="cmd /c "move /y "<%OutputPath%><%RandomNumber6%>.mp4" "<%OutputFile%>.mp4"""
Command6="cmd /c "del /f "<%AppPath%>\x264_2pass*.log"""
Command7="cmd /c "del /f "<%TemporaryFile%>_*.*"""
詳しくは添付ファイル中の説明書きと ini ファイルをみてください。
そのほかTips (libx264 を使って変換する場合) †
- 2pass or 1pass ABR でビットレートが指定値を大幅にオーバーする
- -qmax が小さすぎる場合 -qmax の値を上げてみてください。また -bt オプションの値を指定ビットレート (-b オプションの値) の1〜4倍程度にしてください。
- 最大ビットレートが高すぎてiPodで再生するとカクつくことがある
- -maxrate 指定は -bufsize も指定しないと有効になりません。ちなみに iPod 動画における -bufsize の推奨値は 2000k (2000kbit) らしいです。
- 1pass -crf すると特定のシーンで絵が破綻することがある
- 原因としては、
- (1) Iフレームが適切に挿入されていない
→ -sc_threshold の値を上げ (実写:50〜60、アニメ:60〜80 程度まで) てみてください
あわせて -keyint_min 1 (これのデフォルトは7) も指定してみてください。
- (2) Pフレームに適用されるq値が大きすぎる
→ -qmax を下げます。1pass -crf の場合は qmax 28〜32 程度をお勧めします。
- 映像の細部がつぶれる
- ビットレートを上げる、-partitions で parti4x4+partp8x8 を指定してみる、-flags loop を無くしてデブロックフィルタを切ってみる、等。
- ブロックノイズがでる
- ソースに対してビットレートが圧倒的に足りない場合は、ビットレートを増やす以外に回避策はありません。
または -flags loop で内蔵デブロックフィルタをONにし、-deblockalpha -deblockbeta を1〜3くらいで指定すると多少は改善するかもしれません。
- (ブロックノイズではない通常の) ノイズが気になる
- -nr オプションで x264 のノイズリダクションが使えます。-nr 100〜500 くらいで調節してみてください。-nr 入れてもエンコードにかかる時間はほとんど変わりません。
- エンコードが遅すぎる
- -refs 3→1にする、-me_method umh→hex or epzsにする、-me_range 16→8〜12と値を下げる、-subq 6→5 と値を下げる、-cmp chroma を
無くす、-partitions オプションをなくす等、Analysis 系のオプションを軽いものに変えてみてください。
また 2pass エンコの 1pass 目は -partitions を無しにして、-refs 1 -me_method epzs -subq 1 とかでやってもいいかもしれません (いわゆる turbo モード)。
変換がうまくできない WMV 形式の動画用の特殊設定 †
可変フレームレートの WMV 形式 (WMV+WMA in ASFコンテナ) ファイルは単に ffmpeg に食わせるだけだとうまく変換できない場合があります。
Avisynthを使用して読み込む の方法でやれば大抵はうまく行きますが、フレームレートの変換が入るので動きの滑らかさが損なわれたりします。
iPod の場合可変フレームレートの mp4 も問題なく再生できるので、初めから可変フレームレートにしてしまういう選択肢もあります。
多少手間はかかりますがソースに忠実に変換できるという利点もありますので、必要に応じて使ってみてください。
必要なもの †
あと、この記事に添付してあるファイルをダウンロード & 解凍して、中の説明書きにしたがって必要なファイルをコピーしてください。
3GP_Converter.ini の編集 †
変換君のデフォルトでは WMV を自動的に AviSynth を利用して読み込みます。
今回の ini では必要な avs は自前で生成するのでこの機構が働いてしまうとうまく行きません。
そのため、3GP_Converter.ini でDisableAVS=1にしてこの機能を無効にしてください。
変換方法 †
差し替えた ini を読み込むと [WMV] で始まるメニューがあるので、それを選択して wmv ファイルを D&D してください。
実行テストには以下のページからダウンロードできるムービーとかを使うといいと思います。
iniの内容 †
- QVGA (320x240) / アスペクト比 4:3 で映像・音声とも 1pass の例
- [Item1]
Title=[WMV] QVGA (4:3)/FFMpeg libx264 CRF 22.0/Nero AAC-LC 2ch 48KHz Q=0.40
TitleE=[WMV] QVGA (4:3)/FFMpeg libx264 CRF 22.0/Nero AAC-LC 2ch 48KHz Q=0.40
Command0=""<%AppPath%>\cores\makeavs_a.cmd" "<%AppPath%>" "<%InputFile%>" "<%TemporaryFile%>_a.avs""
Command1=""<%AppPath%>\cores\ffmpeg.exe" -y -i "<%TemporaryFile%>_a.avs" -vn -acodec pcm_s16le "<%TemporaryFile%>_a.wav""
Command2=""<%AppPath%>\cores\NeroAACEnc.exe" -lc -q 0.40 -if "<%TemporaryFile%>_a.wav" -of "<%TemporaryFile%>_a.mp4""
Command3=""<%AppPath%>\cores\ffmpeg.exe" -i "<%InputFile%>" -an -vcodec copy -f matroska "<%TemporaryFile%>_tmp1.mkv""
Command4=""C:\Program Files\MKVtoolnix\mkvmerge.exe" -o "<%TemporaryFile%>_tmp2.mkv" -A -S "<%TemporaryFile%>_tmp1.mkv" --timecode-scale 120000"
Command5=""C:\Program Files\MKVtoolnix\mkvextract.exe" timecodes_v2 "<%TemporaryFile%>_tmp2.mkv" 1:"<%TemporaryFile%>_tm.txt""
Command6=""C:\Program Files\Haali\MatroskaSplitter\mkv2vfr.exe" "<%TemporaryFile%>_tmp2.mkv" "<%TemporaryFile%>_v.avi"
Command7=""<%AppPath%>\cores\makeavs_v.cmd" "<%AppPath%>" "<%TemporaryFile%>_v.avi" "<%TemporaryFile%>_v.avs" 320 240"
Command8=""<%AppPath%>\cores\ffmpeg.exe" -y -i "<%TemporaryFile%>_v.avs" -threads auto -vcodec libx264 -crf 22.0 -level 30 -coder vlc -qmin 12 -qmax 30 -qdiff 6 -refs 3 -subq 6 -me_method umh -me_range 16 -partitions parti4x4+partp8x8 -cmp chroma -flags loop -flags2 mixed_refs -g 240 -keyint_min 1 -sc_threshold 60 -qcomp 0.6 -i_qfactor 0.7142857 -rc_eq "blurCplx^(1-qComp)" -an -f mp4 "<%TemporaryFile%>_v.mp4""
Command9=""<%AppPath%>\cores\tc2mp4mod.exe" -i "<%TemporaryFile%>_v.mp4" -t "<%TemporaryFile%>_tm.txt" -o "<%TemporaryFile%>_vfr.mp4" -T 120000 -b 1001 -L "<%AppPath%>\cores\mp4box.exe""
Command10=""<%AppPath%>\cores\NicMP4Box.exe" -add "<%TemporaryFile%>_vfr.mp4" -add "<%TemporaryFile%>_a.mp4" -new "<%OutputPath%><%RandomNumber6%>.mp4""
Command11="cmd /c "move /y "<%OutputPath%><%RandomNumber6%>.mp4" "<%OutputFile%>.mp4"""
Command12="cmd /c "del /f "<%TemporaryFile%>_*.*"""
太字の部分は、MKVToolnix や Haali をインストールしたフォルダに対応させて書き換えてください(一応、上記がデフォルトのインストール先です)。
解像度を変えたい場合は Command7 の 320 240 を 640 480 とかにして(5G, 5.5G は -refs も 3→1 に変えないとダメですが) ください。
一応、
- 映像部分が WMV8, WMV9 , WMV9 Advanced Profile
- 音声部分が WMA9, WMA10 Professional (24Bit音声、5.1chも多分大丈夫)
のWMV形式ファイルの変換については問題なくできることを確認しています。
コメントはありません。 コメント/iPod/NewFFmpeg?