要件
事前に定義された重複時間で 2 つのオーディオ ファイルを連結したいと思います。
たとえば、10 秒のオーバーラップが定義されている場合、最初のオーディオの最後の 10 秒と 2 番目のオーディオの最初の 10 秒が出力でオーバーラップされます。
|<---- 1st mp3 file --------------------> |
| <-----------2nd mp3 file ------------->|
result:
|<-----------------------(overlap 10 sec )--------------------->|
答え1
使用
ffprobe
期間を取得する最初の mp3 ファイル。実行
ffmpeg
方法遅れ音声を遅らせ、混合2 つのオーディオ ストリームを 1 つにミックスするには:ffmpeg -i 1.mp3 -i 2.mp3 -filter_complex "[1]adelay=Ns|Ns[a1];[0:a][a1]amix=inputs=2[a]" -map "[a]" output.mp3
Ns
=1.mp3 duration
-overlap duration
。たとえば、1.mp3
が 30 秒で、10 秒のオーバーレイが必要な場合は、 を使用します20s|20s
。これは
2.mp3
ステレオであると想定しています。バージョン 4.2 より古い場合は
ffmpeg
、 のように、adelay で秒ではなくミリ秒を使用します20000|20000
。-map "[a]"
ffmpeg
は、amixからの出力を任意にラベル付けして使用するように指示します[a]
。それ以外の場合は、デフォルトのストリーム選択動作が使用されます。それが問題でなく、意味を理解している場合は、ラベルと-map
( など...amix=inputs=2" output.mp3
)を省略してください。また、-map
ドキュメンテーション。