Программирование
On-line приложения
Почитать
Web-сервер Apache
Печать и форматирование
MySQL
Разные рецепты
Сборка/установка
Справки
Философия
Мой опыт
Скачать
Программы на Tcl/Tk (GUI)
Программы на Python/Tk (GUI)
Программы (CLI)
Help
Хобби
Фракталы
on-line
Язык для рисования фракталов
Гиперкуб
Теория относительности
Ампуллярии
Преподавание
Студенту/абитуриенту
Мой опыт
Автора!

FreeBSD: звук

Здесь я привожу только самые элементарные приёмы. О сборке ядра см. раздел о начальной настройке.

Пишем звук с микрофона

Прежде всего запустите команду 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: Fl╦ur
Album  : оПХЙНЯМНБЕМХЕ                   Year  : 2002
Comment: http://www.fleur.kiev.ua        Genre : Unknown

Playing 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

Естественно, тот же самый результат можно получить и предыдущими способами, через промежуточное преобразование.

Эта страница набрала не малую популярность, её посещает множество людей, поэтому я решил провести небольшое исследование. Если у вас есть комментарий, если вы сочли полученную информацию полезной, не полной, или вообще бесполезной, вы можете высказать своё мнение, пожелания, дополнения.

Если вы ожидаете получить от меня ответ или разъяснение, пожалуйста укажите e-mail, ICQ или другую контактную информацию.
Ваше сообщение не появится на странице, а просто отправится мне.

© 1999 − 2008 Мичурин Алексей — http://www.michurin.com.ru/