簡體   English   中英

如何在 ffmpeg 的混音中插入某些其他聲音時停止聲音?

[英]How to stop a sound when certain other sound is inserted in the mix in ffmpeg?

我正在使用 ffmpeg 命令獲取一組聲音,將它們混合到一個文件中,按特定時間間隔將它們分開。

以下是我今天的命令。

ffmpeg -i 
close_hh.wav    -i \
crash_l.wav     -i \
crash_r.wav     -i \
floor.wav       -i \
kick_l.wav      -i \
kick_r.wav      -i \
open_hh.wav     -i \
ride.wav        -i \
snare.wav       -i \
splash.wav      -i \
tom_1.wav       -i \
tom_2.wav       -i \
  tom_3.wav  -filter_complex  " [6]adelay=0|0[note_0];  [0]adelay=360|360[note_1];  [6]adelay=1260|1260[note_2];  [0]adelay=1537|1537[note_3];  [6]adelay=2494|2494[note_4];  [5]adelay=2767|2767[note_5];  [0]adelay=2969|2969[note_6];  [6]adelay=3673|3673[note_7];  [5]adelay=3924|3924[note_8];  [0]adelay=4132|4132[note_9];  [0][note_0][note_1][note_2][note_3][note_4][note_5][note_6][note_7][note_8][note_9]amix=inputs=11:normalize=0" record.wav

這是此命令生成的結果音頻:

ffmpg 記錄.wav: https://drive.google.com/file/d/1LFV4ImLKLnRCqZRhZ7OqZy4Ecq5fwT3j/view?usp=sharing

目的是生成鼓錄音,所以我想模擬踩鑔聲音的動態:當關閉的踩鑔演奏時,打開的踩鑔如果還在響,會立即停止播放。 任何其他聲音都不會發生相同的行為。

使這更具挑戰性的一點是,在打開踩鑔和關閉踩鑔之間也可以播放其他聲音,理論上聲音中斷行為應該正常工作。

以下是演示預期結果的錄音。 (我的應用程序已經在內部再現了我需要的聲音結果,所以我只是用麥克風做了一個簡單的錄音來說明)

mic record.wav https://drive.google.com/file/d/19x19Fd_URQVo-MMCmGEHIC1SjaQbpWrh/view?usp=sharing

請注意,在第一個音頻 (ffmpeg record.wav) 中,第一個聲音(打開踩鑔)在第二個播放后繼續播放。 在第二個音頻 (mic record.wav) 中,第一個聲音在第二個聲音播放后立即停止。

ffmpeg命令應該如何得到預期的結果?

雖然我不確定 FFmpeg 是合成音樂的正確工具,但這里有幾種方法可以幫助您實現目標。 首先,我建議如下圖所示一次“創作”一種樂器(在鼓組的情況下,一種鼓/鐃鈸),然后將樂器的完整音軌混合在一起。

現在,讓我們以前 3 個踩鑔片段來展示如何構建濾波器圖以形成踩鑔音軌。

(1) 將每個文件修剪到一定長度並連接所有流:

[0]atrim=duration=0.36[note_0]; \
[6]atrim=duration=0.9[note_1]; \
[0]atrim=duration=0.277[note_2]; \
[note_0][note_1][note_2]concat=3:0:1[aout]

雖然這有效,但如果在修剪的時刻有任何可聽見的聲音,您可能會聽到聲音突然中斷。 這帶來了替代...

(2) 將每個文件修剪到長度 + 額外和交叉淡入淡出:

假設 10 毫秒的重疊就足夠了,那么您希望將每個片段延長 10 毫秒(0.01 秒)。

[0]atrim=duration=0.37[note_0]; \
[6]atrim=duration=0.91[note_1]; \
[0]atrim=duration=0.277[note_2]; \ # last file remain same length
[note_0][note_1]acrossfade=d=0.01:c1=exp:c2=exp[notes_01] \
[note_01][note_2]acrossfade=d=0.01:c1=exp:c2=exp[notes_012]

這會變得很長,所以你可以縮短一點

[0]atrim=duration=0.37[note_0]; \
[6]atrim=duration=0.91,[note_0]acrossfade=d=0.01:c1=exp:c2=exp[notes_01]; \
[0]atrim=duration=0.277,[note_01]acrossfade=d=0.01:c1=exp:c2=exp[notes_012];

c1c2是衰落曲線配置文件。 有關可用的淡入淡出曲線,請參閱此 Wiki 頁面

最后,我隨意選擇了 10 毫秒,它可能太短了,因此請試驗並選擇最佳重疊持續時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM