Ваша власна інтернет-радіостанція в локальній (і глобальної) мережі

Ваша власна Інтернет-радіостанція в локальній (і глобальної) мережі

Ви, можливо, не знали про те, що компоненти, які встановлюються разом з Windows Media Player 9 (і більш пізніми версіями) містять вбудовані засоби широкомовної передачі аудіо-даних. Фактично кожен підключений до мережі комп'ютер, на якому встановлений Windows Media Player, може бути перетворений в мережеву радіостанцію. Для цього можна скористатися готовими програмами. Можна написати власну програму, використовуючи безпосередньо інтерфейси, що надаються Windows Media System (такі як IWMWriterNetworkSink, IWMProfile, IWMCodecInfo) і ще десяток функцій і інтерфейсів (їх опис міститься в Windows Media SDK).

Ми розглянемо інше рішення - створення власної Інтернет-радіостанції за допомогою Delphi і компонентів New Audio Components (NewAC). Написати таку програму дуже просто. Ми побачимо, що в простому прикладі нам буде достатньо з'єднати два компонента і налаштувати їх властивості.

Що дає нам написання власної програми передачі аудіо-даних? Перш за все - свободу. Можна організувати передачу аудіо за допомогою мікрофона, підключеного до вашого комп'ютера. Можна завантажувати вміст аудіо-записів з вашого комп'ютера (для цього треба буде задіяти компоненти читання аудіо-даних з різних форматів, що входять до складу NewAC). Можна просто транслювати все, що звучить у вашій системі.

пишемо програму

Передача даних здійснюється компонентом 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;

починаємо радіомовлення

Після запуску програми нам залишається вибрати аудіопристр, з якого ми будемо транслювати звук, і натиснути кнопку "Старт".


Інтернет-радіостанція в роботі

Наша програма передає дані в мережу, так що якщо ваш комп'ютер захищений брандмауером, необхідно додати програму-радіопередавач в список програм, яким дозволений доступ в мережу.

прослуховування

наприклад, так як показано на малюнку.

Про всяк випадок поясню, що повинен відповідати тим значенням, яке ми вказали у властивості Port об'ектаWMStreamedOut1.

Після цього ви можете насолодитися прослуховуванням.

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

Схожі статті