Как использовать командную строку, чтобы сшить два wav вместе с помощью ffmpeg в Linux? - PullRequest
0 голосов
/ 10 октября 2018

Я установил ffmpeg в Debian и попробовал две командной строки.В одном каталоге находятся два файла: first.wav и second.wav. Первый способ - создать txt-файл, внутри a.txt они

file 'first.wav'
file 'second.wav'

Я запустил

ffmpeg -f concat -i a.txt -c copy final.wav

тогда я запускаю его, он может работать нормально.Но я хочу попробовать другой метод, который является

ffmpeg -i "concat:first.wav|second.wav" -c copy final2.wav

. В командной строке sdcond нет ошибки, он только захватывает первый файл, а длина final2.wav почти такая же, как first.wav,Файл second.wav вообще не прошивается.Поскольку я использую golang для выполнения командной строки, я хочу использовать

cmd := exec.Command("ffmpeg",args)

для сшивания носителей вместе, я могу прочитать все медиа-файлы в массив, но этот API не может работать для массива,поэтому я хочу сшить файлы вместе в

"concat:file1.wav|file2.wav|file3.wav|......"

, в этом случае может быть легко сшить файлы вместе, и мне не нужно зацикливать cmd.как

cmd = exec.Command("ffmpeg","-i","concat:first.wav|second.wav|third.wav|......","-c","copy","final2.wav")

Я не хочу создавать какие-либо дополнительные файлы, такие как файл .txt, так как мне нужно удалить его позже, и это может также коснуться разрешения.Так есть ли возможное решение для второй командной строки?

1 Ответ

0 голосов
/ 10 октября 2018

Попробуйте это

ffmpeg -i 1.wav -i 2.wav -i 3.wav ...... -i {n}.wav -filter_complex '[0:0][1:0]......[{n-1}:0]concat=n={n}:v=0:a=1[out]' -map '[out]' final.wav
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...