LINUX.ORG.RU

Обрезается файл при склейки двух mp3 с помощью ffmpeg.

 ,


0

1

Нужно добавить в начало mp3 звук, сгенерированный festival. При склейки недопустимо обрезается фраза «Hello, World» до фразы «Hello, Wo». Как это побороть?

echo "Hello, World" | text2wave > hello.wav
lame hello.wav
ffmpeg -i "concat:hello.mp3|2.mp3" -acodec copy 3.mp3

Мета-инфа объединяемых файлов:

Duration: 00:00:01.22, start: 0.000000, bitrate: 24 kb/s
Stream #0:0: Audio: mp3, 16000 Hz, mono, s16p, 24 kb/s

Duration: 00:00:03.05, start: 0.000000, bitrate: 192 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, mono, s16p, 192 kb/s

concat:hello.mp3|2.mp3

это ничем не отличается от cat 1.mp3 2.mp3 > 3.mp3. ffplay, кстати, воспроизводит такие файлы, но ругается. по-нормальному надо так:

$ for f in 1.mp3 2.mp3; do echo "file '$f'" >> mp3list.txt; done
$ ffmpeg -f concat -i mp3list.txt -c copy 3.mp3
$ rm mp3list.txt
anonymous
()
Ответ на: комментарий от plgrm44

Есть такое универсальное решение, часто выручает:

$ ffmpeg -i 1.mp3 -c copy 1.mka && ffmpeg -i 2.mp3 -c copy 2.mka
$ mkvmerge -o 3.mka 1.mka + 2.mka
$ ffmpeg -i 3.mka -c copy 3.mp3
nvl ★★★
()
Ответ на: комментарий от anonymous

Эффект такой же. Если склеивать два mp3 с одним битрейтом, то все ОК, если с разным, то происходит обрезание. :)

plgrm44
() автор топика
Ответ на: комментарий от nvl
1.mka': Using the demultiplexer for the format 'Matroska'.
'2.mka': Using the demultiplexer for the format 'Matroska'.
'1.mka' track 0: Using the output module for the format 'MP3'.
'2.mka' track 0: Using the output module for the format 'MP3'.
No append mapping was given for the file no. 1 ('2.mka'). A default mapping of 1:0:0:0 will be used instead. Please keep that in mind if mkvmerge aborts with an error message regarding invalid '--append-to' options.
Error: The track number 0 from the file '2.mka' cannot be appended to the track number 0 from the file '1.mka'. The track parameters do not match.
plgrm44
() автор топика
Ответ на: комментарий от plgrm44

Я так понял, что мне нужно для начала битрейт один и тот же сделать в обоих файлах?

plgrm44
() автор топика
Ответ на: комментарий от plgrm44

Причем, если этот файлик залить на телефон, то VLC-плеер вообще не проигрывает первую часть склейки.

plgrm44
() автор топика
Ответ на: комментарий от plgrm44

То, что у меня работает:

echo "Hello, World!" | text2wave | ffmpeg -i pipe:0 -ar 44100 helloWorld.mp3
ffmpeg -i "concat:helloWorld.mp3|1.mp3" -acodec copy output.mp3

plgrm44
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.