Передача звука по локальной сети windows

организация вещания потокового аудио в локальной сети

Хотелось бы поделиться своим опытом в установке и настройке сервера потокового аудио IceCast. В нашей локальной сети находится несколько десятков компьютеров. Основная масса – под управлением ОС семейства Windows. Мой рабочий компьютер – полигон для испытания различных сервисов. Однажды после прослушивания потокового аудио через Интернет я задался вопросом, можно ли организовать нечто подобное в масштабе нашей сети. Это ведь здорово — разобраться как работает такой интересный интернет-сервис. Итак, приступим к поискам нужного ПО.

Я использую программу управления пакетами aptitude, но вы вольны воспользоваться любой другой, которую предоставляет ваш любимый дистрибутив. Итак, я направляюсь прямиком в раздел Audio, и что я вижу там? Порядка 300 пакетов для работы с аудио! Трудный выбор. Начинаем просмотр пакетов по порядку. Плееры, синтезаторы, аудиомикшеры, плагины, front-end’ы к различным консольным аудиопрограммам и сами консольные утилиты. Черт как же тяжело сделать выбор между ними – по ходу дела все хочется поставить и попробовать, но не отвлекаемся, а ищем сервер потокового аудио. После моих изысканий нарисовался небольшой списочек. Так-с:
— DarkIce;
— Gnump3d;
— IceCast;
— slimp3.

Вооружаемся словарем и пытаемся понять, что написано в описаниях пакетов.

DarkIce – захватывает аудиопоток из звуковой карты, кодирует в mp3/oggVorbis и посылает серверу потокового аудио IceCast – немного не то. (но тоже может пригодиться).

Gnump3d – сервер, который предоставляет веб-интерфейс к коллекции музыкальных файлов на нашем жестком диске – тоже не то.

Остаются IceCast2 и slimp3 – и это, похоже, то, что нам нужно.

Общий принцип функционирования IceCast можно пояснить следующей упрощенной схемой (см. рис. 1).

Файлы из музыкальной коллекции передаются посредством указания их в плейлисте так называемому streamer’у, в качестве которого предлагаю использовать Ices. Ices кодирует их и посылает серверу потокового аудио IceCast. К серверу IceCast подключаются клиентские машины, с которых возможно прослушивание музыки.
Попробуем разобраться, как настроить IceCast. А что если в лоб?

# icecast
usage: icecast [-h -b -v] -c
options:
-c Specify configuration file
-h Display usage
-v Display version info
-b Run icecast in the background

Ага! Надо указать конфигурационный файл. Пример конфигурационного файла в XML формате, поставляемого с IceCast – icecast_minimal.in. Я немного покромсал этот файл и убрал из него все лишнее.
Рассмотрим его подробнее с пояснениями по ходу дела.


Секция ограничений.

50

Количество одновременно подключенных пользователей. Выставляем желаемое. Сеть небольшая – поставлю-ка я 50.

2

Количество обрабатываемых сервером аудиопотоков. Я хотел бы организовать 2 разных потока аудио, поэтому ставлю 2.
5


Количество потоков, запускаемых сервером для поддержания соединений с клиентами. В оригинальных комментариях к файлу значение 5 рекомендовано для серверов с малым и средним траффиком. Оставлю 5.

102400

Максимальный размер (в байтах) очереди для клиентов, подключенных к нашему серверу. Оставляем значение по умолчанию.

15

Максимальное время ожидания в секундах для запросов от клиентов. Оставляю без изменений.

10

Если подключенный к серверу аудиопоток не посылает данные 10 секунд, этот аудиопоток удаляется. Оставляем как есть.

Читайте также:  Windows не видит flash usb


Настройка номера TCP-порта. Значение по умолчанию 8000.

192.168.1.229

Привязка к сетевому адресу. Если параметр не указан, используется значение hostname. Поставим для страховки 192.168.1.229.


В этой секции меня заинтересовали некоторые параметры, которые придают нашему серверу профессиональный вид. Здесь задаются специальные параметры для точек монтирования. Пока точка монтирования у нас одна – она описывается далее в файле настроек Ices.

/paradiselost.ogg

Имя точки монтирования.

source

Имя пользователя – оставляем source.


Пароль – в моем случае mypass.

/intro.ogg

Интересный параметр, в котором следует указать имя файла, который должен быть помещен в каталог webroot — в моем случае это каталог /home/kirill/icecastwebroot.
Этот файл будет проигрываться всем новым пользователям, которые подключаются к нашему аудиосерверу. В этот файл я записал свое приветствие слушателям.

/fall.ogg

В этом параметре также указывается имя файла, который должен находиться в каталоге webroot. Этот файл будет проигран клиентам в том случае, если что-то пошло не так и нормальный аудиопоток недоступен. В этот файл лично я записал сообщение “Аудиопоток недоступен – попробуйте присоединиться позже” и добавил свой любимый аудиотрек.


Секция «Пути».

