2010-10-02

静止画と音声ファイルをFFMPEGで結合する

使い道は、動画投稿サイト位だと思うのですが、音声ファイルに静止画を動画として結合する方法。

今回の前提条件は、
  1. 音声はファイルはMPEG4-AACで圧縮済みで再圧縮しない (今回の参考:audio_example.m4a)
  2. 使う静止画像は1枚で、フォーマットはPNG、解像度は画像側に従う (今回の参考:640x480px,graphic_example.png)
  3. 出力形式はMPEG4フォーマット (今回の参考:out_example.mp4)
  4. 映像部分のビットレートは100kbps、フレーム数は1fpsで圧縮、コーデックはMPEG4
  5. 使用した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 コメント:

コメントを投稿