- Декодирование звука
- 1 Comments to “Декодирование звука”
- Русские Блоги
- Выборка, кодирование и декодирование звука — LPCM, ADPCM, G711, G726, AAC
- Предисловие
- ADPCM
- Сравнение форматов
- Учебник. декодирование аудио
- Обзор
- Файлы заголовков и библиотек
- Реализация wmain
- Запись файла WAVE
- Настройка модуля чтения исходного кода
- Запись заголовка ВОЛНового файла
- Вычисление максимального размера данных
- Декодирование звука
- Финализировать заголовок файла
Декодирование звука
При программном декодировании VideoDVD звуковую дорожку можно воспроизвести двумя способами:
• декодировать сигнал с помощью драйвера звуковой карты или программного проигрывателя (варианты, представленные на рис. 14.5 и рис. 14.11);
• цифровой сигнал с выхода звуковой карты подается на внешний декодер, к которому подключены громкоговорители акустической системы.
В первом случае декодированный звуковой сигнал поступает на аналоговый выход звуковой карты, а затем на входы звуковой акустической системы.
Во втором варианте звуковой поток в цифровом виде от звуковой платы через цифровой выход S/PDIF передается непосредственно декодеру Dolby Digital(рис.14.15).
При цифровом подключении к внешнему декодеру качество звука будет намного выше.
Передача звукового сигнала на вход декодера может происходить по трем видам кабелей:
• коаксиальному (разъем RCA);
• электрическому (разъем Digital DIN);
• оптическому (разъем Toslink).
Рис.14.15. Вариант декодирования звука по цепочке «звуковая карта — декодер Dolby Digital»
Для коаксиального соединения требуется обычный кабель от видеоаппаратуры с разъемами RCA с обеих сторон(рис.14.16).
Рис.14.16. Кабель с разъемами RCA
При использовании цифрового выхода с разъемом Digital DIN понадобится кабель, имеющий с одной стороны такой разъем, а с другой — разъем RCA(рис.14.66).
Если у декодера имеется оптический вход, при условии, что и звуковая карта имеет аналогичный выход, то декодер можно подключить к звуковому устройству с помощью оптического кабеля Toslink(рис.14.17). Такие выходы имеют, например, звуковая карта Yamaha YMF744 (рис.8.1) или внешняя звуковая карта Sound Blaster Extigy (рис.8.3).
Рис.14.17. Разъемы оптического кабеля Toslink
При подключении цифрового оптического кабеля необходимо предварительно удалить защитные крышки с гнезд устройств, а когда разъем не используется — установить крышки обратно, чтобы предохранить разъемы от проникновения пыли и грязи.
Еще один вариант декодирования звука при создании домашнего кинотеатра предполагает подключение акустической системы с декодером Dolby Digital к плате MPEG-2. При этом звуковой поток в цифровом виде будет передаваться непосредственно декодеру Dolby Digital. Звуковая карта при таком соединении вообще не нужна.
Для подключения декодера Dolby Digital плате MPEG-2 используется коаксиальный кабель S/PDIF с разъемами RCA на обоих концах(рис.14.6а). Штекер одного конца этого кабеля соединяется с выходом S/PDIF платы MPEG-2, а штекер другого конца кабеля — с входом COAXIAL декодера Dolby Digital(рис.14.18).
Рис.14.18. Вариант декодирования звука через цепочку «аппаратный декодер MPEG-2 — декодер Dolby Digital
Просмотр фильмов при использовании аппаратного декодера MPEG-2 осуществляется только программой-проигрывателем, поставляемой в комплекте с декодером. Если при установленном аппаратном декодере запустить другой программный проигрыватель (например, WinDVD), то на экран будет выводиться видеопоток, декодированный программным средством этого проигрывателя.
1 Comments to “Декодирование звука”
Привет, можите мне помочь мне нужно декодировать аудио звук за оплату.
Источник
Русские Блоги
Выборка, кодирование и декодирование звука — LPCM, ADPCM, G711, G726, AAC
Предисловие
Недавно в разделе аудиоинформации hi3516a я встретил некоторые профессиональные звуковые термины, такие как LPCM, ADPCM, G711, G726 и т. Д., Поэтому я поискал некоторую информацию, записал и резюмировал эти термины.
LPCM: linear pulse code modulation
LPCM, или линейная импульсная кодовая модуляция, представляет собойНесжатыйТехнология оцифровки звука — это воспроизведение исходного звука без сжатия, которое широко используется на обычных компакт-дисках, DVD-дисках и в других случаях, требующих высочайшего качества звука.
Принцип LPCM (PCM) в разных приложениях одинаков, разница вЧастота дискретизации и точность квантованияразные.
Причина, по которой звук может быть оцифрована, заключается в том, что частота звука, которую может слышать человеческий слух, не является бесконечно широкой, в основном ниже 20 кГц. Согласно теореме дискретизации, только частота дискретизации превышает 40 кГц, исходный звук можно восстановить без искажений. Например, CD использует частоту дискретизации 44,1 кГц, в то время как другие в основном используют 48 кГц или 96 кГц.
PCM (импульсно-кодовая модуляция) — это метод кодирования, преобразующий аналоговые голосовые сигналы в цифровые. В основном это три процесса: выборка, квантование и кодирование. Процесс дискретизации преобразует аналоговый сигнал непрерывного времени в дискретные сигналы дискретного времени и непрерывной амплитуды. Процесс квантования изменяет дискретизированный сигнал на дискретные сигналы дискретного времени и дискретной амплитуды. Процесс кодирования кодирует квантованный сигнал в группу двоичного кода для вывода.
Квантование делится на линейное квантование и нелинейное квантование. Линейное квантование имеет одинаковый интервал квантования во всем диапазоне квантования. Нелинейное квантование использует неравные интервалы квантования. Количество интервалов квантования определяется количеством бит в коде. Например, если CD использует 16-битное линейное квантование, количество интервалов квантования L = 65536. Чем больше количество битов (n), тем выше точность и выше отношение сигнал / шум SNR = 6,02n + 1,76 (дБ). Однако количество двоичных цифр для кодирования не неограниченно и должно определяться в соответствии с требуемой скоростью передачи данных. Например, достижимая скорость передачи данных для CD составляет 2 × 44,1 × 16 = 1411,2 Кбит / с.
Просто поймите, что LPCM — это цифровой сигнал, полученный после дискретизации и линейного квантования исходной аналоговой звуковой волны, и эти сигналы данных не были сжаты.
ADPCM
ADPCM :Adaptive Differential Pulse Code Modulation
Говоря об ADPCM, мы должны сначала поговорить о DPCM.
Дифференциальная (разница) или дельта-PCM (DPCM) записывает текущее значение и предыдущее значениеЗначение разницы. DPCM квантует разность сигнала, что может дополнительно уменьшить количество битов квантования. По сравнению с эквивалентным PCM это кодирование требует только 25% количества битов. Это похоже на концепцию сжатия некоторых видео с использованием этого кадра и предыдущего кадра.разницаДля записи кадра добиться сжатия.
ADPCM (адаптивная дифференциальная импульсно-кодовая модуляция ADPCM) — это разновидность 16-битных (или более высоких) данных звуковой волны.Алгоритм сжатия с потерями, Он хранит 16-битные данные каждого семпла в звуковом потоке как 4-битные, поэтому коэффициент сжатия составляет 1: 4. Алгоритм сжатия / распаковки очень прост, поэтому это хороший способ получить высококачественный звук с низким потреблением места.
Алгоритм использует корреляцию между точками выборки речевого сигнала, а для нестационарных характеристик речевого сигнала он используетАдаптивное предсказаниес участиемАдаптивное квантованиеТо есть параметры квантователя и предсказателя могут адаптироваться к оптимальному состоянию параметра или приближаться к нему в соответствии со статистическими характеристиками входного сигнала и могут обеспечивать качество голоса на сетевом уровне со скоростью 32 кбит / с ◎ 8 кГц.
Особенности: ADPCM сочетает в себе адаптивные характеристики APCM и дифференциальные характеристики систем DPCM и представляет собой кодирование сигналов с лучшей производительностью. Его основная идея:
① Используйте адаптивные идеи для изменения размера шага квантования, то есть используйте маленький шаг квантования для кодирования небольших различий и используйте большой шаг квантования для кодирования больших различий. стоимость;
②Используйте прошлые значения выборки, чтобы оценить прогнозируемое значение следующей входной выборки, чтобы разница между фактическим значением выборки и прогнозируемым значением всегда была наименьшей.
Преимущества: низкая сложность алгоритма, низкая степень сжатия, минимальная задержка кодека (по сравнению с другими технологиями)
Недостаток: среднее качество звука.
Просто поймите, ADPCM предназначен для обработки данных LPCM.Сжатие с потерями, В процессе сжатия параметр квантования будет маленьким, когда он маленький, и большим, когда он большой, в зависимости от разницыРегулировкаРазмер; кроме того, он может считать предыдущие данные и более поздниепредсказаниеВ последующем расхождении данных постарайтесь сделать разницу как можно меньше.
G711 — это набор стандартов сжатия голоса, настроенных Международным союзом электросвязи (ITU-T). Он представляет собой стандарт выборки с логарифмической импульсно-кодовой модуляцией (PCM) и в основном используется для телефонов. В основном он использует кодовую импульсную модуляцию для дискретизации звука с частотой дискретизации 8k в секунду. Он использует несжатый канал 64 Кбит / с для передачи голосовых сигналов. Степень сжатия 1: 2, а это значит, что16-битные данные, сжатые в 8-битные. G.711 — этоОсновное направлениеЗвуковой кодек волны.
В стандарте G.711 есть два основных алгоритма сжатия. Один из них — алгоритм u-law (также известный как u-law, ulaw, mu-law), который в основном используется в Северной Америке и Японии; другой — алгоритм A-law, который в основном используется в Европе и других частях мира. Среди них последний специально разработан для облегчения компьютерной обработки.
Содержимое G711 заключается в кодировании 14-битных (uLaw) или 13-битных (aLaw) дискретизированных данных PCM в 8-битный поток данных. Во время воспроизведения 8-битные данные восстанавливаются до 14-битных или 13-битных для воспроизведения, что отличается от MPEG для общего или Перед кодированием и декодированием рассмотрите фрагмент данных. G711 — это алгоритм кодирования и декодирования формы сигнала, то есть одна выборка соответствует одному кодированию, поэтому коэффициент сжатия фиксируется как:
Просто поймите, G.711 — это разновидность голосового аналогового сигнала.Нелинейное квантование, Битрейт 64 кбит / с.
G.726 — это алгоритм кодирования звука, определенный ITU-T. В 1990 году был предложен CCITT (предшественник ITU) на основе стандартов G.721 и G.723. G.726 может преобразовывать сигнал PCM 64 кбит / с в сигнал ADPCM 40 кбит / с, 32 кбит / с, 24 кбит / с, 16 кбит / с.
Самый распространенный способ —32 kbit/s, Но поскольку это только половина скорости G.711, это удваивает доступное пространство в сети. G.726 конкретно определяет, как сигнал PCM с А-законом или μ-законом 64 кбит / с преобразуется в каналы ADPCM со скоростью 40, 32, 24 или 16 кбит / с. Среди этих каналов каналы 24 и 16 кбит / с используются для передачи голоса в оборудовании цифрового умножения каналов (DCME), а каналы 40 кбит / с используются для сигналов демодуляции данных в DCME (особенно 4800 кбит / с или выше). модем).
Фактически, вход кодера G.726 обычно является выходом кодера G.711: 64 Кбит / с A-закон или µ-закон;Суть алгоритма G.726 — это ADPCM, алгоритм адаптивного квантования, который сжимает 64 Кбит / с до 32 Кбит / с.
AAC, полное имяAdvanced Audio Coding, Китайское название: Advanced Audio Coding — это формат сжатия файлов, специально разработанный для звуковых данных. В отличие от MP3, он использует совершенно новый алгоритм кодирования, который более эффективен и имеет более высокое «соотношение цены». Используя формат AAC, люди могут почувствовать, что качество звука существенно не ухудшилось, и он более компактный. Мобильные телефоны Apple iPod и Nokia поддерживают аудиофайлы в формате AAC.
преимущество: По сравнению с mp3 формат AAC имеет лучшее качество звука и файлы меньшего размера.
недостаточный: AAC принадлежитСжатие с потерямиФормат, с популярнымФорматы без потерь, такие как APE и FLACПо сравнению с качеством звука есть «существенный» пробел. Вдобавок, USB3.0 с более высокой скоростью передачи и MP3 большой емкости выше 16 Гб ускоряют популяризацию, что также устраняет «маленький» ореол на головке AAC.
AAC — это новое поколение технологии сжатия звука с потерями. В нем используются некоторые дополнительные технологии кодирования (такие как PS, SBR и т. Д.) Для получения трех основных кодировок: LC-AAC, HE-AAC и HE-AACv2. LC-AAC — это По сравнению с традиционным AAC, относительно говоря, он в основном используется для средних и высоких кодовых скоростей (> = 80 Кбит / с), HE-AAC (эквивалент AAC + SBR) в основном используется для среднего и низкого кода ( 48 Кбит / с без PS, что эквивалентно обычному HE-AAC.
Сравнение форматов
Как и в таблице выше, то аудиоДлина кадраЧто за концепция?
На самом деле концепция аудиокадров не так ясна, как видеокадры.Почти все форматы кодирования видео могут воспринимать кадр как закодированное изображение. Но аудиокадр связан с форматом кодирования, который реализуется каждым стандартом кодирования. Потому что, если вы возьмете PCM (некодированные аудиоданные), для них вообще не нужна концепция кадров, и их можно воспроизводить в соответствии с частотой дискретизации и точностью дискретизации. Например, для звука с частотой дискретизации 44,1 кГц и точностью дискретизации 16 бит битрейт можно вычислить как 4410016kbps, аудиоданные в секунду фиксированы 4410016/8 байтов.
При декодировании звука AAC (Advanced Audio Coding) с частотой дискретизации 44,1 кГц время декодирования одного кадра должно контролироваться в пределах 23,22 миллисекунды. Обычно один кадр основан на 1024 точках выборки.
Длина кадра G.711 в приведенной выше таблице равна 480 в качестве примера, тогда продолжительность одного кадра равна480/8khz=0.06s=60ms。
Источник
Учебник. декодирование аудио
В этом учебнике показано, как использовать средство чтения исходного кода для декодирования звука из файла мультимедиа и записи звука в волновый файл. Учебник основан на образце аудиоклипа .
Обзор
В этом руководстве вы создадите консольное приложение, которое принимает два аргумента командной строки: имя входного файла, содержащего аудиопоток, и имя выходного файла. Приложение считывает из входного файла пять секунд звуковых данных и записывает звук в выходной файл в виде ВОЛНовых данных.
Для получения раскодированных звуковых данных приложение использует объект модуля чтения исходного кода. Модуль чтения исходного кода предоставляет интерфейс имфсаурцереадер . для записи декодированного звука в волновый файл приложения используют Windows функции ввода-вывода. Этот процесс показан на следующем рисунке.
В простейшей форме файл WAVE имеет следующую структуру:
Тип данных | Размер (байт) | Значение |
---|---|---|
FOURCC | 4 | Metallica |
DWORD | 4 | Общий размер файла, не включая первые 8 байт |
FOURCC | 4 | ЗВУКОВ |
FOURCC | 4 | FMT |
DWORD | 4 | Размер данных вавеформатекс , приведенных ниже. |
вавеформатекс | Различается | Заголовок звукового формата. |
FOURCC | 4 | Data |
DWORD | 4 | Размер звуковых данных. |
ДВУХБАЙТОВЫХ[] | Различается | Звуковые данные. |
FourCC — это двойное слово , сформированное путем сцепления четырех символов ASCII.
Эту базовую структуру можно расширить, добавив метаданные файла и другую информацию, которая выходит за рамки данного руководства.
Файлы заголовков и библиотек
Включите в проект следующие файлы заголовков:
Ссылка на следующие библиотеки:
- мфплат. lib
- мфреадврите. lib
- мфууид. lib
Реализация wmain
В следующем коде показана функция точки входа для приложения.
Эта функция выполняет следующие действия:
- Вызывает CoInitializeEx для инициализации библиотеки COM.
- Вызывает мфстартуп для инициализации платформы Media Foundation.
- Вызывает мфкреатесаурцереадерфромурл для создания модуля чтения исходного кода. Эта функция принимает имя входного файла и получает указатель интерфейса имфсаурцереадер .
- Создает выходной файл, вызывая функцию CreateFile , которая возвращает маркер файла.
- Вызывает определяемую приложением функцию вритевавфиле . Эта функция декодирует аудио и записывает звуковой файл.
- Освобождает указатель имфсаурцереадер и дескриптор файла.
- Вызывает мфшутдовн для завершения работы платформы Media Foundation.
- Вызывает CoUninitialize для освобождения библиотеки COM.
Запись файла WAVE
Большая часть работы происходит в WriteWavFile функции, которая вызывается из wmain .
Эта функция вызывает ряд других определяемых приложением функций:
- Функция конфигуреаудиостреам Инициализирует модуль чтения исходного кода. Эта функция получает указатель на интерфейс имфмедиатипе , который используется для получения описания раскодированного аудио формата, включая частоту выборки, число каналов и глубину бит (бит на выборку).
- Функция Вритевавехеадер записывает первую часть ВОЛНового файла, включая заголовок и начало фрагмента данных.
- Функция Калкулатемаксаудиодатасизе вычисляет максимальный объем аудиоданных для записи в файл в байтах.
- Функция Вритеваведата записывает звуковые данные PCM в файл.
- Функция Фиксупчунксизес записывает сведения о размере файла, которые отображаются после значений «Metallica» и «Data» FourCC в волном файле. (Эти значения неизвестны до WriteWaveData завершения.)
Эти функции показаны в остальных разделах этого руководства.
Настройка модуля чтения исходного кода
ConfigureAudioStream Функция настраивает модуль чтения исходного кода для декодирования звукового потока в исходном файле. Он также возвращает сведения о формате декодированного звука.
В Media Foundation форматы мультимедиа описываются с помощью объектов типа мультимедиа . Объект типа мультимедиа предоставляет интерфейс имфмедиатипе , который наследует интерфейс имфаттрибутес . По сути, тип носителя — это коллекция свойств, описывающих формат. Дополнительные сведения см. в разделе типы носителей.
ConfigureAudioStream Функция выполняет следующие действия:
- Вызывает метод имфсаурцереадер:: сетстреамселектион , чтобы выбрать аудиопоток и отменить выбор всех остальных потоков. Этот шаг может повысить производительность, так как предотвращает удержание модуля чтения исходного кода на видеокадры, которые не используются приложением.
- Создает частичный тип носителя, указывающий звук PCM. Функция создает разделяемый тип следующим образом:
- Вызывает мфкреатемедиатипе для создания пустого объекта типа мультимедиа.
- Устанавливает атрибут _ _ основного _ типа MF MT в мфмедиатипе _ Audio.
- Устанавливает атрибут _ _ подтипа MF MT в мфаудиоформат _ PCM.
- Вызывает имфсаурцереадер:: сеткуррентмедиатипе для установки разделяемого типа в модуле чтения исходного кода. Если исходный файл содержит закодированный звук, модуль чтения исходного кода автоматически загружает необходимый звуковой декодер.
- Вызывает имфсаурцереадер:: жеткуррентмедиатипе , чтобы получить фактический тип носителя PCM. Этот метод возвращает тип носителя со всеми заполненными сведениями о формате, например скорость дискретизации и число каналов.
- Вызывает имфсаурцереадер:: сетстреамселектион для включения аудиопотока.
Запись заголовка ВОЛНового файла
WriteWaveHeader Функция записывает заголовок волнового файла.
Единственным Media Foundation API, вызываемым из этой функции, является мфкреатевавеформатексфроммфмедиатипе, который преобразует тип мультимедиа в структуру вавеформатекс .
WriteToFile функция является простой вспомогательной функцией, которая заключает Windows функции WriteFile и возвращает значение HRESULT .
Вычисление максимального размера данных
Так как размер файла хранится в виде 4-байтового значения в заголовке файла, файл звукозаписи ограничивается максимальным размером в 0xFFFFFFFF байт — примерно 4 ГБ. Это значение включает размер заголовка файла. Звук PCM имеет постоянную скорость, поэтому вы можете вычислить максимальный размер данных из аудио формата следующим образом:
Чтобы избежать частичных звуковых кадров, размер округляется до выравнивания блока, который хранится в атрибуте _ _ _ _ выравнивания звукового блока MF MT .
Декодирование звука
WriteWaveData Функция считывает декодированный звук из исходного файла и выполняет запись в волновый файл.
WriteWaveData Функция выполняет следующие функции в цикле:
- Вызывает имфсаурцереадер:: реадсампле для чтения звука из исходного файла. Параметр dwFlags получает побитовое или из перечисления _ _ _ флагов считывания источника MF . Параметр псампле получает указатель на интерфейс имфсампле , который используется для доступа к звуковым данным. В некоторых случаях вызов реадсампле не создает данные, в этом случае указатель Имфсампле имеет значение NULL.
- Проверяет dwFlags для следующих флагов:
- MF _ SOURCE _ реадерф _ куррентмедиатипечанжед. Этот флаг указывает на изменение формата в исходном файле. Файлы WAVE не поддерживают изменения формата.
- MF _ SOURCE _ реадерф _ ENDOFSTREAM. Этот флаг указывает конец потока.
- Вызывает имфсампле:: конверттоконтигуаусбуффер для получения указателя на объект буфера.
- Вызывает имфмедиабуффер:: Lock для получения указателя на буферную память.
- Записывает звуковые данные в выходной файл.
- Вызывает метод имфмедиабуффер:: Unlock для разблокировки объекта буфера.
Функция выходит из цикла, когда происходит любое из следующих условий:
- Изменяется формат потока.
- Достигнут конец потока.
- Максимальный объем звуковых данных записывается в выходной файл.
- Происходит ошибка.
Финализировать заголовок файла
Значения размера, хранящиеся в заголовке WAVE, неизвестны до завершения предыдущей функции. FixUpChunkSizes Заполнит следующие значения:
Источник