11.12. Запись аудиодиска для стандартных проигрывателей

Проблема

Требуется узнать, как записать аудиодиск для воспроизведения в бытовом проигрывателе (скажем, в машине). Также нужно уметь преобразовывать различные аудиоформаты (скажем, ogg-vorbis, mp3, .wav и .cdr), поскольку они не воспроизводятся на стандартных проигрывателях компакт-дисков, только на компьютерах.

Решение

Используйте sox, normalize и cdrecord, а также «болванки», предназначенные для записи аудио.

На первом этапе программа sox преобразует звуковые файлы в формат .cdr, после чего формат .cdr преобразуется в формат .wav.

Затем ключ -audio команды cdrecord преобразует файлы .wav в формат CD-DA (Compact Disk Digital Audio), поддерживаемый стандартными проигрывателями.

$ sox soundfile filename.cdr
$ sox filename.cdr filename.wav
$ cdrecord -v nofix -eject dev=0,1.0 -audio -pad filename.wav

Ключ -pad гарантирует правильное заполнение секторов диска, a -nofix оставляет диск открытым для добавления новых дорожек. Чтобы закрыть и зафиксировать диск, выполните следующую команду:

$ cdrecord -v -fix -eject dev=0,1,0

Преобразовывать файлы один за другим утомительно. Следующая команда Bash преобразует группу файлов .ogg в формат .cdr:

$ for i in *.ogg; do echo $i; sox $i ${i%.ogg}.cdr; echo ${i%.ogg}.cdr; done

Замените ogg расширениями тех файлов, которые требуется преобразовать.

Если коллекция дорожек собирается из разных источников, воспользуйтесь утилитой normalize и уравняйте громкость звука с ключом -m (Mixed mode):

$ normalize -m /soundfiles/*.wav

Выбор дорожек для записи может осуществляться разными способами. Следующая команда записывает все дорожки в формате .wav из каталога /home/songs в определённом порядке: сначала цифры, затем алфавитные символы в верхнем регистре, затем алфавитные символы в нижнем регистре:

$ cdrecord -v -nofix -eject dev=0,1.0 -audio -pad /home/songs/*.wav

Или перейдите в каталог /songs и перечислите отдельные песни:

$ cdrecord -v -nofix -eject dev=0,1,0 -audio -pad song1.wav song3.wav song7.wav

Обязательно используйте диски CD-R, рассчитанные на воспроизведение в бытовых проигрывателях.

Комментарий

Новые версии sox вроде бы должны поддерживать формат .mp3, но на практике это не всегда так. Выполните команду sox -h и посмотрите, какие форматы поддерживает команда. Если ваша конкретная версия sox не поддерживает .mp3, используйте mpg123 и sox:

$ mpg123 -b 10000 -s filename.mp3 | sox -t raw -r 44100 -s -w -c 2 - filename.wav

Параметры:

Диск не может содержать более 99 дорожек. Впрочем, чтобы на одном диске поместилось 99 песен, эти песни должны быть совсем короткими.

Если музыкальные файлы уже хранятся в формате .wav, вероятно, вам не придётся преобразовывать их. Тем не менее не все файлы .wav имеют правильную структуру для записи на диск; в таких случаях команда cdrecord остановится и выдаст сообщение об ошибке. Преобразуйте неправильный файл .wav в .cdr при помощи sox, а затем снова преобразуйте .cdr в .wav.

Форматы .wav и .flac обеспечивают наивысшее качество из всех форматов цифрового аудио. Всегда начинайте с них, если существует такая возможность, а потом преобразуйте их в другие форматы по мере необходимости. Чаще всего это делается для экономии места, поскольку файлы .wav и .flac очень велики. Файл .ogg обычно занимает около 1/10 объёма файла .wav.

Ogg Vorbis — открытая и не защищённая патентами технология кодирования аудиоинформации. Она не связана с лицензионными отчислениями или другими ограничениями, присущими запатентованным, закрытым форматам типа MP3.

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

MP3 — другой качественный формат сжатия с потерями. Это запатентованный, закрытый формат, поэтому его использование ограничено, код закрыт, а исполнители и распространители должны платить лицензионные отчисления. Компания «Thomson and Fraunhofer», которой принадлежат права на формат MP3, включает в него поддержку DRM (Digital Rights Management, а проще говоря, ограничение копирования).

См. также

cdrecord(1), sox(1), normalize(1).