Понимание преобразования и (де) сжатия звука без потерь

12

У меня есть несколько вопросов, касающихся звука без потерь. Я подумываю о том, чтобы скопировать всю мою музыкальную коллекцию в без потерь .flac, но сначала я хочу кое-что понять.

Если у меня есть файл .flac, и я хочу, чтобы он был, скажем, в .wav, как я могу сделать это, чтобы не было потери качества? Если я распакую его, я знаю, что не потеряю качество. Является ли преобразование .flac в .wav таким же, как распаковка?

Это относится и к формату .ape? У меня есть несколько записей общественного достояния, которые я скачал в .ape, но я хочу сделать это .flac. Будет ли .ape to .flac возможно без использования .wav в качестве посредника. Я хочу быть уверенным, что ничуть не потеряно.

Кроме того, если есть какие-либо руководства, которые безупречно объясняют мир без потерь, желает ли кто-нибудь поделиться ссылкой? :)

Райан МакКлюр
источник

Ответы:

14

Первый:

Понять разницу между кодировкой и форматом контейнера . http://en.wikipedia.org/wiki/Digital_container_format

Контейнерный формат - это формат данных, который «инкапсулирует» другие закодированные данные. Он часто содержит «метаинформацию» о кодированных данных или имеет способ хранить несколько отдельных потоков кодированных данных или что-то в этом роде.

Кодировка, создаваемая кодеком, является фактическим «мясом» потока данных.

Наиболее распространенный пример, который я могу вспомнить, - это формат «Ogg / Vorbis». Ogg - это формат контейнера, а Vorbis - это кодировка. Таким образом, у вас есть файл в формате Ogg, и внутри есть эти маленькие сегменты, которые содержат закодированные данные. Внутри каждого блока находится поток данных в кодировке Vorbis и ничего более. Например, на ведре может быть выбито имя исполнителя и название песни.

Итак, вернемся к технологиям:

  1. Если у вас уже есть музыка в формате с потерями, например, mp3 или ogg / vorbis, преобразование ее в формат без потерь будет занимать только (много) дискового пространства, и НЕ БУДЕТ - абсолютно НЕ БУДЕТ - улучшать качество аудио вообще. Вы не можете создать верность, когда она уже потеряна. Если вы не пишете графический интерфейс в Visual Basic на каком-то популярном телешоу под названием CSI, но это фантазия, а не реальность.

  2. Если у вас есть музыка в других форматах без потерь, и вы хотите конвертировать ее в FLAC, вы можете это сделать.

  3. Будьте осторожны, разбрасывая термин "WAV". Wav не должен быть без потерь; на самом деле, WAV - это просто контейнер для различных возможных форматов. В этом смысле это похоже на AVI. Вы можете иметь WAV без потерь, если это просто необработанные данные PCM, но вы также можете встраивать данные MPEG-1 Layer III (с потерями) в файл WAV.

  4. Возможно потерять данные при конвертации из одного формата без потерь в другой, если вы уменьшите точность данных. Например, если вы преобразуете беззнаковый 16-разрядный поток данных PCM с частотой 48000 Гц в 8-разрядный поток данных PCM с частотой 44100 Гц, вы теряете точность двумя способами: выборки объединяются с 48000 до только 44100 за раз. во-вторых (что приводит к потере данных), и данные должны быть микшированы, чтобы уместить информацию только в 8 битов вместо 16 на выборку, что резко ухудшит качество.

Каждый цифровой аудиопоток, даже кодированный сжатым кодером (с потерями или без потерь), имеет следующие «Свойства формата образца», которые являются важными элементами, которые описывают свойства потока:

  1. Пример ширины и глубины в битах, то есть 8 бит, 16 бит и т. Д. Ширина и глубина битов немного различаются, и есть также порядок байтов с прямым порядком байтов / порядок байтов (который не влияет на качество) и со знаком или без знака (что также не имеет значения) влияет на качество, но влияет на работу кодера / декодера с данными). Ключевой момент, который нужно помнить: «чем больше бит, тем лучше». Так что 32-битная версия лучше 16-битной и т. Д.

  2. Частота, также известная как частота дискретизации. Чем больше, тем лучше, потому что в секунду воспроизводится больше «семплов» звука. Представьте, что вы быстро проводите пальцем по колоде карт и наблюдаете, как карты размываются - вот как в сущности происходит цифровой звук. Каждый сэмпл - это карта, и если у вас в секунду пролетает больше карт, звук получается более плавным. Например, вы бы действительно заметили, если бы вы переворачивали только 5 карт в секунду, но все это было бы размыто, если вы переворачивали тысячи карт в секунду. Так что еще лучше, потому что это более естественно и ближе к реальности, которая является аналогом и бесконечно делимым (ну, вплоть до планковских единиц, но это спорно и не по теме).

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

