Создание мобильных приложений для радио на iPhone и Android

Интернет-радио

Настраиваем Icecast

Если у вас, как и у меня, не было возможности сконфигурировать программу в процессе установки, пора лезть в настройки. Все они хранятся в файле icecast.xml в директории /etc/icecast2/.

Многие параметры в этом файле прокомментированы — расскажу лишь о тех, без которых не обойтись на старте. За подробностями не грех заглянуть в официальную документацию, а если у вас появятся вопросы, я готов детально разобрать функции Icecast в отдельной статье.

Дарим скидку от 60% на курсы от GeekBrains до 21 января

Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей

Забронировать скидку

Сначала проверим максимально допустимое число одновременно подключённых слушателей:

<clients>100</clients>

По умолчанию — сто, но ориентируйтесь на ширину канала вашего сервера.

В блоке authentication меняем все данные на свои. Параметру bind-address в качестве значения присваиваем IP-адрес нашего сервера.

Теперь внимательно смотрим на блок mount. Здесь мы пропишем точки монтирования для источников вещания. Это важный момент, без которого не смогут выйти в эфир наши диджеи, в том числе и AutoDJ.

В коде ниже я создаю несколько точек монтирования с индивидуальными параметрами:

<mount>
 <mount-name>/autodj</mount-name> 
 <password>ваш_пароль</password> 
 <max-listeners>500</max-listeners> 
 <max-listener-duration>3600</max-listener-duration> 
 <dump-file>/tmp/dump-live.mp3</dump-file> 
 <intro></intro> 
 <charset>ISO8859-1</charset> 
 <public>1</public> 
 <stream-name>BestRadio</stream-name> 
 <stream-description>Лучшее радио галактики.</stream-description> 
 <stream-url>http://Ваш.IP:8000/autodj.mp3.m3u</stream-url> 
 <genre>Other</genre> 
 <bitrate>128</bitrate> 
 <type>application/mp3</type> 
 <subtype>mp3</subtype> 
 <burst-size>65536</burst-size> 
 <mp3-metadata-interval>4096</mp3-metadata-interval> 
</mount> 
<mount> 
 <mount-name>/live</mount-name> 
 <password>ваш_пароль</password> 
 <max-listeners>500</max-listeners> 
 <max-listener-duration>3600</max-listener-duration> 
 <dump-file>/tmp/dump-live.mp3</dump-file> 
 <intro></intro> 
 <fallback-mount>/autodj</fallback-mount> 
 <fallback-override>1</fallback-override> 
 <fallback-when-full>1</fallback-when-full> 
 <charset>ISO8859-1</charset> 
 <public>1</public> 
 <stream-name>MyRadio</stream-name> 
 <stream-description>Прямая трансляция.</stream-description> 
 <stream-url>http://Ваш.IP:8000/autodj.mp3.m3u</stream-url> 
 <genre>Other</genre> 
 <bitrate>128</bitrate> 
 <type>application/mp3</type> 
 <subtype>mp3</subtype> 
 <burst-size>65536</burst-size> 
 <mp3-metadata-interval>4096</mp3-metadata-interval> 
</mount>

Как вы могли догадаться, точка autodj подключена, когда в эфире никого нет. Если в это время кто-нибудь у себя в проигрывателе откроет ссылку типа http://ваш-ip:8000/live, он услышит автоматическое вещание. Но стоит вам выйти в эфир с точки live — autodj отключится.

Если вы хотите ограничить доступ к настройкам Icecast, обратите внимание на блок changeowner. Здесь вы можете указать имя и группу пользователя, который вправе менять конфигурацию

Осталось сохранить результат. С Icecast для первого раза достаточно. Теперь давайте позаботимся об автоматическом диджее.

Простейший радиоприемник с усилением

В рассмотренной конструкции простейшего радиоприемника нельзя применять низкоомные наушники, сопротивление нагрузки напрямую определяет уровень передаваемой мощности. Давайте сначала улучшим характеристики, пользуясь помощью резонансного контура, затем дополним простейший радиоприемник батарейкой, создав усилитель низкой частоты:

