(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Собственная Интернет-радиостанция на Delphi

Источник: delphisources
Андрей Боровский

Вы, возможно, не знали о том, что компоненты, которые устанавливаются вместе с 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 в окне формы приложения

Компонент TWMStreamedOut в окне формы приложения


   В Инспекторе объектов следует настроить важнейшие свойства объекта WMStreamedOut1.
 

Свойства объекта WMStreamedOut1 в окне Object inspector

Свойства объекта 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;

Начинаем радиовещание

   После запуска программы нам остается выбрать аудиоустройство, с которого мы будем транслировать звук, и щелкнуть кнопку "Старт".
 

Интернет-радиостанция в работе

Интернет-радиостанция в работе


   Наша программа передает данные в сеть, так что если ваш компьютер защищен брандмауэром, необходимо добавить программу-радиопередатчик в список программ, которым разрешен доступ в сеть.

Прослушивание

   Для того чтобы "настроиться" на нашу радиостанцию, нужно запустить проигрыватель Windows Media, выбрать команду "Файл >> Открыть URL-адрес…" и в открывшемся окне ввести адрес вида:

mms://<имя_узла>:<порт>

например, так как показано на рисунке.
 

Интернет-радиостанция


   На всякий случай поясню, что "порт" должен соответствовать тому значению, которое мы указали в свойстве Port объекта WMStreamedOut1.

   После этого вы можете насладиться прослушиванием.
 

Windows Media Player


   Следует иметь в виду, что в следствие буферизации данных, как на стороне передатчика, так и на стороне приемника, даже в локальной сети трансляция осуществляется с задержкой в несколько секунд.

Ссылки по теме

Файлы для загрузки


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 09.04.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Delphi Professional Named User
Enterprise Connectors (1 Year term)
ABViewer Standart пользовательская
ABBYY Lingvo x6 Английская Домашняя версия, электронный ключ
SmartBear QAComplete Concurrent User Subscription License - On Premise (1 Year Subscription)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Программирование на Visual С++
Corel DRAW - от идеи до реализации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100