ちょっと夕方になってきまして肌寒くなってきちゃいましたね
さてさて、今回の記事は「自分でカスタマイズするffmpegエンコード式」というのを紹介してみたいと思います♪
基本は前にこちらでも載せてましたエンコード式を元にして、そこから削っていったり、式を書き換えてみるというコトをやってみたいと思います★
【2009年11月27日更新】重要なお知らせ
gooブログには半角エンマークを挟んだ記事が投稿できなさそうですので、みなさん本当にすいませんが、必ず記述式には
Command0=""<%AppPath%>coresffmpeg"
の部分を
Command0=""<%AppPath%>
半角エンマークcores
半角エンマークffmpeg" として記述しなおすような形でお願いしますorz
実はそんなに難しくないFFmpegエンコード式
初めてエンコードとかする人だと、ちょっとあのズラリとならんじゃってる文字列に戸惑うこともあると思いますが、多分今まで用意してきた式だと「ここをもっとこうしたい」っていうのが出てくると思います。
例えば、この式を応用してノートPCでHD動画を見たいんだけど…とかいうことにも使えたりするので、多分知っておいて損は無いように…してみたいと思いますorz
とりあえずこの式を元に組み替えていきます
まずは一番最初に紹介してましたこちらの式を組み替えていきますね
---------------
[Item0]
Title=【2-CPU】ビデオ650kbps 23.976fps ステレオ 256kbps
TitleE=<2-CPU>Video 650k 23.976fps stereo 256kbps
Command0=""<%AppPath%>coresffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -threads 3 -aspect 16:9 -vcodec libxvid -trellis 2 -subq 7 -qns 3 -mbd 2 -me_range 7 -subq 7 -partitions parti4x4+partp8x8+partp4x4 -cmp chroma -flags bitexact+mv4+qpel+aic+gmc -async 100 -vtag XVID -s 400x224 -r 24000/1001 -b 650k -acodec libmp3lame -ac 2 -ar 44100 -ab 256k -f avi "<%OutputFile%>.avi""
---------------
うわぁ…結構文字数が多いですね…
でも大丈夫です
これも順を追って説明していきますね♪
ここから変更していく箇所は
この太字でマークしていきますので、ご一緒にどうぞ♪
タイトルを変えたい
この赤枠の中のメニューのことを「タイトル」と呼んでいます。
ここの表示を例えば
【アニメタイトル1専用】とか、自分自身が「このアニメタイトルはこの設定でしかエンコードしない」という場合とかに見分けやすいメニューにしてみたいと思います。
その例で行くとここは
[Item0]
Title=アニメタイトル1専用設定
TitleE=Encode setting for The Anime Title1
Command0=""<%AppPath%>coresffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -threads 3 -aspect 16:9 -vcodec libxvid -trellis 2 -subq 7 -qns 3 -mbd 2 -me_range 7 -subq 7 -partitions parti4x4+partp8x8+partp4x4 -cmp chroma -flags bitexact+mv4+qpel+aic+gmc -async 100 -vtag XVID -s 400x224 -r 24000/1001 -b 650k -acodec libmp3lame -ac 2 -ar 44100 -ab 256k -f avi "<%OutputFile%>.avi""
とします。
基本的に自分自身しか使わないのであれば、一行目のTitle=だけを編集しておけば大丈夫です。
その下のTitleE=は、英語圏の人にも使わせたい場合だけに有効です。
CPUのスレッドをもっと使わせたい
ffmpegでスレッドを分岐させても、時々それが命令したとおりにはスレッドをうまく使ってくれない場合があります。
AMDのCPUとかだとかなりキレイにこの数字のまま分岐してくれるのですが、INTELのCPUとかだとちょっとだけCPU使用率が余っちゃってたり…っていうコトも結構あったりするので、その場合にはここの数字を増やします。
[Item0]
Title=【2-CPU】ビデオ650kbps 23.976fps ステレオ 256kbps
TitleE=<2-CPU>Video 650k 23.976fps stereo 256kbps
Command0=""<%AppPath%>coresffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>"
-threads 3 -aspect 16:9 -vcodec libxvid -trellis 2 -subq 7 -qns 3 -mbd 2 -me_range 7 -subq 7 -partitions parti4x4+partp8x8+partp4x4 -cmp chroma -flags bitexact+mv4+qpel+aic+gmc -async 100 -vtag XVID -s 400x224 -r 24000/1001 -b 650k -acodec libmp3lame -ac 2 -ar 44100 -ab 256k -f avi "<%OutputFile%>.avi""
-Threads 3というのが今の設定ですが、これは2CPUのスレッドを活かすための大まかな数字です。
これが例えば4CPU分の仕事をさせたい場合には、-Threads 5と、実際のCPUの数に1を足した数字を入れていきます。
アスペクト比を変えたい
これは完全にもとのソースが16:9であることを前提に作られてますが、まれにその対比には収まってくれない動画とかもあります。
そういうときにはアスペクト比がサイズよりも優先して読み込まれてしまうので、そこを直します。
ここで使っている式だと、必ずアスペクト比を指定しないといけませんので、本来はこれを消すのが一番なのですが、それができないという上でここを書き直すコトにします。
もしもアスペクト比をそのままのサイズで出したい場合には
[Item0]
Title=【2-CPU】ビデオ650kbps 23.976fps ステレオ 256kbps
TitleE=<2-CPU>Video 650k 23.976fps stereo 256kbps
Command0=""<%AppPath%>coresffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -threads 3
-aspect 1:1 -vcodec libxvid -trellis 2 -subq 7 -qns 3 -mbd 2 -me_range 7 -subq 7 -partitions parti4x4+partp8x8+partp4x4 -cmp chroma -flags bitexact+mv4+qpel+aic+gmc -async 100 -vtag XVID -s 400x224 -r 24000/1001 -b 650k -acodec libmp3lame -ac 2 -ar 44100 -ab 256k -f avi "<%OutputFile%>.avi""
としてみるといいかもしれません。
この-aspect の後にくる式で例えば4:3にしたい場合にはその数字を入れたりします。
H.264のコーデックにしたい
ここをZEN X-Fi2では使えませんが、ノートPCとかで高画質に見たいっていう時にH.264コーデックを使いたいとします。
…実はこのXvidの式は完全にこのコーデック用にチューンしてありますため、そのままコーデックを変えただけではエラーを吐いてしまいます。
それなので、他の部分も一緒に変えるコトになります。
もしもH.264にしたい場合には
[Item0]
Title=【2-CPU】ビデオ650kbps 23.976fps ステレオ 256kbps
TitleE=<2-CPU>Video 650k 23.976fps stereo 256kbps
Command0=""<%AppPath%>coresffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>"
-threads 3 -aspect 16:9 -vcodec libxvid -trellis 2 -subq 7 -qns 3 -mbd 2 -me_range 7 -subq 7 -partitions parti4x4+partp8x8+partp4x4 -cmp chroma -flags bitexact+mv4+qpel+aic+gmc -async 100 -vtag XVID -s 400x224 -r 24000/1001 -b 650k -acodec libmp3lame -ac 2 -ar 44100 -ab 256k -f avi "<%OutputFile%>.avi""
まずはこの太線の文字を全部一旦消去していただいて、次の式を入れます。
-threads 3 -aspect 16:9 -vcodec libx264 -level 32 -coder 1 -bufsize 128 -g 250 -trellis 2 -subq 7 -qns 3 -mbd 2 -me_range 7 -me_method tesa -partitions parti4x4+partp8x8+partp4x4 -cmp chroma -flags bitexact+mv4+qpel+aic+obmc+gmc -async 100
一応、このままでもAVIコンテナに入れられるH.264動画として保存できますが、もしもここからさらにMP4として出力したい場合には、式の一番最後に書いてある.aviというところを.MP4にしてみるとちゃんとMP4で出力されます。
仮にPSPとかでこのままの式で使おうとするとPSPが再生できませんので、その場合にはマクロブロック数をもっと落とすために「-level 32」を「-level 13」にしてみるといいかもしれません…
出力サイズを変えたい
これは元々全部のサイズに対応したXvid専用チューンですので、HDサイズはこの式の一番の活かし所だったりしてます(汗)
サイズを変更する場合にはここを書き換えます。
[Item0]
Title=【2-CPU】ビデオ650kbps 23.976fps ステレオ 256kbps
TitleE=<2-CPU>Video 650k 23.976fps stereo 256kbps
Command0=""<%AppPath%>coresffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -threads 3 -aspect 16:9 -vcodec libxvid -trellis 2 -subq 7 -qns 3 -mbd 2 -me_range 7 -subq 7 -partitions parti4x4+partp8x8+partp4x4 -cmp chroma -flags bitexact+mv4+qpel+aic+gmc -async 100 -vtag XVID
-s 400x224 -r 24000/1001 -b 650k -acodec libmp3lame -ac 2 -ar 44100 -ab 256k -f avi "<%OutputFile%>.avi""
ここの400x224という数字を好きな数字に変えることができます。
もしもそのソースが16:9でないようなら、上のaspectのところも変える必要があります。
大体の解像度としては
携帯電話とか
640x360
高解像度PMPとか(Cowon A3等)
800x448
一般的なHD解像度(720p)
1280x720
大型液晶で映えるFULL HD
1920x1080
とかになります
ビットレートを変えたい
ビットレートもとても感単に換えることができたりしてまして、
[Item0]
Title=【2-CPU】ビデオ650kbps 23.976fps ステレオ 256kbps
TitleE=<2-CPU>Video 650k 23.976fps stereo 256kbps
Command0=""<%AppPath%>coresffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -threads 3 -aspect 16:9 -vcodec libxvid -trellis 2 -subq 7 -qns 3 -mbd 2 -me_range 7 -subq 7 -partitions parti4x4+partp8x8+partp4x4 -cmp chroma -flags bitexact+mv4+qpel+aic+gmc -async 100 -vtag XVID -s 400x224 -r 24000/1001
-b 650k -acodec libmp3lame -ac 2 -ar 44100 -ab 256k -f avi "<%OutputFile%>.avi""
ここの数字を変えていきます
数字の後についているkは「kbps」の事なので、上の式そのままだと650kbps(映像のみ)になります。
もしもこれを1.5Mbpsにしたい場合にはここを1500kとします。
最新版のffmpegからはkbpsでもMbpsでも大丈夫なようになりましたので、1.5Mbpsはそのまま1.5Mと書いてしまっても大丈夫だったりします。
ただし…なのですが、ffmpegの都合上あまり小数点は使わないほうがいいということなので、基本はkで合わせておけば大丈夫だと思いますorz
オーディオをもっと高品質にしたい
多分これはあるかな・・と思ってますが、ZEN X-Fi2のように高音質なDAPだと映像よりも音の方をもうちょっと高音質にしたい・・・という感じになったりします。
そういう時にはここを変えます。
[Item0]
Title=【2-CPU】ビデオ650kbps 23.976fps ステレオ 256kbps
TitleE=<2-CPU>Video 650k 23.976fps stereo 256kbps
Command0=""<%AppPath%>coresffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -threads 3 -aspect 16:9 -vcodec libxvid -trellis 2 -subq 7 -qns 3 -mbd 2 -me_range 7 -subq 7 -partitions parti4x4+partp8x8+partp4x4 -cmp chroma -flags bitexact+mv4+qpel+aic+gmc -async 100 -vtag XVID -s 400x224 -r 24000/1001 -b 650k -acodec libmp3lame -ac 2 -ar 44100
-ab 256k -f avi "<%OutputFile%>.avi""
ここは今256kになってますが、このままでもX-Fiを効かせてあげると結構いい音で出力してくれます。
もしももうちょっと…という時にはZEN X-Fi2だと320kbpsまで大丈夫との事なのでここを320kとします。
2-PASSにしたい
この式を組んでる限りには2-PASSの意味が全然なくなっちゃうのと、返って画質が落ちる可能性の方が高いために2-PASSにはできないようになってますorz
その他、あの呪文みたいな長い式は何?
この式にあります
[Item0]
Title=【2-CPU】ビデオ650kbps 23.976fps ステレオ 256kbps
TitleE=<2-CPU>Video 650k 23.976fps stereo 256kbps
Command0=""<%AppPath%>coresffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -threads 3 -aspect 16:9 -vcodec libxvid
-trellis 2 -subq 7 -qns 3 -mbd 2 -me_range 7 -subq 7 -partitions parti4x4+partp8x8+partp4x4 -cmp chroma -flags bitexact+mv4+qpel+aic+gmc -async 100 -vtag XVID -s 400x224 -r 24000/1001 -b 650k -acodec libmp3lame -ac 2 -ar 44100 -ab 256k -f avi "<%OutputFile%>.avi""
の部分だと思いますが、ここはそのままにしておいて上げてください(汗)
ちょっとだけ無駄な事もやってたりしますが、画質を突き詰めるための定型式だったりしてますorz
どういうことをやっているかというと、本当だとブロックノイズが出ちゃうような場面でもそこの前後のフレームを完全に読み取ってブロックノイズを出さないようにしてます。
そのためにこの式を使うとそこの最低ライン、650kbps以下ではできない・・というような感じですね。
すいませんあんまりいい説明になってませんでした
とりあえずこんな感じで式を組み替えて自分のオリジナル式を作ってみてくださいね★
では…う・・眠い…です
今何時?・・・3:21…もうダメ・・寝ますorz
今ホットミルク作りながら書いてたりしますが、寝る前に飲むと本当においしいです♪
ほっとひといき~
ではではおやすみなさい
関連がありそうな他の記事
Creative ZEN X-Fi2に関するブログ内リンク一覧
Creative ZEN X-Fi2への記事が多くなりすぎちゃいましたので、こちらで一括ターミナルしてますorz