Поэтому, если вы перейдете с 16-битного на 32-битный формат семпла, вы не потеряете данные. Но если вы перейдете с 32 бит на 16 бит, вы потеряете данные.

Таким образом, ответ на ваш вопрос о том, имеет ли смысл использовать FLAC, зависит от исходных данных: если у вас есть 64-битные файлы WAV, которые были изначально записаны в этом формате семпла с частотой 192000 Гц (или 192 кГц), и вы конвертируете их в " Стандартный формат FLAC 16-бит и 44,1 кГц, вы потеряете тонну данных. Но если ваш WAV-файл является 8-битным с 22100 выборками в секунду и вы конвертируете его в 16-битный FLAC с 44100 выборками в секунду, вы не потеряете данные. И вы можете даже увеличить размер файла в зависимости от того, выиграет ли сжатие без потерь или меньший формат выборки.

Формат сэмпла будет влиять на то, сколько места занимает файл, поэтому «большие» биты и «более быстрая» частота дискретизации будут занимать больше места.

Что касается практических соображений и человеческого слуха: вы не заметите, если конвертируете действительно высококачественные оригиналы в 16-битный FLAC с частотой 44,1 кГц. Но вы также не заметите улучшения, если конвертируете MP3 в FLAC. Таким образом, вам нужно оценить, в каком формате представлены ваши исходные данные, прежде чем вы решите, что делать.

Теперь, когда я предоставил вам всю эту информацию, вот мои прямые и точные ответы с нулевым объяснением на ваши вопросы:

У меня есть несколько вопросов, касающихся звука без потерь. Я подумываю о том, чтобы скопировать всю мою музыкальную коллекцию в без потерь .flac, но сначала я хочу кое-что понять.

Если ваша музыкальная коллекция находится на компакт-дисках, и вы хотите скопировать ее во FLAC, это, на мой взгляд, очень хорошо подходит. Качество звука CD будет на частоте 44,1 кГц и 16 бит на семпл. Это точно соответствует настройкам FLAC по умолчанию (по крайней мере, по умолчанию в кодировщиках, которые я использую). Поэтому вы не потеряете никаких данных, и они будут математически идентичны входным данным при декодировании.

Если у меня есть файл .flac, и я хочу, чтобы он был, скажем, в .wav, как я могу сделать это, чтобы не было потери качества? Если я распакую его, я знаю, что не потеряю качество. Является ли преобразование .flac в .wav таким же, как распаковка?

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

Когда медиаплеер воспроизводит звук в вашем файле flac, он по существу декодирует данные flac в формат PCM перед отправкой этих данных PCM на звуковую карту. Это распакует его к тем же самым данным, которые вошли; так что, если поступят 16-битные данные PCM с частотой 44,1 кГц, это то, что выйдет и перейдет к вашим динамикам.

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

Это относится и к формату .ape? У меня есть несколько записей общественного достояния, которые я скачал в .ape, но я хочу сделать это .flac. Будет ли .ape to .flac возможно без использования .wav в качестве посредника. Я хочу быть уверенным, что ничуть не потеряно.

Нет, это невозможно сделать без использования какого-либо формата PCM в качестве посредника. Но да, это возможно сделать это без использования файла WAV. Обратите внимание на разницу. Поток данных PCM. WAV файл Если вам не понятно различие, перечитайте начало моего поста. Если вы хотите убедиться, что «даже бит» не потерян, вам нужно проверить файлы APE и понять, в каком формате они находятся, и убедиться, что кодировщик FLAC настроен на кодирование для тех же настроек.

Внутри любая программа конвертирования аудио будет декодировать из исходного формата в какой-то формат сэмплов PCM без потерь, а затем брать эти сэмплы PCM и перекодировать их в целевой формат.

Кроме того, если есть какие-либо руководства, которые безупречно объясняют мир без потерь, желает ли кто-нибудь поделиться ссылкой? :)

На мой взгляд, лучший способ научиться это делать. Если вы потратите время на изучение инфраструктуры Gstreamer, ее использования и значений различных настраиваемых форматов сэмплов, а также на то, как построить конвейер, вы получите действительно глубокое понимание цифрового аудио. Проверьте это. http://gstreamer.freedesktop.org/ Вы также можете получить Gstreamer SDK с http://code.entropywave.com/gstreamer-sdk/ (Windows поддерживается) и поэкспериментировать с gst-launch-0.10 без необходимости что-либо компилировать из источника.

