Перейти к содержимому

Почему преобразование из MP3 в WAV (PCM) без потерь?

6

Я понимаю, что при преобразовании между аудиоформатами, в которых не используется потоковое кодирование, например при преобразовании между WAV (PCM), AIFF, FLAC, ALAC, WMA Lossless и т. Д., Процесс обычно выполняется без потерь, поскольку аудиопоток PCM просто копируется в новый контейнер. В зависимости от типа контейнера, он может быть запущен с помощью алгоритма сжатия, чтобы сэкономить место, но это все еще битовые идентичные данные. Вы также можете сделать то же самое с файлом MP4 (AAC), скопировав аудиопоток AAC в файл контейнера MKA; все это без потерь, потому что нет перекодирования аудиопотока.

Я понимаю, что при преобразовании между форматами, такими как ранее перечисленные WAV (PCM), ALAC, FLAC и т. Д., В формат, который не поддерживает кодирование аудиопотока, преобразование должно включать перекодирование. Например, при преобразовании в форматы, такие как MP3, MP4 (AAC), OGG (Vorbis), WMA Lossy и т. Д., Исходный аудиопоток перекодируется и, как таковые, данные отбрасываются. Новый файл будет худшего качества.

Что я не могу обернуть головой, так это то, почему преобразование MP3 в WAV (PCM) без потерь (или ALAC, FLAC и т. Д.). Аудиопоток перекодируется, поэтому новый аудиопоток не может быть хуже, чем аудиопоток MP3? Просветите меня.

2 574 просмотра
Robin Hood спросил 11 лет назад
R 2 934

2 ответа

9
Принятый ответ

PCM - один из наиболее часто используемых аудиокодеков; большинство компьютеров (а также многие устройства) используют его по умолчанию для вывода / ввода звука. Весь звук, который слышен на этом устройстве, будь то из файла или с входа микрофона, записан в формате PCM, и он используется для восстановления приближенного значения оригинальных аналоговых звуков.

Когда вы делаете цифровую аудиозапись с помощью микрофона в системе, которая использует PCM для вывода / ввода звука, аудиопоток является PCM. Когда вы без потерь сохраняете эту запись как WAV, FLAC, WMA Lossless, ALAC, AIFF и т. Д., Процесс кодирования не выполняется, аудиопоток просто помещается в новый файл контейнера, это все еще поток PCM, интерпретируемый вашей системой с аналогового звуки реального мира.

Форматы без потерь можно разделить на 2 типа: сжатые и несжатые. Несжатые форматы, такие как WAV и AIFF, просто хранят аудиопоток PCM. Сжатые форматы, такие как FLAC, ALAC и WMA Lossless, управляют потоком данных с помощью алгоритма сжатия для экономии места, например, в виде zip-архива. Данные не меняются, они просто сохраняются более эффективно; это все еще закодировано как PCM.

Если вы затем возьмете экспорт без потерь и конвертируете его в MP3 со скоростью 128 кбит / с, потребуется перекодирование. Кодирование означает организацию данных аудиопотока по-новому; это процесс без потерь. Однако нет никаких кодеков, насколько мне известно, которые делают это, потому что это было бы бессмысленно. Файл будет звучать одинаково, воспроизведение потребует декодирования аудио, что означает, что требуется больше системных ресурсов, и он будет того же размера, что и исходный файл. Поэтому такие кодеки, как MP3, WMA Lossy, AAC, Vorbis (OGG) и т. Д. Также выполняют дополнительные операции. Обычной операцией является удаление данных, которые считаются менее важными. Отказ от данных приводит к меньшему размеру файла.

Нижеследующее не является идеальной аналогией, но я думаю, что это все понятно.

Допустим, что « I hate you Sarah!», написанное на листе бумаги, представляет аудиопоток PCM в файле WAV, который вы без потерь экспортировали после выполнения записи.

Кодирование этих данных в другом формате кодирования было бы эквивалентно смешиванию букв с надписью « h Iyae oSr! haatu». Программное обеспечение для декодирования знает, как этот кодек организует данные, чтобы он мог размешать сообщение.

Однако, как обсуждалось, форматы, такие как MP3, также отбрасывают данные во время процесса кодирования. Таким образом, сообщение MP3 будет больше похоже на " h I Sr! h tu", а при декодировании (без перемешивания) оно будет выглядеть примерно так " I h t u S r h!". Если вы прочитаете это обратно, вы все равно получите сообщение, но исключение букв немного изменит звук. Чем больше вы исключаете, тем хуже становится, пока не достигнете точки, когда вы больше не сможете понять исходное сообщение.

Аудиопоток MP3 представляет исходный аудиопоток PCM. Когда вы проигрываете MP3, он декодируется обратно в PCM, но сброшенные данные, очевидно, не возвращаются. В этом примере звучит правдоподобно добавить обратно пропущенные буквы, но помните, что компьютеры не так умны, как мы, и это очень очень очень простой пример.

Если вы должны были преобразовать MP3 в файл WAV, технически вы декодируете в PCM, а затем сохраняете поток PCM, поэтому WAV больше, чем MP3. Потеря данных не происходит, потому что поток MP3 всегда был просто представлением для потока PCM. Спецификация кодека сообщает декодеру, как декодировать MP3 обратно в формат PCM. Если вы должны были преобразовать MP3 в AAC со скоростью 128 кбит / с, то на самом деле происходит то, что MP3 декодируется в PCM, а затем поток PCM кодируется как AAC. Процесс кодирования из PCM в AAC приводит к дальнейшей потере данных, потому что "I h t u S r h!"рассматривается как исходное сообщение. Обратите внимание, что буквы не сжаты вместе. Когда файл AAC создан, он не будет знать, что пробелы из исключенных букв не являются частью сообщения при попытке выяснить, что безопаснее отбросить Вот почему перекодирование данных с той же скоростью передачи битов приводит к ухудшению качества.

Robin Hood ответил 11 лет назад
R 2 934
0

Итак, вы говорите, что если вы перекодируете MP3 в WAV, то это без потерь? WAV - это несжатый формат без потерь, MP3 - это формат с потерями. Форматы с потерями всегда сжимаются. Когда вы преобразуете код с потерями в без потерь, вы получите файл, который выглядит без потерь, но на самом деле это не так.

Вы можете проверить это, применив «спектральный анализ» к файлу. Изображение ниже показывает файл без потерь, который транскодируется из MP3. Вы видите полку на 16 кГц? В несжатом файле без потерь (таком как WAV) полка не должна быть там.

enter image description here

Действительно хорошая информация о транскодировании: https://www.whatinterviewprep.com/prepare-for-the-interview/spectral-analysis/

Небольшая деталь: MP3 - это аудиокодек. WAV - это контейнерный формат, поэтому он не имеет потерь или потерь. Аудио PCM - это то, что обычно хранится в WAV-контейнерах, а PCM без потерь.

slhck · 11 лет назад · 4
Jente ответил 11 лет назад
J 234