uzullaがブログ

uzullaがブログです。

サーバサイドで動画を三つ横にならべたり繋いだり

(検閲削除)で、必要があってdemoをつくったのだが(検閲削除*1)で使わなくなってしまったので、ここにメモっておく。

  • (動画の尺を合わせる、ただしこのdemoでは書いて無い)
  • 入力動画のリサイズ(ただしこのdemoでは雑)
  • 指定した動画を横に並べた動画を生成する
  • タイトル動画と、生成したその動画を普通に接続する
  • (オーバーレイをいれる、ただしこのdemoでは書いて無い)
  • (BGMをいれる、ただしこのdemoでは書いて無い)

オチ

ffmpeg -i 1.mov -i 2.mov -i title.mp4 -filter_complex "
[0:0]scale=427:720[v0];
[1:0]scale=426:720[v1];
[0:0]scale=427:720[v2];
[v0]pad=1280[vv0];
[vv0][v1]overlay=427[vv0];
[vv0][v2]overlay=427+426[vvv];
[2:0][vvv]concat=n=2:v=1
" out.mp4
  • リサイズして
  • 一番左に置く動画に余白を突くって
  • オフセットしながらならべて
  • タイトルをつなげている

とにかくfilter_complexをつかえばどうにかなる、ffmpeg最高!!

難点は異常に読みづらくて、パラメタも大分わかりづらいし、リファレンスのwikiも大層見づらい(https://trac.ffmpeg.org/wiki)という所だな…。

まあ、探せばWrapperとかありそう(探してはいない)

もっと複雑な場合は実際どうやってるんだろう

サーバサイドで動画を合成したり生成したりという要件がたまーーにくるのだが、これくらい単純な物はffmpegでよいとして、もっと高度なのはどうやるのがいいんだろう?(具体例:Facebookとかでたまにくる、写真を動画にしたてあげるようなやつ)

1枚1枚画像を生成してやっていく、というのは想像がつきますが、どう考えても大変。ヘッドレスFlashPlayerみたいなのがあれば楽だろうが…。 MAXやvvvvみたいなのでガーンとやるのかな。もしご存じの方がいれば、是非ソフトウェア名や言語、ライブラリなどのポインタだけでも教えていただけませんでしょうか。

まとめ

テストタイトルとかいてあるだけの動画を用意するためだけにPremiereを久々に起動した(そこもffmpegでいいじゃないかといわれればまったくそうだ)。

そもそもffmpegでなくPremiereをつかえばすぐにできる事をffmpegでややこしくやらないといけないのがバリューである*2

*1:平たく言えば、失注

*2:勿論Premiereはサーバーサイドでプログラマブルにうごかしたりするのは現実的ではないので