Несколько показательных вещей:

gst-inspect-0.10 vorbisenc gst-inspect-0.10 vorbisdec gst-inspect-0.10 аудиоконвертер gst-inspect-0.10 аудиосэмплин

Тогда узнайте о заглушках, строительстве трубопроводов и т. Д., И вы будете двигаться дальше.

* Примечание: я понимаю, что не объяснил, что такое PCM. Википедия справляется с этим лучше, чем я: http://en.wikipedia.org/wiki/Pulse-code_modulation

allquixotic
источник
Вау, это просто невероятно, как ясно и как превосходно ты все это объяснил. Никогда раньше не думал о половине этого, о хорошей пище для размышлений. Спасибо за ответ - и вам понадобилось время, чтобы набрать все это тоже! +1!
Райан МакКлюр
Вы всегда должны стремиться к сохранению битрейта и частоты дискретизации без изменений, поскольку без потерь в идеале подразумеваются идентичные данные PCM. Повышение дискретизации до чего-либо, кроме удвоения частоты дискретизации, никогда не будет без потерь (вы не можете равномерно добавлять нули) и тратит место на диске. В любом случае это не должно быть проблемой для FLAC, поскольку он может обрабатывать любое разрешение бита PCM от 4 до 32 бит на выборку, любую частоту дискретизации от 1 Гц до 655,350 Гц с шагом 1 Гц и любое количество каналов от 1 до 8 ( en.wikipedia.org/wiki/FLAC#Design )
MTONE
WAV всегда содержит PCM. Это может быть не PCM качества CD (но, на самом деле, вы, как правило, можете предположить это, потому что это почти всегда так), но это будет PCM, а не что-то другое, как mpeg 3 layer 2.
psusi
@psusi: Извините, но вы не правы. Пожалуйста, прочтите статью в Википедии на WAV: en.wikipedia.org/wiki/WAV . Если хотите, я могу опубликовать ссылку на WAV-файл, содержащий аудио MP3. Что нужно помнить о файлах WAV, так это то, что они являются просто файлом RIFF, а файл RIFF является довольно примитивной версией формата медиа-контейнера. Но, по крайней мере, по своей основной цели он не сильно отличается от Ogg или Matroska, за исключением поддержки только аудио, а не видео. Редактировать: мне не нужно делать файл WAV / MP3; ура! На самом деле это связано с из Википедии! nch.com.au/acm/8kmp316.wav
allquixotic
В этом ответе есть некоторые неточности. «Частота, также известная как частота дискретизации. Чем больше, тем лучше, потому что у вас больше« семплов »звука, воспроизводимого в секунду». - Это не так, как работают частоты дискретизации. Если бы битовая глубина не учитывалась, данные с частотой дискретизации 48 кГц могли бы представлять сигналы с частотой до 24 кГц без потерь, и добавление большего количества сэмплов не изменило бы это. Больше сэмплов влияет только на то, какие частоты вы можете представить. Преобразование из 44,1 кГц в 48 кГц также не является, строго говоря, без потерь, даже если внесенная ошибка очень мала.
cooky451
1

Я должен не согласиться с заявлением Allquixotic.

Если у вас уже есть музыка в формате с потерями, например, mp3 или ogg / vorbis, преобразование ее в формат без потерь будет занимать только (много) дискового пространства, и НЕ БУДЕТ - абсолютно НЕ БУДЕТ - улучшать качество аудио вообще. Вы не можете создать верность, когда она уже потеряна. Если вы не пишете графический интерфейс в Visual Basic на каком-то популярном телешоу под названием CSI, но это фантазия, а не реальность.

Вы не обладаете знаниями в области звуковой инженерии и не кормите людей ложным утверждением.

  1. Оба Ogg и Vorbis имеют контейнеры, которые сохраняют исходную информацию о волнах, и ее можно преобразовать в данные без потерь. Пожалуйста, сделайте Google достаточно.

  2. даже низкокачественное преобразование MP3 в без потерь делает ОЧЕНЬ много улучшений звука, оно не так идеально, как оригинал, но его можно легко исправить динамикой и сглаживанием. https://www.izotope.com/en/products/master-and-deliver/ozone.html/OzoneDitheringGuide.pdf

Аудио не является данными 10100110101001, поэтому меньший размер файла не означает, что он потерял качество. Вы могли бы иметь опыт работы со 128 кбит / с до 320 кбит / с десятилетия назад и предположить, что пропускная способность 128 кбит / с без потерь невозможна. Пожалуйста, сами протестируйте эту простую задачу и выполните ее.

Seandex
источник