Почему преобразование из MP3 в WAV (PCM) без потерь?
Я понимаю, что при преобразовании между аудиоформатами, в которых не используется потоковое кодирование, например при преобразовании между 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 ответа
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
Msgstr "Программное обеспечение для декодирования знает, как этот кодек упорядочивает данные, чтобы он мог размешать сообщение.
Однако, как обсуждалось, форматы, такие как 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 создан, он не будет знать, что пробелы из исключенных букв не являются частью сообщения при попытке выяснить, что безопаснее отбросить Вот почему перекодирование данных с той же скоростью передачи битов приводит к ухудшению качества.
Итак, вы говорите, что если вы перекодируете MP3 в WAV, то это без потерь? WAV - это несжатый формат без потерь, MP3 - это формат с потерями. Форматы с потерями всегда сжимаются. Когда вы преобразуете код с потерями в без потерь, вы получите файл, который выглядит без потерь, но на самом деле это не так.
Вы можете проверить это, применив "спектральный анализ" к файлу. На изображении ниже показан файл без потерь, который перекодируется из MP3. Вы видите полку на 16 кГц? В несжатом файле без потерь (например, WAV) полки не должно быть.
Действительно хорошая информация о транскодировании: https://www.whatinterviewprep.com/prepare-for-the-interview/spectral-analysis/