Избирательный контур состоит из конденсатора, индуктивности. Журнал рекомендует в простейший радиоприемник включить переменный конденсатор диапазона подстройки 25 – 150 пФ, индуктивность необходимо изготовить, руководствуясь инструкцией. Ферромагнитный стержень диаметром 8 мм обматывается равномерно 120 витками, захватывающими 5 см сердечника. Подойдет медный провод, покрытый лаковой изоляцией, диаметром 0,25 – 0,3 мм. Приводили читателям адрес ресурса, где посчитаете индуктивность, вводя цифры. Аудитории доступно самостоятельно найти, пользуясь Яндексом, вычислить, количество мГн индуктивности. Формулы подсчета резонансной частоты также общеизвестны, следовательно, можно, оставаясь у экрана, представить канал настройки простейшего радиоприемника. Обучающее видео предлагает изготовить переменную катушку. Необходимо внутри каркаса с намотанными витками проволоки выдвигать, вдвигать сердечник. Положения феррита определяет индуктивность. Диапазон посчитайте, воспользовавшись помощью программы, умельцы Ютуба предлагают, наматывая катушку, каждые 50 витков делать выводы. Поскольку отводов порядка 8-ми, делаем вывод: суммарное число оборотов превышает 400. Индуктивность меняете скачкообразно, точную подстройку ведете сердечником. Добавим к этому: антенна для радиоприемника развязывается с остальной схемой конденсатором емкостью 51 пФ.

Второй момент, который нужно знать, это то, что в биполярном транзисторе также имеются p-n-переходы, и даже два. Вот коллекторный как раз и уместно использовать вместо диода. Что касается эмиттерного перехода, то заземляется. Затем на коллектор прямо через наушники подается питание постоянным током. Рабочая точка не выбирается, поэтому результат несколько неожиданный, понадобится терпение, пока устройство радиоприемника будет доведено до совершенства. Батарейка тоже в немалой степени влияет на выбор. Сопротивление наушников считаем коллекторным, которое задает крутизну наклона выходной характеристики транзистора. Но это тонкости, например, резонансный контур тоже придется перестроить. Даже при простой замене диода, не то что внедрении транзистора. Вот почему рекомендуется вести опыты постепенно. А простейший радиоприемник без усиления у многих вовсе не будет работать.

А как сделать радиоприемник, который бы допускал использование простых наушников. Подключите через трансформатор, наподобие того, что стоит в абонентской точке. Ламповый радиоприемник отличается от полупроводникового тем, что в любом случае требует питания для работы (накал нитей).

Вакуумные приборы долго выходят на режим. Полупроводники готовы сразу же принимать. Не забывайте: германий не терпит температур выше 80 градусов Цельсия. При необходимости предусмотрите охлаждение конструкции. На первых порах это нужно, пока не подберете размер радиаторов. Используйте вентиляторы из персонального компьютера, процессорные кулеры.

step 4. php

index.php

<?php

// set error reporting level
if (version_compare(phpversion(), '5.3.0', '>=') == 1)
  error_reporting(e_all & ~e_notice & ~e_deprecated);
else
  error_reporting(e_all & ~e_notice);

$astations = array(
    0 => array(
        'category' => 31,
        'name' => 'eurodance',
        'desc' => 'the newest and best of eurodance hits',
        'url' => 'http://www.di.fm/eurodance',
        'br' => 96,
        'stream' => 'http://scfire-mtc-aa06.stream.aol.com:80/stream/1024'
    ),
    1 => array (
        'category' => 34,
        'name' => 'house',
        'desc' => 'silky sexy deep house music direct from new york city!',
        'url' => 'http://www.di.fm/house',
        'br' => 96,
        'stream' => 'http://scfire-ntc-aa04.stream.aol.com:80/stream/1007'
    ),
    2 => array (
        'category' => 13,
        'name' => 'trance',
        'desc' => 'the hottest, freshest trance music from around the globe!',
        'url' => 'http://www.di.fm/trance',
        'br' => 96,
        'stream' => 'http://scfire-ntc-aa04.stream.aol.com:80/stream/1003'
    ),
    3 => array (
        'category' => 51,
        'name' => 'electro house',
        'desc' => 'an eclectic mix of electro and dirty house',
        'url' => 'http://www.di.fm/electro',
        'br' => 96,
        'stream' => 'http://scfire-ntc-aa04.stream.aol.com:80/stream/1025'
    )
);

function searchbycat($icat, $astations) {
    $ares = array();
    foreach ($astations as $i => $ainfo) {
        if ($ainfo == $icat) {
            $ares = $ainfo;
        }
    }
    return $ares;
}
function searchbykeyword($skey, $astations) {
    $ares = array();
    foreach ($astations as $i => $ainfo) {
        if (false !== strpos($ainfo, $skey) || false !== strpos($ainfo, $skey)) {
            $ares = $ainfo;
        }
    }
    return $ares;
}

