Jak nakładać / ściągać dwa pliki audio za pomocą ffmpeg

Czy mogę nakładać / ściągać dwa pliki audio mp3 w jeden plik wyjściowy mp3 używając ffmpeg?

Author: Roel Van de Paar, 2013-01-24

7 answers

Stereo + stereo → stereo

Normal downmix

Normal downmix

Użyj filtra amix :

ffmpeg -i input0.mp3 -i input1.mp3 -filter_complex amix=inputs=2:duration=longest output.mp3

Lub amerge filtr:

ffmpeg -i input0.mp3 -i input1.mp3 -filter_complex amerge=inputs=2 -ac 2 output.mp3

Downmix każdego wejścia do określonego kanału wyjściowego

Downmix każde wejście do określonego kanału wyjściowego

Użyj filtrów amerge i pan :

ffmpeg -i input0.mp3 -i input1.mp3 -filter_complex "amerge=inputs=2,pan=stereo|c0<c0+c1|c1<c2+c3" output.mp3

Mono + Mono → stereo

mono + mono → stereo

Użyj Dołącz filtr:

ffmpeg -i input0.mp3 -i input1.mp3 -filter_complex join=inputs=2:channel_layout=stereo output.mp3

Lub amerge :

ffmpeg -i input0.mp3 -i input1.mp3 -filter_complex amerge=inputs=2 output.mp3

Mono + mono → mono

mono + mono → mono

Użyj filtra amix :

ffmpeg -i input0.mp3 -i input1.mp3 -filter_complex amix=inputs=2:duration=longest output.mp3

Więcej informacji i przykładów

Zobacz FFmpeg Wiki: Kanały Audio

 107
Author: llogan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-12 20:13:37

Zobacz to:

ffmpeg -y -i ad_sound/whistle.mp3 -i ad_sound/4s.wav -filter_complex "[0:0][1:0] amix=inputs=2:duration=longest" -c:a libmp3lame ad_sound/outputnow.mp3
Myślę, że to pomoże.
 20
Author: UI Developer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-12 19:45:54

Filtr amix pomaga mieszać wiele wejść audio w jedno wyjście.

Jeśli uruchomisz następujące polecenie:

ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT

To polecenie połączy 3 wejściowe strumienie audio (użyłem dwóch plików mp3, w poniższym przykładzie) w jedno wyjście o takim samym czasie trwania jak pierwsze wejście i czasie przejścia wynoszącym 3 sekundy.

Filtr amix przyjmuje następujące parametry:

  • Wejścia : Liczba wejść. Jeśli nieokreślony, domyślnie jest to 2.

  • Czas trwania : Jak określić koniec strumienia.

    • najdłuższe : Czas trwania najdłuższego wejścia. (domyślnie)

    • Najkrótsza : Czas trwania najkrótszego wejścia.

    • pierwszy : Czas trwania pierwszego wejścia.

  • Dropout_transition : Czas przejścia, w sekundach, dla renormalizacji głośności po zakończeniu strumienia wejściowego. Default wartość to 2 sekundy.

Na przykład, uruchomiłem następujące polecenie w Ubuntu: Wersja FFMPEG: 3.2.1-1 UBUNTU 16.04.1

ffmpeg -i background.mp3 -i bSound.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=0 -codec:a libmp3lame -q:a 0 OUTPUT.mp3

-codec:a libmp3lame -q:a 0 został użyty do ustawienia zmiennej przepływności. Pamiętaj, że w razie potrzeby musisz zainstalować bibliotekę libmp3lame. Ale będzie działać nawet bez -codec:a libmp3lame -q:a 0 części.

Numer referencyjny: https://ffmpeg.org/ffmpeg-filters.html#amix

 15
Author: Ehsan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-15 02:12:13

Do scalania dwóch plików audio o różnych woluminach i różnym czasie trwania będzie działać następujące polecenie:

ffmpeg -y -i audio1.mp3 -i audio2.mp3 -filter_complex "[0:0]volume=0.09[a];[1:0]volume=1.8[b];[a][b]amix=inputs=2:duration=longest" -c:a libmp3lame output.mp3

Tutaj czas trwania można zmienić na najdłuższy lub najkrótszy , można również zmienić poziom głośności w zależności od potrzeb.

Jeśli chcesz dodać muzykę w tle do jakiegoś głosu Użyj następującego polecenia, jak w przerwach Muzyka stanie się głośna automatycznie :

ffmpeg -i bgmusic.mp3 -i audio.mp3 -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress=threshold=0.003:ratio=20[bg]; [bg][mix]amerge[final]" -map [final] final.mp3

W tym progu jest coś której wartość zadecyduje o tym, jak głośny powinien być dźwięk, Im mniejszy próg, tym dźwięk będzie większy. Ratio określa, w jakim stopniu drugi dźwięk powinien być skompresowany, im większy współczynnik, tym większa jest kompresja.

 11
Author: Sheetansh kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-16 09:51:37

Jeśli są różnej długości, możesz użyć apad, aby dodać cichy dźwięk do najkrótszego

 2
Author: Chung Xa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-08 10:59:33

Z Bash

set 'amovie=a.mp3 [gg]; amovie=b.mp3 [hh]; [gg][hh] amerge'
ffmpeg -f lavfi -i "$1" -q 0 c.mp3

Przykład

 1
Author: Steven Penny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-19 06:01:59

Możesz użyć następujących argumentów poleceń:

   // Command is here

let commandValue = "-y -i \(recordedAudioPath) -i \(backgroundAudio) -filter_complex [\(0):a][\(1):a]amerge=inputs=\(2)[a] -map [a] -ac \(2) -shortest -preset ultrafast \(outputPath)"
  MobileFFmpeg.execute(commandValue)
 0
Author: Davender Verma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-07 15:00:43