Вы, возможно, не знали о том, что компоненты, которые
устанавливаются вместе с Windows Media Player 9 (и более поздними версиями)
содержат встроенные средства широковещательной передачи аудио-данных. Фактически
каждый подключенный к сети компьютер, на котором установлен Windows Media Player,
может быть превращен в сетевую радиостанцию. Для этого можно воспользоваться
готовыми программами. Можно написать собственную программу, используя напрямую
интерфейсы, предоставляемые Windows Media System (такие как IWMWriterNetworkSink,
IWMProfile, IWMCodecInfo) и еще десяток функций и интерфейсов (их описание
содержится в Windows Media SDK).
Мы рассмотрим другое решение - создание собственной
Интернет-радиостанции с помощью Delphi и компонентов New Audio Components
(NewAC). Написать такую программу очень просто. Мы увидим, что в простейшем
примере нам будет достаточно соединить два компонента и настроить их свойства.
Что дает нам написание собственной программы передачи аудио-данных?
Прежде всего - свободу. Можно организовать передачу аудио с помощью микрофона,
подключенного к вашему компьютеру. Можно передавать содержимое аудио-записей с
вашего компьютера (для этого надо будет задействовать компоненты чтения
аудио-данных из различных форматов, входящие в состав NewAC). Можно просто
транслировать все, что звучит в вашей системе.
Поскольку передача данных выполняется в формате Windows Media Audio,
ее можно будет прослушивать с любого компьютера, на котором установлен Windows
Media Player, или совместимый проигрыватель. Стоит отметить, что за последние
годы качество потокового аудио-формата Windows Media Audio заметно улучшилось,
так что даже при скорости передачи данных 16 кбит/сек мы можем получить звук
вполне приемлемого радио-качества. При этом передача данных создаст
незначительную нагрузку на локальную сеть. Разумеется, ничто не мешает нам
организовать передачу данных с более высоким битрейтом, (а, следовательно, -
качеством), но нагрузка на сеть в этом случае, естественно, возрастет. При
наличии DSL-модема и видимого из внешней сети IP-адреса вы даже можете
организовать трансляцию в глобальную сеть, хотя число клиентов, способных
принимать вашу радиопередачу будет не очень велико.
Пишем программу
Передача данных осуществляется компонентом TWMStreamedOut.
Разместим этот компонент в форме приложения.
Компонент TWMStreamedOut в окне формы приложения
В Инспекторе объектов следует настроить важнейшие свойства объекта
WMStreamedOut1.
Свойства объекта WMStreamedOut1 в окне Object inspector
Свойство DesiredBitrate позволяет установить скорость и качество
передачи данных. Скажем сразу, что фактическая скорость передачи данных может
быть ниже, чем та, которую мы выбрали. Дело в том, что система Windows Media
предоставляет нам несколько кодеков, каждый из которых работает с фиксированным
набором входных форматов аудио-данных. Результирующий формат данных, созданных
кодеком, зависит от типа кодека и входного формата данных, в большей степени,
чем от заданного нами битрейта. Компонент TWMStreamedOut сам подбирает
оптимальный кодек (можно пойти и по более сложному пути - выбрать нужный коде и
формат вручную, но сейчас мы рассматриваем самое простое решение).
Поскольку все кодеки являются частью формата Windows Media Audio,
принимающая программа (Windows Media Player) справится с любым сочетанием.
Свойство Id3V2Tags позволяет нам добавить текстовую информацию к
передаваемой записи (эта информация будет отображаться в принимающей программе).
Свойство MaxClients позволяет указать максимальное число одновременных
подключений к нашей радиостанции (если присвоить этому свойству значение 0,
максимально допустимое число клиентов будет неограниченным).
В свойстве Port мы указываем номер порта, по которому наша
программа будет ожидать запросы на подключение.
С помощью свойства Input мы указываем объекту WMStreamedOut1
объект-источник данных. Обзор компонентов-источников аудиоданных NewAC выходит
за рамки этой статьи. В нашем примере мы используем компонент DXAudioIn, который
позволяет передавать звук, поступающий на различные входы ваших звуковых карт
или просто работать в режиме "What U hear" - "все, что вы слышите", если ваше
оборудование поддерживает такой режим.
В обработчике события OnClick кнопки StartButton, запускающей
передачу, достаточно написать:
procedure TForm1.StartButtonClick(Sender: TObject);
begin
StartButton.Enabled := False;
WMStreamedOut1.Run;
end;
Вы можете скачать программу в виде
исходных текстов (6 Кб, проект Delphi
2007).
Требуемые компоненты для работы исходника можно скачать на сайте
автора - symmetrica.net,
либо
тут (1,2 Мб).
Начинаем радиовещание
После запуска программы нам остается выбрать аудиоустройство, с
которого мы будем транслировать звук, и щелкнуть кнопку "Старт".
Интернет-радиостанция в работе
Наша программа передает данные в сеть, так что если ваш компьютер
защищен брандмауэром, необходимо добавить программу-радиопередатчик в список
программ, которым разрешен доступ в сеть.
Прослушивание
Для того чтобы "настроиться" на нашу радиостанцию, нужно запустить
проигрыватель Windows Media, выбрать команду "Файл >> Открыть URL-адрес…" и в
открывшемся окне ввести адрес вида:
mms://<имя_узла>:<порт>
например, так как показано на рисунке.
На всякий случай поясню, что "порт" должен соответствовать тому
значению, которое мы указали в свойстве Port объекта WMStreamedOut1.
После этого вы можете насладиться прослушиванием.
Следует иметь в виду, что в следствие буферизации данных, как на
стороне передатчика, так и на стороне приемника, даже в локальной сети
трансляция осуществляется с задержкой в несколько секунд.
Дата: 16.07.2008,
Автор:
Андрей
Боровский.
Оригинал статьи в формате Word (74 Кб):
internet-radio.zip
|