function parsestationlist($adata) {
    $sstations = '';
    if (is_array($adata) && count($adata) > 0) {
        foreach ($adata as $i => $a) {
            $sstationid = $i;
            $sstationbr = (int)$a;
            $sstationname = $a;
            $sstationdesc = $a;
            $sstationurl = $a;

            $sthumb = 'media/'.($sstationid+1).'.png';
            $sstations .= <<<eof
<li>
    <a href="{$sstationid}" onclick="return play('{$sstationid}'); return false;"><img alt="{$sstationname}" src="{$sthumb}" title="{$sstationname}"></a>
    <div class="i">
        <p>bitrate: {$sstationbr}</p>
    </div>
    <p class="channel"><a href="{$sstationid}" onclick="return play('{$sstationid}'); return false;">{$sstationname}</a></p>
    <p class="track">{$sstationdesc}</p>
    <p class="label">{$sstationurl}</p>
</li>
eof;
        }
    }
    $sstations = ($sstations == '') ? '<li>nothing found</li>' : $sstations;
    return '<ul>' . $sstations . '</ul>';
}

switch ($_get) {
    case 'play':
        $i = (int)$_get;

        $ainfo = $astations;
        $avars = array (
            '__stream__' => $ainfo,
            '__title__' => $ainfo
        );
        echo strtr(file_get_contents('templates/radio.html'), $avars); exit;
        break;
    case 'get_genre_stations':
        $i = (int)$_get;

        $asearch = searchbycat($i, $astations);

        $sstations = parsestationlist($asearch);
        header('content-type: text/html; charset=utf-8');
        echo $sstations; exit;
        break;
    case 'get_keyword_stations':
        $skey = $_get;

        $asearch = searchbykeyword($skey, $astations);

        $sstations = parsestationlist($asearch);
        header('content-type: text/html; charset=utf-8');
        echo $sstations; exit;
        break;
}

$slaststations = parsestationlist($astations);
echo strtr(file_get_contents('templates/main_page.html'), array('__stations__' => $slaststations));

Серверная комната

Начало работы с Серверная комната бесплатна, что означает, что вы можете создать свою интернет-радиостанцию ​​​​с этой платформой, ничего не платя. Настройте за считанные минуты и охватите слушателей по всему миру на различных платформах и устройствах.

Вы можете начать трансляцию даже без ПК с помощью аппаратного кодировщика или вместо этого использовать один из их бесплатных программных кодировщиков. На самом деле, вам даже не нужно иметь сайт.

Эта платформа позволяет вашей радиостанции работать 24 часа в сутки, 7 дней в неделю, даже когда вы спите, используя предварительно записанный пар.

Серверная комната позволяет использовать программное обеспечение с открытым исходным кодом под названием Mixxx, которое может вывести вашу потоковую игру на новый уровень. Вы можете стать профессионалом, выполняя потоковую передачу напрямую с нескольких устройств и используя ее вместе с такими приложениями, как Skype. Лучше всего? Это совершенно бесплатно!

UBroadCast

UBroadCast is another free application that helps you to start your own independent live internet radio show, which is owned completely by you and will broadcast the contents purely penned by you. This free application is a complete internet radio broadcasting platform for the internet users where by you can host a show on TV and radio, which enables anyone to quickly and easily broadcast on demand channel to a global and interactive audience via the Internet. You can reach to millions by using this platform and reach your prospective listeners. The application comes with simple and easy to use broadcasting tools and techniques so that anyone can produce a high quality interactive broadcasting channel on ubroadcast.com.

When you have created a show for your radio station, you can spread word about your interactive stations via promotional tools that this freeware provides. Reach to the mass by using ubroadcast player that can be embedded and shared on other websites, blogs, and social networking sites like MySpace and Facebook, with help of which, everyone on the internet may know about your show. This free ware is a web based live video broadcasting platform thus you need not download any software or plugins, just sign up for free account and you are done. To start broadcasting, you simply need to sign up for an account, and launch this web based application.

In order to start broadcasting your show you will need basic equipments like a camera, microphone, and a broadband Internet connection. You can use this very easily available and built in web cam and headset to start a show. You will not need expensive hardware and software for your own radio show. Thus, this handy application is just apt for all novice users who want to own their live radio shows but do not posses any special knowledge about set up.

