(решено) Конвертировать MP3 в WAV с использованием FFMPEG без обрезки тишины?

Вопрос или проблема

Я привык конвертировать все мои аудио и видео файлы с помощью bat-файлов FFMPEG, потому что это удобно.

В настоящее время я использую ffmpeg -i "%1" %~dpn1.wav в bat-файле перетаскивания, который действительно конвертирует MP3 (и другие) в WAV, но, к сожалению, несколько миллисекунд тишины в начале и в конце звука, похоже, теряются. По крайней мере, длина звука больше не та же.

Есть ли способ заставить FFMPEG выводить звук точно такой же длины, не обрезая никакие части?

Ответ: Благодаря Рикардо Бонеру, который предложил добавить -ss 00:00:00 в код, превратив его в ffmpeg -ss 00:00:00 -i "%1" %~dpn1.wav

-c copy также был предложен, но почему-то не сработал. Это также сделало Audacity неспособным открыть преобразованный звуковой файл, хотя Adobe Audition все же смог это сделать.

Только опция -c copy может гарантировать, что входной и выходной потоки имеют одинаковые данные/длительность:

ffmpeg -i "%1" -c copy %~dpn1.wav

Любое преобразование кодека (например, полное пропускание опции -c или использование любой другой опции, кроме -c copy) может привести к некоторым различиям между входными и выходными данными. С другой стороны, данная команда не будет работать в случаях, когда формат wav не сможет использовать кодек из входного файла.

Ответ или решение

Для решения задачи конвертации MP3 в WAV с помощью FFMPEG, сохраняя при этом оригинальную длительность звукового файла и не обрезая тишину, важно учитывать особенности работы с кодеками и параметрами команды.

Анализ проблемы

При использовании команды FFMPEG, вы вероятно сталкиваетесь с проблемой, когда концы аудиозаписей обрезаются, что приводит к изменению длительности выходного файла WAV по сравнению с оригинальным MP3. Это может быть связано с тем, что при конвертации кодеки FFMPEG могут по-разному обрабатывать тишину в начале и конце записи.

Решение

  1. Использование параметра -ss:

    Команда ffmpeg -ss 00:00:00 -i "%1" %~dpn1.wav позволяет контролировать начало конверсии с самого начала записи, что может помочь в сохранении оригинальной длины файла.

  2. Использование параметра -c copy:

    ffmpeg -i "%1" -c copy %~dpn1.wav

    Параметр -c copy позволяет выполнить прямую копию потоков данных, что может сохранить идентичную длительность аудиофайлов, так как это исключает любую перекодировку. Однако, данная команда не сработает, если кодек MP3 не совместим с форматом WAV, так как формат WAV требует выделенного аудиокодека PCM.

Разъяснение и рекомендации

Формат WAV обычно не использует сжатие, как MP3, следовательно, простая копия потока -c copy зачастую невозможна. В таких случаях мы должны соблюдать преодоление разницы в формате и обеспечить перекодировку, гарантируя минимальные искажения данным:

ffmpeg -i "%1" -acodec pcm_s16le %~dpn1.wav

Параметр -acodec pcm_s16le указывает использование некомпрессированного линейного PCM 16-битного аудио, что является стандартом для WAV-файлов.

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

Вывод

Оптимальной стратегией будет использовать подход без изменения кодека, там где это возможно, или прибегать к минимальной необходимой перекодировке. Это не только сохранит длину звукового файла, но и обеспечит его совместимость с большинством аудиоредакторов.

Последовательные эксперименты и тестирование с различными параметрами помогут вам добиться желаемого результата в вашей конкретной программной инфраструктуре.

Оцените материал
Добавить комментарий

Капча загружается...