FreeBSD: звук : FreeBSD запись wav, mp3, CD
Пишем звук с микрофона
Прежде всего запустите команду aumix и убедитесь, что чувствительность микрофона не на нуле. Программа имеет очень понятный интерфейс, а канал микрофона показан красной буквой R, так-что вы не запутаетесь.
Кстати, эта же программа позволяет регулировать и другие каналы, включая такую полезную вещь, как миксер. Вы можете подать сигнал с микрофона сразу на колонки или на линейный выход. Здесь же вы можете отрегулировать баланс левого и правого канала и многое другое. Кроме того, программа aumix может работать не только в интерактивном режиме, загляните в man 1 aumix.
Пишем звук с микрофона:
sox -r 48000 -t ossdsp -w -s /dev/dsp -r 48000 sound.wav
Файл wav можно конвертировать в mp3 командой bladeenc (см. ниже).
Конвертируем audio-CD в mp3
Создаём из audio-CD набор mp3-файлов:
cdda2wav -D /dev/acd0 -x -B
bladeenc -192 *.wav
Если у вас SCSI-привод (или вы работаете с ATAPI-устройством, через atapicam(4), эмулируя SCSI), то в опции -D следует указывать идентификатор устройства. Например:
cdda2wav -D 0,1,0 -x -B
Узнать идентификатор вам поможет команда
cdda2wav -scanbus
Конвертируем mp3 в mp3
Часто надо преобразовать mp3 в mp3 с другими параметрами.
Например, мой сотовый не может проигрывать mp3 с качеством больше 256 kbit/s и я имею копию своей аудио-коллекции с пониженным качеством для прослушивания на сотовом.
Простой способ
Если нужно просто снизить bitrate, то можно обойтись двумя элементарными действиями:
# mp3 -> wav
mpg123 -w song.wav song.mp3
# wav -> mp3
bladeenc -128 song.wav song.mp3
Сложный способ
Шаг 1: раскодируем mp3-файл командой:
mpg123 -s 01-Intro.mp3 >temp.raw
Расширение результирующего файла должно быть именно .raw. Дальше мы будем работать с sox, а он придаёт большое значение расширениям файлов.
На экране вы увидите что-то вроде этого:
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!
Title : хМРПН Artist: FlTur
Album : оПХЙНЯМНБЕМХЕ Year : 2002
Comment: Genre : UnknownPlaying MPEG stream from 01-Intro.mp3 …
MPEG 1.0 layer III, 256 kbit/s, 44100 Hz stereo[0:35] Decoding of 01-Intro.mp3 finished.
Здесь для нас важны два факта: 44100 Hz и stereo
В файле temp.raw мы получили PCM-поток — поток данных для аудио-карты.
Шаг 2: Теперь конвертируем его в wav:
sox -s -w -c 2 -r 44100 temp.raw temp.wav
Ключами мы указали частоту (-r 44100), количество стерео-каналов (-c 2) и ещё два важных факта: что данные кодируются числами со знаком -s и одно число занимает два байта -w. Скорее всего эти параметры вам подойдут, но если в temp.wav будут трески или скорость замедлится или ускорится, то загляните в man sox и поварьируйте параметры конвертирования.
Кстати sox умеет гораздо больше, чем просто конвертировать один формат в другой. Вы можете отрезать часть файла, изменить громкость, свести стерео-каналы и даже добавить различные спец-эффекты, такие как эхо. Например, вы могли изменить bitrate на 32Hz:
sox -s -w -c 2 -r 44100 temp.raw -r 32000 temp.wav rate
Правда, понижение bitrait'a практически не сказывается на объёме mp3-фала при сильном сжатии (как в нашем случае).
В результате у вас должен получиться wav-файл.
Шаг 3: Конвертируем wav в mp3 нужного качества:
bladeenc -128 temp.wav 01-Intro-128.mp3
Все эти шаги можно записать в один командный файл или сразу в цикл для конвертирования целой коллекции. Например как-то так:
#!/bin/sh
for d in [A-Z]*
do
echo "DIR: $d"
mkdir "128/$d"
for f in $d/*
do
echo "$d / $f"
mpg123 -s "$f" >temp.raw
sox -s -w -c 2 -r 44100 temp.raw temp.wav
bladeenc -128 temp.wav "128/$f"
done
done
Естественно это не готовое решение, а просто пример.
Универсальный способ
Можно пойти другим путём — научить сам sox работать с mp3. Для этого надо пересобрать sox из портов, указав в появившемся диалоге, что вам нужна поддержка mp3 (так же можно подключить и другие форматы, например ogg).
cd /usr/ports/audio/sox
make
make install
После этого можно преобразовывать mp3 только средствами sox.
Например, часто необходимо разбить один mp3 на части. (Обычно это приходится делать с лекциями и радио передачами) Сделать это становится очень просто:
#!/bin/sh
s=5 # продолжительность одного фрагмента
l=60 # продолжительность исходной записи
i=0
while test $i -lt $l
do
f=`printf '20071217-p%02d.mp3' $i`
echo "Recording $f…"
sox 20071217-100000-RU-program.mp3 $f trim $i:00 $s:00
i=$(($i+$s))
done
Естественно, тот же самый результат можно получить и предыдущими способами, через промежуточное преобразование.