/var/log/icecast

Каталог для записи логов (всегда есть куда глянуть, если что-то пойдет не так).

/home/kirill/icecastwebroot

В этой директиве определяется базовый каталог для статических файлов. Этот каталог может содержать любые файлы. Допустим, мы указали в этой директиве /home/kirill/icecaswebroot. Если теперь в строке браузера указатьhttp://192.168.1.229:8000/mp3/example.mp3,то на компьютер клиента будет загружен файл /home/kirill/icecastwebroot/mp3/example.mp3.

/home/kirill/icecastwebroot/admin

В этой директиве указывается каталог для инструментов администрирования. При инсталляции IceCast устанавливается ряд скриптов в формате XSL для администрирования сервера через веб.

Если поместить эти скрипты (в моем случае) в /home/kirill/icecastwebroot/admin, то в панель веб-администрирования можно будет попасть, набрав в строке браузераhttp://192.168.1.229:8000/admin/.


В этой строке задается имя и путь к так называемому pid-файлу, который создается при старте и удаляется при завершении работы сервера. Файл содержит process ID сервера, который используется для посылки сигналов серверу.


Лог проигрываемых аудиофайлов.

4

Что будет записываться в логи. От 4 — максимум отладочной информации — и до 1 – только ошибки.


Секция «безопасность».

0

Указывает, будет ли использоваться chroot(). Директория, в которую делается chroot, указывается в директиве .

kirill
kirill


Эта директива указывает серверу от чьего имени и группы стартовать. Следует указывать реально существующих пользователей. Я решил не добавлять пользователей, а запускать сервер от своего имени.


Я записываю этот файл в свой домашний каталог под именем mynewicecastconfig. Ну вроде все! Можно попробовать стартовать сервер следующей командой:

#icecast -c /home/kirill/mynewicecastconfig -b
Starting icecast2
Detaching from the console
# Changed groupid to 1000.
Changed userid to 1000.

Опция -b заставляет сервер запуститься в фоновом режиме. Внимательно просмотрите файл на предмет наличия незакрытых тегов, иначе IceCast стартовать не захочет.

Похоже, что все в порядке. В лог-файлах ошибок не наблюдается, в списке процессов появился icecast, nmap показывает, что порт 8000 открыт —

Starting nmap 3.81 (http://www.insecure.org/nmap/) at 2005-10-01 12:57 EEST
Interesting ports on Kirill (192.168.1.229):
(The 1653 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
25/tcp open smtp
.
8000/tcp open http-alt

Читайте также:  Как выключить антивирус windows 10 pro

Nmap finished: 1 IP address (1 host up) scanned in 0.623 seconds

и вводя в строку браузераhttp://192.168.1.229:8000/admin/,мы можем попасть в административный интерфейс.

Итак сервер IceCast настроен – теперь надо заставить его что-нибудь проиграть. Для этого требуется на этот самый сервер послать поток аудиоданных. После недолгих копаний в интернете и в списке пакетов я нашел то, что мне было нужно – Ices. Установка Ices прохоходит стандартным для Linux образом:

./configure
make
make install

Попробуем запустить программу:

#ices2
IceS 2.0.1
(c) Copyright 2001-2004 The IceS Development Team
Michael Smith
Karl Heyes
and others

Usage: "ices config.xml"

Понятно – опять требуется файл конфигурации. Рассмотрим его подробнее.

1

Тут все понятно – запускать ли ices в фоне. Мне как раз это и нужно – ставлю 1.

/var/log/ices

Куда записывать логи.

ices.log

Имя лог файла.

4

Уровень записи отладочных сообщений. 1 — ошибки, 2 — предупреждения, 3 — информация, 4 — отладочные сообщения. Ставлю 4 – потом всегда можно изменить.

0

Установка этого флага в 1 заставляет Ices выводить сообщения в консоль. Не хочу – ставлю 0.


Имя файла для записи PID. Оставлю как есть. Для моих нужд этот файл не потребуется.

My Great Rock Stream
ROCK
IMHO My best music
>http://xxx.xxx.com


В секции metadata описывается мета-информация, передаваемая в IceCast:
— name – имя аудиопотока. С долей самолюбования запишу сюда My Great Rock Stream;
— genre – жанр (ROCK, конечно);
— description – описание аудиопотока;
— url – ссылочка на сайт.


Эта секция отвечает за получение исходных аудиоданных. Есть два варианта:
1) аудиоинформация снимается со звуковой карты;
2) используется плейлист.

Поддерживается два типа плейлистов:
— basic — обыкновенный текстовый файл с именами музыкальных файлов;
— script — используется вывод какого-либо скрипта либо команды, возвращающей имя файла.

Для моих целей подходит значение basic.

playlist


Случайный порядок проигрывания. Поставлю ка я это значение равным 1 для непредсказуемости нашего аудиовещания.


Если файл плейлиста изменился, то воспроизведение начнется с начала. Ставим что хотим. Лично я поставил 0.


