[Из песочницы] Своё интернет радио

Многие из нас по утрам любят слушать радио. И вот в одно прекрасное утро я осознал, что не хочу слушать местные ФМ радиостанции. Не интересно. Но привычка оказалась вредной. И я решил заменить ФМ-приемник интернет приемником. Быстренько купил детали на Алиэкспресс и собрал интернет приемник.

О интернет приемнике. Сердце приемника — микроконтроллер ESP32. Прошивка от KA-radio. Стоимость деталей мне обошлась в 12 долларов. Простота сборки мне позволила собрать его за пару дней. Хорошо и стабильно работает. За 10 месяцев работы зависло только пару раз и то только из-за моих экспериментов. Удобный и продуманный интерфейс позволяет управлять с смартфона и компьютера. Одним словом это замечательный интернет приемник.

Все классно. Но одним ранним утром пришел к выводу, что при наличии доступа к десяткам тысяч радиостанций нет интересных станций. Меня раздражала реклама, тупые шутки ведущих. Постоянно прыгал с одной станции на другую. Мне нравится Spotify и Яндекс.Музыка. Но печаль в том, что не работают они в моей стране. И хотел бы их слушать через интернет приемник.
Я вспомнил своё детство. У меня был магнитофон и два десятка кассет. Кассетами менялся с друзьями. И было чудесно. Я решил, что надо сделать стриминг своих аудиоархивов только на интернет приемник. Конечно, есть вариант подключить аудиоплеер или ipod к колонкам и не париться. Но это не наш путь! Ненавижу подключать разъемы)

Начал искать готовые решения. На рынке есть предложение создать своё интернет-радио от Radio-Tochka.com. Я потестировал 5 дней. С моим интернет приемником все работало прекрасно. Но цена оказалась для меня не привлекательной. Отказался от этого варианта.

У меня есть оплаченный хостинг 10 GB. Решил написать скрипт на чем-нибудь, что бы был стриминг аудио потока моих mp3 файлов. Решил написать на PHP. Быстренько написал и запустил. Все заработало. Было классно! Но через пару дней пришло письмо от администрации хостинга. В нем говорилось о превышении лимита процессорных минут и необходимости перейти на тариф повыше. Скрипт пришлось удалить и отказаться от этого варианта.

Ну как так? Не могу жить без радио. Если не дают запускать скрипт на чужом хостинге, значит надо свой сервак. Где я буду делать то, что моя душа пожелает.

У меня нетбук древний лежит без аккумулятора (CPU — 900 MHz, RAM — 512 Mb). Старичку 11 лет уже. Для сервака подойдет вполне. Ставлю Ubuntu 12.04. Затем устанавливаю Apache2 и php 5.3, samba. Мой сервак готов.

Решил попробовать Icecast. Много читал маны по нему. Но мне он показался сложным. И я решил возвратиться к варианту со скриптом на PHP. Пару дней было потрачено на отладку этого скрипта. И всё прекрасно заработало. Затем я еще написал скрипт для воспроизведения подкастов. И мне это так понравилось, что решил сделать небольшой проект. Назвал его IWScast. Выложил на github.

image

Все о чем хотел от интернет приемника я получил. Файлы mp3 копирую в корневую папку апача /var/www/ и они рандомно воспроизводятся. Около 300 песен хватает на весь день приблизительно. Для подкастов использую /var/www/podcast/ Есть запоминание треков подкастов. При следующем включении интернет приемника воспроизводится следующий трек подкаста. Так же есть лог воспроизводимых треков.

Писал парсеры для автоматического скачивания подкастов. Он берет из RSS 4 последних трека и скачивает их. Все это замечательно работает на смартфоне, IPTV приставке, в браузере.

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

© Habrahabr.ru