グーグル翻訳の音声をダウンロードし、静止画像に乗せてmp4動画を作成します。うち、 set_image.sh は 動画用画像ファイルをHTMLから作成する - あるStray Engineer の日記 で作成したスクリプトです。一方、 make_sound.sh は音声ファイルを作成するスクリプトで Googleの読み上げ機能を利用して音声ファイルを作る - あるStray Engineer の日記 が参考になります。
ひとつ注意点ですが、変数 ${ch},${py},${ja} は export で上位のスクリプトから引き渡すようにして下さい。そうすると、一つの静止画に音声が乗ったmp4ファイルが一つ自動的に作成されます。
#!/bin/bash sdoc=\ "make_mp4_uniq.sh \n"\ " mp4動画ファイルを作成します\n\n"\ " [option] \n"\ " audio=音声ファイル\n"\ " output=動画ファイル(.mp4)\n"\ "\n\n\n" export sdoc audio=`getparstr $# "$*" "audio"` output=`getparstr $# "$*" "output"` #ch="凉面" #py="Liáng miàn" #ja="冷たいそば" # 必要な引数の確認 for var in output ch py ja do if [ -z "${!var}" ] then usage printf "関数 %s の変数 ${var} に値がありません\n" `basename $0` exit fi done export ch py ja audio prog/set_image.sh prog/make_sound.sh ffmpeg \ -y -loop 1 \ -i image.png -i sound.wav \ -vcodec libx264 \ -pix_fmt yuv420p \ -shortest \ ${output} rm image.png sound.wav
これを所望の回数ループさせることによって動画群を作成し、最後に結合を行います。
input=` for id in ${id_s[@]} do printf " -i uniq/output%d.mp4 " ${id} done` echo ${input} ${#id_s[*]} sleep 20 ffmpeg -y ${input} -filter_complex "concat=n=${#id_s[*]}:v=1:a=1" ${mp4file}
変数 ${input} には動画群のファイル名が列挙されています。一方、${#id_s[*]} は動画群のファイル数を示します。