Слушаем микрофоны в доме или домашнее Интернет-радио своими руками
Использование ZoneMinder для видеонаблюдения через локальную сеть или Интернет позволило видеть происходящее в доме и за его пределами. Но временами возникало ощущение немого кино. Нужен был звук. Микрофона было два — один в USB Web-камере Logitech C250, другой подключен к соответствующему входу системной платы компьютера. Как послушать звук через Интернет таким образом, чтобы это было возможно с нескольких компьютеров?
Ответ на этот вопрос показался мне очевидным — необходимо использовать сервер потокового аудиовещания. Во-первых, это наиболее удобный, гибкий и быстрый способ «завести» звук в Интернет, а, во-вторых, это расширяет возможности сервера Умного Дома. Теперь у меня появится возможность не только слушать микрофоны из любой точки мира, но и организовать домашнее медиа-вещание, собственную Интернет-радиостанцию. Звук можно взять из микрофона, линейного входа, файла, потока. Источников медиа-контента может быть много, одновременно подключенных пользователей тоже, а сервер всего один. Как это сделать?
Существует два наиболее популярных сервера потокового аудио — это SHOUTcast от известной компании Nullsoft (разработчика Winamp) и Icecast. Оба сервера бесплатны, но есть нюансы. SHOUTcast можно скачать только скомпилированным, тогда как Icecast — полноценный OpenSource, доступный в репозитории Debian.
Установка и настройка SHOUTcast в Linux
Поскольку SHOUTcast наиболее распространен, я попробовал сначала установить его. Любой потоковый сервер состоит из двух частей: собственно самого сервера и программы, которая направляет ему аудиопоток. Программа-сервер обычно одна, тогда как стримеров может быть несколько. Для запуска сервера достаточно с сайта SHOUTcast скачать и распаковать SHOUTcast DNAS и SHOUTcast Transcoder.
Настройка программ крайне проста. Достаточно в конфигурационном файле sc_cerv.conf задать пароль и порт (обычно 8000). Сервер запускается без каких-либо сложностей.
В бета-версиях ПО от Nullsoft на бинарных файлах часто не прописаны права для запуска, поэтому после распаковки транскодера Beta 6, находясь внутри распакованной папки нужно выполнить команду:
Настройка транскодера тоже несложная процедура. Достаточно прописать пароль, IP-адрес сервера, порт и указать плейлист. Формат плей-листа незатейливый — каждый файл в отдельной строчке. Для проверки работоспособности я создал плей-лист своего mp3 архива и запустил транскодер. И тут возникла первая проблема
msg:[sourceAndEndpointManager] Unknown encoder type mp3
Бесплатный софт от Nullsoft оказывается требует покупки лицензии за $5 для работы с MP3. Пришлось установить предыдущую, 5-ю версию транскодера, где такая лицензия не требовалась. 5-ый транскодер подцепил плейлист, а сервер отрапортовал о подключении транскодера. Чтобы проверить работоспособность своего новоиспеченого медиа-сервера я запустил VLC media player и попытался обратиться к домашнему серверу. VLC сообщил, что не может осуществить подключение. Выяснилась вторая проблема — из-за сложностей лицензирования в новых версиях VLC 1.1 нет поддержки SHOUTcast серверов. Пришлось скачивать и устанавливать (снимая многочисленные «галочки») родной плеер от Nullsoft Winamp. С Winamp’ом я услышал музыку, передающуюся по сети. Домашнее Интернет-радио заработало, но перспектива быть привязанным к плееру Winamp меня не вдохновила.
Но надо еще попробовать получить звук с микрофонов. Для этого в настройки транскодера я прописал
;;; LIVE CAPTURE: capture=1 capturedevice=/dev/dsp1 capturesamplerate=44100
Здесь /dev/dsp1 — встроенный в Web-камеру микрофон, установленный в котельной. Перезапустив транскодер я в плеере услышал непонятные свистящие звуки. Кажется, они отдаленно напоминали звуки работающих в котельной насосов, но только очень отдаленно. Я быстро установил, что все дело в Sample Rate. Только при значении 8000 я услышал нормальный звук. Видимо, аппаратура камеры, подключенная к интерфейсу USB2 ограничена определенным, довольно низким Sample Rate.
Задача вроде бы решена, но смущает, что для SHOUTcast мало или вовсе нет доступных работающих бесплатных Flash-плееров, новые версии ПО от Nullsoft требуют денежные компенсации за использования определенных возможностей программ, а попутно еще выяснилось, что сервер «стучит» — анонсирует себя на сайте SHOUTcast. Сразу же были замечены внешние подключения к серверу. Конечно, это все очень просто решить с помощью стандартных средств ядра Linux, но неприятный осадок от использования этого продукта остался.
Установка и настройка Icecast 2 в Linux
Затем я решил подключить Icecast. Сделать это еще проще:
Редактируем файл /etc/default/icecast2 и прописывает true в параметре ENABLE
Редактируем файл /etc/icecast2/icecast2.xml, где прописываем пароль, port и bind-address
Далее запускаем сервер /etc/init.d/icecast2 start
Для сервера Icecast используется стандартный streamer, который доступен в системе под именем ices2
Конфигурационный файл для него можно взять из папки examples.
В Debian: /usr/share/doc/ices2/examples/ices-oss.xml
Копируем этот файл в нужное нам место и также указываем порт, пароль, адрес сервера и настройки input: rate 8000, device /dev/dsp1
Запускаем ices2, открываем VLC и наслаждаемся знакомыми до боли звуками работающих горелок котла. Котел работает, значит все в порядке.
Надо отметить, что все эти манипуляции с сервером: установка софта, настройка, тестовый доступ к аудиопотоку производилось удаленно, через программу putty по протоколу SSH.
Встроенный в камеру Logitech C250 микрофон оказался вполне пригодным. Я отчетливо слышал щелканья газового счетчика, изменяющуюся под нагрузкой работу вентиляторов сервера. Пожалуй, при определенной сноровке можно определить какие из насосов системы отопления работают. Были слышны даже голоса людей, доносящиеся с первого этажа. Конечно, любой самый дешевый микрофон, подключенный к звуковой карте даст более качественный звук, но и встроенного в веб-камеру микрофона в целях мониторинга будет достаточно.
Таким образом, сервер Icecast показался мне более простым в установке, более гибким в настройке, не вымогающим денег, быстрее работающим и занимающим меньше оперативной памяти.
Для SHOUTcast и Icecast существует еще один opensource audio streamer, который называется darkice. Он также доступен в репозитории Debian Linux, а установка и использование не вызывает каких-либо сложностей. Мне показалось, что darkice имеет больше возможностей по сравнению с ices2.
SHOUTcast / Icecast Flash Player
Слушать поток посредством VLC или Winamp здорово, но хотелось бы интегрировать проигрыватель непосредственно в Web-интерфейс Умного Дома. Для этого нужен Flash-плеер, поддерживающий серверы потокового аудио. Я использовал в своем интерфейсе бесплатный плеер FFMp3 аргентинского разработчика Федерико Брикера. В этом плеере понравилась поддержка как MP3, так и OGG, что немаловажно, так как по умолчанию стримеры ices и darkice работают только с OGG Vorbis и для поддержки MP3 их нужно пересобирать вручную. Также ожидается выпуск новой версии плеера с поддержкой AAC+. Кроме того, плеер может работать со скинами.
Плеер действительно работает с потоками MP3 и OGG. Однако нормально проигрывает OGG поток только с частотой 44100 Гц. Так как звук с микрофона веб-камеры снимается с частотой 8000 Гц, пришлось настраивать в ices2 ресамплинг с 8000 на 44100 Гц. Не совсем обязательная процедура, учитывая возрастающий при этом битрейт с 18Кбит/с до 48Кбит/с. Впрочем, для ADSL2, а тем более для локальной сети это имеет небольшое значение. Плеер работает как с Mozilla FireFox, так и с Internet Explorer. Но для работы плеера обязательно нужно установить Adobe Flash Player 10.
Вот так плеер пока вписался в интерфейс.
Рассказ о «неработающем» микрофоне
Кроме встроенного в веб-камеру микрофона, я решил подключить к серверу (в разъем Mic на системной плате) настольный микрофон и вынести его на первый этаж дома. Опираясь на расхожее мнение, что все микрофоны от 50 до 500 рублей обеспечивают одинаковое качество, я купил самый дешевый настольный микрофон Genius Mic-01A. Когда я подключил микрофон к компьютеру, то был неприятно удивлен тишиной в «эфире», хотя ползунок Mic в микшере стоял на максимуме. Тогда я подключил гарнитуру A4Tech. Звук был, правда тихий. Неужели Genius неисправен? Еще раз проверил запись с микрофона с помощью программы arecord. Тишина. Поиск в Интернете показал, что с этой проблемой сталкиваются десятки людей, а решения нет. Но решение нашлось.
В моей системе микшер по умолчанию ALSA mixer. Необходимо открыть микшер, выбрать в меню Правка — Параметры. В открывшемся окне включить чекбокс Mic Boost (+20dB). Затем нужно перейти в закладку «Переключатели» и включить опцию Mic Boost. Микрофон заработал как положено. А чувствительность микрофона оказалась выше, чем у веб-камеры.
Автор: Andrey_B
Любое использование материалов сайта возможно только с разрешения автора и с обязательным указанием источника.
Добавить комментарий:
Сортировка комментариев: Последние сверху | Первые сверху
2012-06-25 08:25:43 | Виктор
Гхе. Вообще-то VLC умеет не только кодировать звук, но и вещать. Т.е. вам бы одного VLC хватило без всего остального.
2011-10-31 19:15:19 | Дмитрий
Спасибо за наводку. Связка Icecast2 и Ices2 работает. Появилось дополнительное обширное поле для экспериментов 😉
2011-09-01 14:01:12 | Иван
а как указать микрофон для icecast в условиях windows xp?
2011-05-27 21:41:17 | Олег
Блин, просто круто, респект за труды.