Вы, возможно, не знали о том, что компоненты, которые устанавливаются вместе с
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.
![](/images/internet/clip_image002.gif) Свойства объекта
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;
Вы можете скачать программу в виде
исходных текстов
(проект Delphi 2007)
или в
скомпилированном
виде.
Начинаем радиовещание
После запуска программы нам остается выбрать
аудиоустройство, с которого мы будем транслировать звук, и щелкнуть кнопку
"Старт".
![](/images/internet/clip_image003.gif)
Интернет-радиостанция в работе
Наша программа передает данные в сеть, так что если ваш
компьютер защищен брандмауэром, необходимо добавить программу-радиопередатчик в
список программ, которым разрешен доступ в сеть.
Прослушивание
Для того чтобы "настроиться" на нашу радиостанцию нужно
запустить проигрыватель
Windows Media, выбрать команду
"Файл>>Открыть URL-адрес…" и в открывшемся окне ввести адрес вида:
mms://<имя_узла>:<порт>
например, так как показано на рисунке.
![](/images/internet/clip_image004.jpg)
На всякий случай поясню, что "порт" должен соответствовать
тому значению, которое мы указали в свойстве
Port объектаWMStreamedOut1.
После этого вы можете насладиться прослушиванием.
![](/images/internet/clip_image006.jpg)
Следует иметь в виду, что в следствие буферизации данных,
как на стороне передатчика, так и на стороне приемника, даже в локальной сети
трансляция осуществляется с задержкой в несколько секунд.
|