Если этот параметр имеет значение 1, то после проигрывания всего плейлиста будет произведен выход из программы. Меня это не устраивает – ставлю 0.


В этой секции можно определить один или несколько аудиопотоков. Эти потоки можно направить в разные точки монтирования на сервер Icecast.
192.168.1.229

Имя хоста на котором запущен сервер IceCast. В моем случае это 192.168.1.229.


Порт на котором работает IceCast.


Пароль для соединения с сервером. Вспоминаем что писали в файле конфигурации IceCast. Я использовал пароль mypass, поэтому его и прописываю.

/paradiselost.ogg

Имя аудиопотока. Используя это имя, клиенты будут прослушивать музыку. Использую /paradiselost.ogg.

2
80

Максимальная длина очереди. Параметр для продвинутых пользователей, к коим я себя не отношу. Оставим по умолчанию.

Читайте также:  Не могу разделить жесткий диск mac os

64000
44100
2

Параметры кодирования. Номинальный битрейт, частота, количество каналов.


Запишем этот файл в /home/kirill/icesconfig.
Ну вот, с файлом конфигурации Ices мы закончили. Теперь стоит задача сформировать плейлист. Это можно сделать различными способами. Я создавал два плейлиста при помощи команд:

# locate *.ogg | grep paradise_lost > /home/kirill/playlist.txt
# locate *.ogg | grep oggs > /home/kirill/all_ogg_files.txt

Первый плейлист – треки исполнителя Paradise Lost, второй – все файлы ogg vorbis из моей музыкальной коллекции.
Уфф!, теперь точно почти все готово – попробуем запустить ices.

#ices2 /home/kirill/icesconfig

Ошибок при запуске ices не последовало. Переходим к тестированию. Запускаем XMMS, жмем Ctrl-L и вводим в строкуhttp://192.168.1.229:8000/paradiselost.ogg.

С замиранием сердца жмем play.

Ура! Проигрывается intro.ogg, а потом из колонок льются мощные аккорды! Получилось! Теперь пробуем соединиться с сервером с других компьютеров – все OK.

Но это еще не все. Я хотел организовать 2 аудиопотока – paradiselost.ogg и all.ogg (для этого я и создавал два разных плейлиста. Сколько я не пытался прописать в файле конфигурации Ices два аудиопотока, мне так это и не удалось. Вернее получилось создавать два одинаковых с разным битрейтом. После поисков в интернет я нашел решение, и очень удивился, почему я до него не дошел сам. Решение следующее – запускать два процесса Ices – и каждому из процессов указывать свой файл конфигурации. После этого все прекрасно заработало. Дело осталось за малым – добавить запуск IceCast и Ices в инициализационные скрипты, либо вручную создать скрипт, который бы проделывал всю работу по запуску IceCast и Ices. Мой скрипт для запуска выглядит следующим образом:

Icecast –c /home/kirill/mynewicecastconfig

Рассматриваемая в статье версия IceCast – 2.3.0.
В качестве streamer-а могут выступать DarkIce, Muse-Streamer и другие программы, найти и настроить которые вам теперь не составит труда (см. также врезку).

Streamer Ices2 на данный момент не поддерживает формат mp3. Так как в моей музыкальной коллекции содержатся только файлы формата Ogg Vorbis, то у меня никаких проблем не возникло. Если Ваша музыкальная коллекция содержит только mp3 файлы то есть 2 пути решения проблемы:
- выбор streamer’а, который поддерживает mp3 (например, Muse Streamer и др.);
- конвертация музыкальной коллекции в формат Ogg Vorbis (можно воспользоваться для этой цели конвертером sox или другой доступной утилитой, коих, надеюсь, в вашем дистрибутиве предостаточно).

Рабочие файлы конфигурации с моими комментариями можно загрузить отсюда:http://sutulo.at.tut.by/icecasconfig.tar.gz.
В статье были использованы материалы сайта www.icecast.org.
Если появились вопросы - пишите мне на sutulo@tut.by.

программы, совместимые с IceCast

Медиаплееры, которые работают с IceCast:
- foobar2000 (mp3 + ogg vorbis), Windows 98/NT/2000/XP,http://www.foobar2000.org;
- winamp 2.x, 5.x (mp3 + ogg vorbis), Windows 98/NT/2000/XP,http://www.winamp.com;
- XMMS(mp3 + ogg vorbis), Unix,http://www.xmms.org;
- Zinf(mp3 + ogg vorbis), Unix/Windows,http://zinf.sourceforge.net;
- Mplayer, Windows 98/NT/2000/XP Unix Mac OSX,http://www.mplayerhq.hu;
- Xine, Unix,http://www.xinehq.de;
- VLC, Windows 98/NT/2000/XP Unix Mac OSX,http://www.videolan.org.

Сетевые решения. Статья была опубликована в номере 10 за 2005 год в рубрике sysadmin

Оцените статью
Adblock
detector