今回の前提条件は、
- 音声はファイルはMPEG4-AACで圧縮済みで再圧縮しない (今回の参考:audio_example.m4a)
- 使う静止画像は1枚で、フォーマットはPNG、解像度は画像側に従う (今回の参考:640x480px,graphic_example.png)
- 出力形式はMPEG4フォーマット (今回の参考:out_example.mp4)
- 映像部分のビットレートは100kbps、フレーム数は1fpsで圧縮、コーデックはMPEG4
- 使用したFFmpeg version SVN-r25157
コマンドラインはこうなります。
ffmpeg -loop_input -shortest -i "graphic_example.png" -r 1 -b 100k -i "audio_example.m4a" -vcodec mpeg4 -acodec copy "out_example.mp4"
-loop_inputは、画像ファイルを再帰的に呼び出すためのオプション。(これがなければ、初めの1フレームだけ有効になります。)
-shortestは、音声ファイル長に合わせて最短でloop_inputを抜けるためのオプション。
(これがなければ、loop_inputにより、永遠にエンコードが続きます)
ちなみに画像フォーマットはPNGに限らず、BMPでもJPEGでも行けますのでお好きにどうぞ。(他もありますが)
また、出力したい動画のピクセル数で作成した方が良いと思います。
ffmpegの-sオプションで小さくするのは良いでしょうが、大きくするのは無理があると思いますので。
例えば、HDの16:9で作りたいなら1280×720pxとか。
その場合、映像ビットレートも増やす必要が有るかも知れません。
ffmpeg側でいろいろいじれるので、下ごしらえ無しにオプション多用して、いきなり変換しても良いとは思います。
vfのpadとかで埋めてしまう、cropで切る等も難解になりますが、出来ますので…。
個人的には音声ファイルは投稿サイトの再変換かかるので、そのまま使うのが良いと思います。(wmaだったらwmv形式に出力するとか)
投稿サイトの再圧縮無しのフォーマットで作ってUPする方法や、綺麗に作って再圧縮に耐える様と言う方法もありますが。
0 コメント:
コメントを投稿