Chcę połączyć wiele plików WAV w jeden plik WAV za pomocą FFMPEG.
Użyłem następującego polecenia i generuje on wymagany plik.
Dowództwo:
ffmpeg -f concat -i mylist.txt -c copy output.wav
Plik:
#mylist.txt
file '1.wav'
file '2.wav'
file '3.wav'
file '4.wav'
Ale jak widać problem polega na tym, że muszę utworzyć plik tekstowy, aby określić listę plików WAV do konkatenacji.
Mogę wykonać wszystkie te zadania, ale wolałbym jedno polecenie, które wygląda
ffmpeg -i 1.wav -i 2.wav -i 3.wav -i 4.wav output.wav
lub
ffmpeg -i "concat:1.wav|2.wav|3.wav|4.wav" -c copy output.wav
Próbowałem tych dwóch prostych poleceń, ale zwracają tylko głos 1.wav
Proszę o pomoc w napisaniu pojedynczego polecenia (lub poprawienia powyższych 2 poleceń), które osiągną pożądany rezultat.
Proszę nie sugerować innych Media Encoders / Editors, chcę używać tylko FFMPEG, ponieważ jest już zainstalowany i używany w innych miejscach.
źródło
[0:0][1:0][2:0][3:0]
do liczby plików. Używaj tego dokładnie tak, jak mówi. Jedyne, co powinieneś zmienić, to pliki wejściowe in=4
.Too many inputs specified for the "concat" filter.
gdy próbuję przetworzyć tylko 2 dane wejściowe z oryginalnym kodem. Działa to, gdy[2:0][3:0]
2:0
3:0
n
.Myślę, że najlepszą opcją jest użycie sox, a nie ffmpeg:
Rozwiązanie pochodzi z tego, jak dodać kilka plików .wav, zachowując porządek numeryczny (bez zerowania)?
źródło
.wav
, alesox
wydaje się nie wspierać.mp3
..wav
FFmpeg wiki wspomina pomocą
concat
protokołu nie jest możliwe w przypadku wszystkich typów plików. Działa dobrze z większością kontenerów MPEG i strumieni bitów, ale oczywiście nie ma plików WAV z dźwiękiem PCM.Nie musisz koniecznie tworzyć pliku tymczasowego i używać go. Dzięki Bash (lub innym powłokom, które obsługują podstawianie procesów ), możesz zrobić wszystko za pomocą jednego polecenia:
Podstawienie procesu
<( )
tworzy plik - lub ściślej deskryptor pliku - w locie, któryffmpeg
można odczytać. Ten plik będzie zawierać ścieżkę do każdego.wav
pliku w bieżącym katalogu. Musimy go poprzedzić,$(pwd)
aby uzyskać poprawną ścieżkę względem bieżącego katalogu, a nie względem deskryptora pliku.Oczywiście polecenie w ramach podstawienia można zmienić na coś innego.
źródło
Unsafe file name
błąd, wcześniej będziesz potrzebować-safe 0
opcji-i
. ref. stackoverflow.com/q/38996925/297679Inną opcją jest użycie konkat
źródło
W skrypcie Cmd.EXE WinB's .BAT:
W ten sposób nie zawracasz sobie głowy nazwami plików źródłowych ani parametrem concat-count.
źródło
Możesz użyć
shntool
do plików wav.źródło