Вопрос или проблема
У меня около 1200 mp3 файлов (по примерно 45 минут каждый), содержащих лекции (не музыку). Я использовал некоторые команды ffmpeg, чтобы ускорить их в 1.5 раза и конвертировать в моно вместо стерео (чтобы уменьшить размер файла, чтобы он влез в CD).
Я использовал эти две команды (в два этапа):
ffmpeg -i source.mp3 -filter:a "atempo=1.5,volume=1.2" -q:a 100 first_stage.mp3
ffmpeg -i first_stage.mp3 -ac 1 -b:a 32k final.mp3
После того как я выполнил это пакетно, когда я вставил их в mp3 плеер в машине, я заметил, что все файлы показывают максимальную длительность 7 минут, но они воспроизводятся без проблем. Мой mp3 плеер в машине показывает обратный отсчет, и я привык смотреть оставшееся время каждого файла, чтобы знать, начинать ли новый или нет и т.д.
Теперь все файлы начинают с 5 до 7 минут (вместо 30-45 минут), и он отсчитывает до нуля и остается 0 до конца файла, так что я завершал лекцию вслепую без таймера, что меня раздражает.
Что я могу сделать, чтобы это исправить, т.е. чтобы заставить автомобильный плеер правильно считывать время?
Спасибо комментарию @golimar, я нашел решение.
Необходимо добавить параметр -write_xing 0
перед именем выходного файла.
Конвертация (в одну строку) должна выглядеть так:
ffmpeg -i source.mp3 -filter:a "atempo=1.5,volume=1.2" -q:a 100 -ac 1 -b:a 32k -write_xing 0 out.mp3
Ответ или решение
Когда вы обрабатываете аудиофайлы с помощью FFmpeg, иногда может возникнуть проблема с неправильной отображаемой длительностью треков на некоторых устройствах, таких как автомобильные проигрыватели. В вашем случае, следствием изменения аудиофайлов с 1.5-кратным ускорением и конвертацией в моно, стало отображение максимальной длительности в 5–7 минут вместо 30–45. В данной статье мы подробно рассмотрим причины проблемы и ее решения.
Причины неправильной длительности файла
Формат MP3, когда замедляется или ускоряется, требует корректного обновления метаданных для обеспечения правильного отображения времени воспроизведения. Многие аудиопроигрыватели, в том числе автомобильные, используют такие метаданные для определения длительности трека. Когда вы применяете фильтры через FFmpeg, старые данные о длительности могут не корректироваться.
Решение проблемы
Как указано в вашем сообщении, чтобы решить проблему, необходимо использовать параметр -write_xing 0
. Этот параметр отключает запись Xing аудиометаданных, которые зачастую содержат неточную информацию относительно продолжительности. Вместо этого FFmpeg будет обновлять аудиометаданные таким образом, чтобы корректно отображать длительность файла.
Обновленная команда FFmpeg
Чтобы пересоздать ваши файлы с корректной длительностью, используйте следующую команду:
ffmpeg -i source.mp3 -filter:a "atempo=1.5,volume=1.2" -q:a 100 -ac 1 -b:a 32k -write_xing 0 out.mp3
Пояснение команды
-i source.mp3
: Указывает входной файл.-filter:a "atempo=1.5,volume=1.2"
: Применяет фильтры, ускоряя воспроизведение на 1.5x и увеличивая громкость.-q:a 100
: Определяет качество аудио в процессе кодирования.-ac 1
: Конвертация в моно.-b:a 32k
: Устанавливает битрейт в 32 кбит/с, что уменьшает размер файла.-write_xing 0
: Отключает Xing метаданные, что позволяет FFmpeg корректно обновить информацию о длительности.
Заключение
Теперь, после применения приведенной выше команды, ваши MP3 файлы должны загружаться в автомобильный проигрыватель с правильной длительностью. Если вы все еще сталкиваетесь с проблемами, стоит убедиться, что ваш проигрыватель поддерживает формат и кодеки файлов, с которыми вы работаете. Рекомендуем также протестировать выходные файлы на нескольких устройствах для подтверждения их корректной работы.
С учетом описанных решений, вы сможете избежать проблем с отображением длительности и насладиться прослушиванием лекций без лишних затруднений.