У меня есть несколько сотен файлов wma, которые я хотел бы преобразовать в другой формат, главным образом потому, что вся моя библиотека состоит из mp3, aac или m4a, поэтому все они совместимы с портативными устройствами Apple, и я использую iTunes в качестве интерфейса с этими устройствами. Так что я знаю, что ffmpeg, realplayer, mediamonkey, itunes все могут конвертировать wma в другие форматы, но мой вопрос в том, (i) какой будет наилучший "рабочий процесс" для минимизации потери качества и (ii) какой целевой формат / кодек использовать. И да, я знаю, что потеря без потерь, как правило, не очень хорошая идея, и что у меня, вероятно, будет некоторое ухудшение, но я пытаюсь найти лучший метод. Я мог думать о:

  1. прямое преобразование с использованием ffmpeg (но какие настройки использовать? поможет ли это использовать 192 кбит / с или выше, или это бессмысленно, и было бы лучше на самом деле использовать точно такой же битрейт, что и в исходном файле, то есть 128 кбит / с? Частота дискретизации Quid, также 44,1 или выше?

  2. преобразовать через промежуточный формат (wav или flac), так что на первом этапе извлекается вся возможная аудиоинформация, а затем на втором этапе снова кодируется.

  3. Я нейтрален в отношении mp3 или m4A (или aac, но я понял, что это просто другое расширение файла для того же кодека?), Поэтому будет ли важно преобразовать wma в любой из них? (Я знаю о конкретном вопросе mp3 против m4a здесь, поэтому мой вопрос действительно связан с наличием wma в качестве исходного файла.

Файлы wma имеют следующие свойства: Windows Media Audio V8 - 128 кбит / с, 44,1 кГц, 2 канала, 16 бит

1 ответ1

2

Используйте хорошую реализацию кодировщика с нормальными параметрами кодирования. Затем поэкспериментируйте, чтобы увидеть, что для вас приемлемо.

AAC с использованием libfdk_aac

Это лучший кодер AAC, поддерживаемый ffmpeg . Однако он считается несовместимым с GPL, поэтому вам придется его скомпилировать (хотя вы можете найти сборку [которая нарушает GPL]). Пример VBR:

ffmpeg -i input.wma -c:a libfdk_aac -vbr 5 output.m4a

AAC с использованием собственного кодера FFmpeg AAC

Встроенный кодировщик FACmpeg AAC неплох, но вам нужно дать ему достаточно битов, чтобы он звучал так же хорошо, как libfdk_aac. Поэкспериментируйте со значением битрейта (-b:a), чтобы получить что-то приемлемое для вас. Пример CBR (VBR еще не так хорош):

ffmpeg -i input.wma -c:a aac -b:a 192k output.m4a

Если ваш ffmpeg жалуется на то, что этот кодер "экспериментальный", то он устарел, и вам следует обновить его.

MP3 с использованием libmp3lame

Для MP3 ваш лучший выбор - libmp3lame. Пример VBR:

ffmpeg -i input.wma -c:a libmp3lame -q:a 2 output.mp3

Также см


Вопросы и ответы

Прямое преобразование с использованием ffmpeg?

Да. ffmpeg может декодировать практически все что угодно, он может сохранять метаданные, он поддерживает множество кодеров и форматов, вы можете контролировать, что он делает, и вы можете поместить его в цикл для кодирования всех файлов в каталоге (эта часть требует простого сценария).

Но какие настройки использовать? Это поможет использовать 192 кбит / с или выше, или это бессмысленно?

Это зависит от кодировщика и от того, хотите ли вы VBR или CBR. См. «Также см.» Ссылки для получения дополнительной информации, деталей и примеров.

Было бы лучше на самом деле использовать точно такой же битрейт, как исходный файл, то есть 128 кбит / с?

Я часто вижу пользователей, пытающихся это сделать, но повторное использование одного и того же битрейта не является оптимальным. Откуда вы знаете, что тот, кто кодировал оригиналы, знал, что они делают? Откуда ты знаешь, что сам кодировщик был паршивым или нет? Различные кодеры различаются по эффективности. Важно учитывать разницу в каждом формате. Кроме того, когда дело доходит до перекодирования ввода с потерями, вы должны заметить, что файл отличается от оригинала: данные искажены и содержат артефакты, которых нет в оригинале, поэтому даже если используется тот же кодер и тот же битрейт пришлось бы перекодировать эти артефакты, потому что они являются частью файла, что приводит к ухудшению вывода.

Частота дискретизации Quid, также 44,1 или выше?

Не беспокойтесь о частоте дискретизации. ffmpeg будет использовать ту же скорость, что и ввод.

Преобразовать через промежуточный формат (wav или flac), чтобы на первом этапе извлекалась вся возможная аудиоинформация, а затем на втором этапе снова кодировалась?

Это ненужный шаг. В любом случае, ffmpeg полностью декодирует звук в необработанный звук PCM, поэтому нет необходимости делать это заранее.

Я нейтрален в отношении mp3 или m4A (или aac, но я понял, что это просто другое расширение файла для того же кодека?), Поэтому будет ли важно преобразовать wma в любой из них? (Мне известен конкретный вопрос mp3 против m4a здесь, поэтому мой вопрос действительно связан с наличием wma в качестве исходного файла.)

Неважно, что источником является WMA. Используйте любой формат вывода, который лучше поддерживается вашим предпочтительным устройством или программным обеспечением. Я полагаю, что продукты Apple поддерживают как MP3, так и AAC, и я предполагаю, что звук AAC в контейнере M4A - это то, что он использует в "библиотеке", поэтому я, вероятно, использовал бы эту комбинацию.

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