Benefits of Broadcasting Live Audio Online

  • Reach end-users anywhere. Online radio isn’t limited to a local geographic location. Additionally, internet radio can reach users on mobile phones, via in-car Wi-Fi, or those using internet radio technology in their vehicle.
  • Adopt a digital-first strategy. Digital listeners continue to grow, climbing from 14% to 31% in the past five years.
  • Create a more targeted experience. More data means more opportunities for broadcasters looking to target engaging, relevant ads at precisely defined audiences.
  • Benefit from a quick, affordable solution. Deploying an internet radio station is cheaper and easier than traditional broadcasts.
  • Push the limits. Greater bandwidth equates to a greater variety of programming.
  • Preserve audio quality. Using adaptive bitrate delivery allows the broadcast to reach all users in the highest quality rendition possible for their connection.
  • Simulcast to social media. Streaming offers the flexibility to easily publish your live broadcast across a number of platforms.

Suitable for podcasts, campus radio stations, live events, and more, live audio streaming allows producers to affordably stream live and archived content — no matter the audience size. Plus, for those just getting into the audio-only space, internet radio stations are simpler to put into place than a traditional station.

Let’s take a look at the key parts of creating an online radio station and the steps to take before going live.

Настройка web-сайта

Сайт, через который будет осуществляться вещание, должен быть настроен таким образом, чтобы предоставить слушателям максимум удобства. Для этого нужно предусмотреть следующее:

  • доступ к потокам трансляции. Нужно учитывать, что слушатель может работать в различных операционных системах: Windows, iOS, Linux, Android и др. Желательно, чтобы все они имели возможность слушать радиопередачи;
  • обратную связь. Слушатели могут давать ценные замечания, которые будут важны для развития радиостанции, быть участниками диалога в эфире, выражать пожелания о том, что хотелось бы услышать в дальнейшем;
  • страница для просмотра плейлистов. В неё могут быть включены: песни, представленные в эфире чаще других, весь репертуар радиостанции, плейлисты, сформированные по результатам голосования слушателей, и т. д.;
  • информация по диджеям, работающим на этом радио, и программам, которые они ведут. Возможно, некоторые слушатели предпочтут слушать передачи с любимыми ведущими.

Доступность интернет-радиостанции для различных категорий слушателей, наличие обратной связи со слушателями способны резко поднять популярность радиоканала.

Пошаговая инструкция

Шаг 1: планирование и концепция

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

Кто будет вашей целевой аудиторией? Разработка приложения должна учитывать потребности и интересы ваших пользователей.

Определите, какие функции вы хотите включить. Это могут быть вещание в реальном времени, архив передач, чат для слушателей и многое другое.

Шаг 2: выбор технологических решений

Для обеспечения вещания потокового аудио вам понадобится медиасервер. Icecast и SHOUTcast — популярные решения для этой цели.

Используйте среду разработки Android Studio, чтобы создать пользовательский интерфейс и добавить функциональность вашего приложения.

Шаг 3: программирование

Скачайте и установите Android Studio на ваш компьютер. Используйте Android Studio для создания пользовательского интерфейса. Добавьте кнопки управления, информацию о текущей программе и возможность выбора станций.

Интегрируйте функциональность воспроизведения аудио с помощью Android MediaPlayer или сторонних библиотек.

Настройте соединение с вашим медиасервером и обеспечьте вещание в режиме реального времени

Важно учесть кодирование аудио и формат потока

Шаг 4: тестирование и отладка

Используйте встроенный эмулятор Android Studio для тестирования на разных версиях Android.

Проведите ручное тестирование приложения, чтобы убедиться, что все функции работают правильно. Используйте инструменты отладки Android Studio для выявления и устранения ошибок.

Шаг 5: развертывание и распространение

Зарегистрируйте аккаунт разработчика на Google Play Console и опубликуйте свое приложение. Вы также можете предоставить для скачивания на своем веб-сайте или через сторонние магазины.

Step 1: Determine Your Scale

Start by determining how large of an audience you’re trying to reach and how much you’re willing to spend on this project. If your listeners are few and your resources limited, your best bet would be to create an online radio station for free. This can be done using the free encoders and servers listen in the next section. For a deeper dive into the process, check out PCWorld’s article, Start You Own Internet Radio Station for Free.

If, however, you’re interested in creating a professional internet radio station for large-scale broadcasts, you’re in the right place. Our step-by-step guide covers everything from equipment considerations to security and monetization.

