【ffmpeg】動画の音声を無音に差し替える方法

動画にある音声ファイルを lavfilter の aevalsrc を使って無音に差し替える方法。

規定値は、モノラルの44.1kHz
ffmpeg -f lavfi -i aevalsrc=0 out.mp3

8000Hz にして容量を小さくする
ffmpeg -f lavfi -i aevalsrc=0:s=8000 out.mp3

指定秒分だけの無音ファイルを作る場合には -t 秒 を指定する
60秒 8000Hz mp3 無音ファイルを作る例
ffmpeg -t 60 -f lavfi -i aevalsrc=0:s=8000 out.mp3

フィルタでも秒指定が可能
60秒 8000Hz mp3 無音ファイルを作る例
ffmpeg -f lavfi -i aevalsrc=0:s=8000:d=60 out.mp3
複数のファイルを取り込んだ場合に時間の短い方の時間で出力する
-shortest

映像に音声がついていない場合に無音の音声ファイルを付ける
ffmpeg -i videoonly -f lavfi -i aevalsrc=0 -shortest out.mp4

動画に音声がついている場合に無音に差し替える
ffmpeg -i video+audio -f lavfi -i aevalsrc=0 -map 0:0 -map 1:0 -shortest out.mp4

無音以外にも特定の周波数の音声ファイルを作ることもできる

公式サンプルより
ffplay -f lavfi -i aevalsrc="sin(420*2*PI*t):cos(430*2*PI*t):c=FC|BC"
ffplay -f lavfi -i aevalsrc="sin(440*2*PI*t):s=8000"
ffplay -f lavfi -i aevalsrc="-2+random(0)"
ffplay -f lavfi -i aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
ffplay -f lavfi -i aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) : 0.1*sin(2*PI*(360+2.5/2)*t)"


以下追記 2013年6月6日

具体的な設定方法


  • channel_layout, c
    チャンネル指定、数字でも配置していでも可能:規定値は 1(モノラル)
  • duration, d
    音声の長さ(秒):規定値は無指定
  • nb_samples, n
    チャンネルあたりのサンプル数:規定値は 1024
  • sample_rate, s
    サンプリング周波数:規定値は 44100
  • n
    サンプル数を返す:0 から始まる
    サンプリング周波数が 44100 の場合、441 を指定すると 0.01 秒の事になる
  • t
    時間を返す(単位は秒):0 から始まる
  • s
    サンプルレートを返す

多チャンネルの無音ファイルを作る場合


これは2チャンネルで 48kHz 10秒の無音 WAVファイル
ffmpeg -f lavfi -i aevalsrc=0:0:s=48000:c=FL+FR:d=10 out.wav

0:0 は各チャンネルの音声の周波数、0 は無音になる。0 の数を増やすことで多チャンネルの無音ファイルを作ることができる。

これは 5.1チャンネルで 48kHz 10秒の無音 WAVファイル
ffmpeg -f lavfi -i aevalsrc=0:0:0:0:0:0:s=48000:c=5.1:d=10 out.wav

関連記事
FFmpeg documentation : : aevalsrc
FFmpeg documentation : : Expression Evaluation
関連記事

コメント

非公開コメント

プロフィール

ロベルト

お問い合わせはこちらまで
robelt2525[at]gmail.com

中の人 @nico_lab

広告リンク
Amazon
楽天市場

ブログ更新用 @blo_nico_lab

詳しいプロフィールはこちら

当ブログは、Amazonアソシエイトに参加しています。