例えば、子供向けに、一問一問別ファイルになったなぞなぞ音声ファイルのうちから 3問だけランダムに抜き出して、ひとつの音声ファイルにしてダウンロードさせるとか、まあ、そういう感じのデモ要件があるので、プログラムを作ってみた。
まあ、ffmpeg 使えば一発なんだけどね。
プログラム的には、結合する 3つのファイルをランダムにもとめて、そのファイル名を i オプションと一緒に連結していくだけ。(ひとつのファイルごとに i オプションは必要なので注意)
下のように編集したオプションで ffmpeg を実行するだけだ。
(出力ファイル名を毎回同じにするなら、上書き許可の y オプションもお忘れなく。プログラム内から呼ぶのであれば、ffmpeg は大量のログを標準出力に出すので、loglevel オプションでの抑制もお忘れなく)
赤いところがプログラムの編集が必要なところ。
Tweet
まあ、ffmpeg 使えば一発なんだけどね。
プログラム的には、結合する 3つのファイルをランダムにもとめて、そのファイル名を i オプションと一緒に連結していくだけ。(ひとつのファイルごとに i オプションは必要なので注意)
下のように編集したオプションで ffmpeg を実行するだけだ。
(出力ファイル名を毎回同じにするなら、上書き許可の y オプションもお忘れなく。プログラム内から呼ぶのであれば、ffmpeg は大量のログを標準出力に出すので、loglevel オプションでの抑制もお忘れなく)
/usr/bin/ffmpeg -y -i /data/11.mp3 -i /deta/7.mp3 -i /data/5.mp3 -loglevel quiet -filter_complex "concat=n=3:v=0:a=1" /data/nazonazo.mp3
赤いところがプログラムの編集が必要なところ。
n=3 は入力ファイルの数で、最後の /data/nazonazo.mp3 が出力ファイル名だ。
連結対象のファイルの個数が変わらないのなら n=3 のところは変更不要だし、毎回同じファイルに書くのなら /data/nazonazo.mp3 も編集不要。
結合したファイルを聞いてみたが、つなぎ目に変なノイズが入ることもなく、なかなかいい感じであった。
結合したファイルを聞いてみたが、つなぎ目に変なノイズが入ることもなく、なかなかいい感じであった。
コメントする