2

В настоящее время я сталкиваюсь с проблемой, когда мне нужно взять какой-нибудь mp3-файл и создать еще один mp3-файл, в котором первый проигрывается в течение заданного промежутка времени, зацикливая при необходимости. Предпочтительно я ищу решение командной строки. Пробовал ffmpeg и sox, но не смог найти решение с ними. Поэтому сейчас я ищу несколько вариантов.

Дальнейшее объяснение: допустим, у меня есть файл foo.mp3, мне нужно создать файл bar.mp3, который имеет некоторую заданную длину, скажем, 30 секунд и который содержит файл foo.mp3, и если foo.mp3 короче, чем 30 секунд он зацикливается так много раз, что заполняет все 30 секунд. Надеюсь теперь понятно, о чем я прошу.

1 ответ1

4

ffmpeg может сделать это за вас, но вам может потребоваться два шага

Необязательный шаг 1: найдите длину исходного файла

ffmpeg -i '/path/to/original.mp3' 2>&1 | grep 'Duration :'

Теперь вы можете рассчитать количество повторений, необходимых. В качестве альтернативы, вы можете просто использовать "безопасное" количество повторений, так как слишком много не повредит.

Шаг 2: зациклите файл и обрежьте его до необходимой длины

создать "concat.txt" с этим содержанием

file '/path/to/original.mp3'
file '/path/to/original.mp3'
...
file '/path/to/original.mp3'
file '/path/to/original.mp3'
file '/path/to/original.mp3'

В нем должно быть как минимум столько строк, сколько необходимо повторений, но, опять же, больше не повредит, так что вы можете использовать безопасное (слишком высокое) количество строк.

И запустите ffmpeg (если вы хотите 123.456 секунд):

ffmpeg -t 123.456 -f concat -i concat.txt -c copy -t 123.456 output.mp3

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