2

Мне нужно сделать 10-минутные видео с сшитыми вместе образцами mp3 размером 5 x 2 минуты. Как бы вы сделали это с ffmpeg из командной строки?

2 ответа2

2

Я не думаю, что FFMPEG может сделать это без какой-то сумасшедшей командной строки, но MP3Wrap был разработан для этой цели.

Вы также можете использовать команду cat в Linux:

cat file1.mp3 file2.mp3 > combined.mp3

который объединит file1.mp3 и file2.mp3

или команда копирования в Windows:

copy /b *.mp3 c:\combined.mp3

который объединит все mp3-файлы в вашем текущем каталоге в C:\ комбинированный .mp3.

но методы cat и copy часто имеют нежелательные эффекты. Основная проблема заключается в том, что можно сообщать о неправильной длине файла mp3, что может вызвать проблемы с некоторыми аудиоплеерами - и потерять теги ID3. MP3Wrap решает обе эти проблемы и доступна для Linux и Windows.

2

С недавним ffmpeg вы можете использовать либо протокол concat (конкатенация на уровне файлов), либо демультиплексор concat (или фильтр concat, но для этого требуется перекодировка). Протокол менее ресурсоемкий и, IIRC, должен нормально работать на MP3; но если это не сработает, вы должны использовать демультиплексор.

Concat Protocol

Если у вас есть три файла с именами 1.mp3, 2.mp3 и 3.mp3, команда будет выглядеть так:

ffmpeg -i 'concat:1.mp3|2.mp3|3.mp3' -c copy output.mp3

Обратите внимание, что одинарные кавычки важны.

Concat Demuxer

Сначала вы должны создать простой текстовый файл, содержащий такие строки:

file '1.mp3'
file '2.mp3'
file '3.mp3'

Вы также можете указать абсолютный или относительный путь к каждому файлу MP3.

Если вы работаете над оболочкой bash, вы можете использовать такую команду, чтобы быстро сгенерировать файл, содержащий все MP3 в каталоге:

for f in *.mp3; do echo "file '$f'" >> inputs.txt; done

Фактическая команда ffmpeg, которую вы бы использовали:

ffmpeg -f concat -i inputs.txt -c copy output.mp3

Смотрите здесь для получения дополнительной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .