Ваша власна Інтернет-радіостанція в локальній (і глобальної) мережі
- Ваша власна Інтернет-радіостанція в локальній (і глобальної) мережі
- пишемо програму
- починаємо радіомовлення
- прослуховування
Ваша власна Інтернет-радіостанція в локальній (і глобальної) мережі
Реєстрація © 2008 Андрій Боровський
Ви, можливо, не знали про те, що компоненти, які встановлюються разом з 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;
Ви можете завантажити програму в вигляді вихідних текстів (Проект Delphi 2007) або в скомпільованому вигляді .
починаємо радіомовлення
Після запуску програми нам залишається вибрати аудіопристр, з якого ми будемо транслювати звук, і натиснути кнопку "Старт".
Інтернет-радіостанція в роботі
Наша програма передає дані в мережу, так що якщо ваш комп'ютер захищений брандмауером, необхідно додати програму-радіопередавач в список програм, яким дозволений доступ в мережу.
прослуховування
Для того щоб "налаштуватися" на нашу радіостанцію потрібно запустити програвач Windows Media, вибрати команду "Файл >> Відкрити URL-адресу ..." і у вікні, ввести адресу виду
mms: //:наприклад, так як показано на малюнку.
Про всяк випадок поясню, що повинен відповідати тим значенням, яке ми вказали у властивості Port об'ектаWMStreamedOut1.
Після цього ви можете насолодитися прослуховуванням.
Слід мати на увазі, що через буферизації даних, як на стороні передавача, так і на стороні приймача, навіть в локальній мережі трансляція здійснюється з затримкою в кілька секунд.
Copyright © 2008 Андрій Боровський Спеціально для Delphi Plus
Що дає нам написання власної програми передачі аудіо-даних?