PCM
Кодек PCM (Pulse Code Modulation) — это метод цифрового представления аналогового сигнала путем дискретизации и квантования амплитуды сигнала. В отличие от других форматов, таких как MP3 или AAC, PCM является несжатым аудиоформатом, который сохраняет все данные исходного сигнала без потерь.
Основные параметры:
- Частота дискретизации: Обычно варьируется от 8 кГц до 192 кГц. Стандартные частоты включают 44.1 кГц (CD-качество), 48 кГц (стандарт для видео) и 96 кГц/192 кГц (высококачественное аудио).
- Разрядность: От 8 бит до 32 бит. Наиболее распространенные значения — 16 бит (для CD-аудио) и 24 бита (для профессионального аудио). Чем больше разрядность, тем выше точность представления амплитуды звука.
- Каналы: Моно (один канал), стерео (два канала) и многоканальные конфигурации (например, 5.1 или 7.1).
Области применения:
- Профессиональная звукозапись: Благодаря отсутствию потерь при сжатии, PCM часто используется в студийной работе, где важно сохранить максимальную верность оригиналу.
- Цифровое вещание: PCM применяется в системах передачи цифрового аудио, включая Blu-ray диски, DVD-Audio и цифровые радиосистемы DAB/DVB.
- Потоковая передача данных: В некоторых случаях, когда требуется максимальная точность воспроизведения, может использоваться потоковый формат PCM, особенно в локальных сетях или высокоскоростных соединениях.
Сравнение с другими кодеками:
- MP3/AAC: Эти кодеки используют алгоритмы сжатия с потерями, удаляя части звукового спектра, которые считаются малозначительными для человеческого слуха. Они обеспечивают значительное уменьшение размера файла, но за счет качества звука.
- FLAC/WAVPACK: Кодеки без потерь, которые позволяют сжимать файлы PCM без потери информации. FLAC обеспечивает компрессию примерно на 50–60%, сохраняя оригинальную точность.
Принцип работы:
PCM работает следующим образом:
- Дискретизация: Аналоговый сигнал разбивается на отдельные временные отсчеты (samples) с определенной частотой (частотой дискретизации).
- Квантование: Каждый отсчет преобразуется в цифровую форму путем присвоения ему ближайшего возможного уровня (кванта) из диапазона значений, определяемого разрядностью.
- Кодирование: Полученные значения сохраняются в цифровой форме, представляя собой последовательность чисел.
Пример кодирования через FFmpeg:
Для конвертации WAV-файла в PCM с помощью FFmpeg можно использовать следующую команду:
ffmpeg -i input.wav -acodec pcm_s16le output.pcm
Где:
input.wav— входной файл,pcm_s16le— формат PCM с 16-битным разрешением и little-endian байтовым порядком,output.pcm— выходной файл.
Пример использования GStreamer:
В GStreamer можно создать конвейер для записи PCM-потока с микрофона:
gst-launch-1.0 alsasrc ! audioconvert ! audio/x-raw,format=S16LE,channels=2,rate=44100 ! filesink location=output.pcm
Здесь:
alsasrc— источник звука (микрофон),audioconvert— преобразователь формата аудио,filesink— запись в файл.
Таким образом, PCM является простым и эффективным способом хранения и передачи высококачественного аудио, хотя он требует значительно большего объема памяти по сравнению с кодеками с потерями.