adelayフィルタは音声のチャンネル毎に無音の挿入ができたが、このapadフィルタはまとめて末尾に無音を挿入する。映像は何もしないので無音を挿入すると映像と音声の時間が異なるファイルになる。

音声の先頭に無音を挿入する adelay
映像の前後にフレームを挿入する tpad

基本コマンド

オプション無指定だと無限に無音を挿入するので-tを併用する。
ffmpeg -i audio -af "apad" -t 60 output

音声の末尾に10秒無音を挿入する。
ffmpeg -i audio -af "apad=pad_dur=10" output

入力した音声を含めて300秒(5分)になるように無音を挿入する。
ffmpeg -i audio -af "apad=whole_dur=300" output
ffmpeg -i audio -af 'apad=whole_dur=00\:05\:00' output

音声の末尾に48,000サンプルの無音を挿入する。
ffmpeg -i audio -af "apad=pad_len=48000" output

時間の長い1入力目のファイルに、時間の短い2入力目のファイルの末尾に無音を挿入して同じ時間に揃えて多重化する。
ffmpeg -i audio1 -i audio2 -filter_complex "[1:a]apad[1a]" -shortest -map 0:a:0 -map [1a] -c:a:0 copy -c:a:1 aac output.mkv

公式ドキュメント:FFmpeg Filters Documentation : apad

Both whole and pad length are set, this is not possible

pad_len|pad_durwhole_len|whole_durを併用すると「Both whole and pad length are set, this is not possible」がでてエラーになる。そのほかにも以下のような時間指定でも同じエラーになる。10秒の音声ファイルに後ろ5秒の無音を挿入する。
ffmpeg -i 10s.wav -af "apad=whole_dur=00:15:00" 15s.wav
ffmpeg -i 10s.wav -af "apad=pad_dur=00:00:05:whole_dur=00:15:00" 15s.wav
ffmpeg -i 10s.wav -af "apad=pad_dur=00:00:05" 15s.wav

逆にこちらはエラーにならない。
ffmpeg -i 10s.wav -af "apad=whole_dur=15" 15s.wav
ffmpeg -i 10s.wav -af "apad=pad_dur=5:whole_dur=00:15:00" 15s.wav
ffmpeg -i 10s.wav -af "apad=pad_dur=5" 15s.wav

このエラーを直すには:をエスケープしなければならない。
ffmpeg -i 10s.wav -af "apad=whole_dur=00\\:15\\:00" 15s.wav
ffmpeg -i 10s.wav -af "apad=pad_dur=00\\:00\\:05:whole_dur=00\\:15\\:00" 15s.wav
ffmpeg -i 10s.wav -af "apad=pad_dur=00\\:00\\:05" 15s.wav

シングルクオートで挟んでいればエスケープは1つでよい。
ffmpeg -i 10s.wav -af 'apad=whole_dur=00\:15\:00' 15s.wav
ffmpeg -i 10s.wav -af 'apad=pad_dur=00\:00\:05:whole_dur=00\:15\:00' 15s.wav
ffmpeg -i 10s.wav -af 'apad=pad_dur=00\:00\:05' 15s.wav

オプション

音声時間よりも短い時間でwhole_len、whole_durを指定すると無音は挿入しない。

  • packet_size[int]
    パケットサイズの指定
    既定値:4096
    範囲:0からINT_MAXまで
  • pad_len[int64]
    音声の末尾に挿入するパケット数
    既定値:-1(無限)
    範囲:1からI64_MAXまで
  • whole_len[int64]
    無音を含めた音声全体のパケット数。pad_lenの方を優先する
    既定値:-1(無限)
    範囲:1からI64_MAXまで
  • pad_dur[duration]
    音声の末尾に挿入する時間
    既定値:0
  • whole_dur[duration]
    無音を含めた音声全体の時間。pad_durの方を優先する
    既定値:0

2 thoughts on “音声の末尾に無音を挿入する apad

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)