While large-scale professional radio broadcasts require investment into software, hardware, and/or services, this ensures a great listener experience across the board, while minimizing latency for interactive programs.

Любуемся результатами

Запускаем сначала Icecast: 

etcinit.dicecast2 start

Теперь Liquidsoap: 

service liquidsoap start

Создаём у себя на компьютере текстовый файл и вносим туда строку вида: 

Сохраняем файл с расширением .m3u и открываем его в аудиопроигрывателе. Если в папке Music лежат треки, радио должно играть.

На этом пока всё. Надеюсь, материал был вам полезен. Если хотите, чтобы я раскрыл какие-то темы подробнее, оставьте комментарий. А пока — успеха в запуске вашего радио!

Хотите свободно работать с Debian и другими дистрибутивами Linux? Приходите учиться на профессию «системный администратор», и через 9 месяцев вы не только освоите Linux, но и сможете обеспечивать бесперебойную работу компьютерной техники и ПО в любой организации!

Installing PyRadio

In the past, I’ve used the Python package installer pip to install PyRadio, but the latest version is not yet installable from pip, and I couldn’t find a package on Homebrew for my Mac. On my laptop running Ubuntu, I really wanted the latest version of PyRadio for its excellent new features, but I couldn’t find an installation on Apt.

To get the current version on these computers, I built it from source. You can download the latest release from github.com/coderholic/pyradio/releases, and then unzip or untar it. Change directory into the PyRadio source folder, and you’re ready to begin.

Install the dependencies using your distribution’s package manager (such as dnf on Fedora or apt on Ubuntu):

  • python3-setuptools
  • git
  • MPV, MPlayer, or VLC

On a Mac, install Git, sed, and MPlayer dependencies using Homebrew:

Once all dependencies are resolved, run the installer script, using the argument 3 to indicate that you want PyRadio to build for Python3:

The installation process takes about a minute.

трансляция

Оснащен всем необходимым для создания и трансляции вашей радиостанции на весь мир, трансляция должен быть одним из самых известных сервисов в этом списке. На самом деле их используют более 50 000 радиостанций по всему миру.

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

Обязательно попробуйте их 7-дневную бесплатную пробную версию, чтобы почувствовать, на что способен их сервис.

Подбор диодов для детекторного приемника.

От типа и качества выбранного детекторного диода напрямую зависит громкость звука детекторного приемника. Даже диоды одного наименования могут выдавать разную громкость. По этому, необходимо подобрать диод на слух, на работающем детекторном приемнике. С помощью переключателя два диода вручную быстро переключаются, и таким образом определяется диод «победитель» по громкости. Далее победитель ставится против следующего «претендента» и опять определяется диод «победитель». И так до определения самого громкого диода «чемпиона» .

Отличные результаты по громкости в детекторном радиоприемнике показывают диоды Д311 и Д18. И как оказалось, классический Д9 не лучший вариант по сравнению с Д311 и Д18.

Извлекаем файлы из базы данных

Теперь создадим PHP файл, который будет случайным образом доставать песню из базы данных и отображать путь к ней, название и имя исполнителя, чтобы затем с помощью Ajax мы смогли достать её саму. Сперва скачайте ezSQL, которым я пользуюсь для написания запросов. (Урок по использованию данного класса можно найти здесь) Распакуйте файлы и загрузите на сервер ez_sql_core.php и ez_sql_mysql.php.

После этого создайте файл getsong.php. Вставьте в него следующий код:

<?php

if(!empty($_SERVER) && strtolower($_SERVER) == 'xmlhttprequest'){ 

    include_once "ez_sql_core.php";
    include_once "ez_sql_mysql.php";
    $db = new ezSQL_mysql('db_user','db_password','db_name','db_host'); 

    $song = $db->get_row("SELECT * FROM songs ORDER BY RAND() LIMIT 1");

    $artist = $song->artist;
    $songname = $song->title;
    $url = $song->url;
    $separator = '|';
    echo $url.$separator.$artist.$separator.$songname;
} 

?>

Ничего сложного: я подключил необходимые файлы ezSQL, подсоединился к базе данных и достал одну строку из таблицы songs. На экране отобразилось три значения (путь к файлу, название песни и имя её исполнителя), разделенных вертикальной чертой (|).

Я вставил условие для того, чтобы предотвратить Ajax запросы, т.е. чтобы пользователи не смогли отобразить путь к файлам, введя в адресную строку http://www.yousite.com/getsong.php.

Оцените статью