Ваше Собственное Интернет-Радио

Многие из нас любят слушать радио по утрам.

И вот в одно прекрасное утро я понял, что не хочу слушать местные FM-радиостанции.

Не интересно.

Но привычка оказалась вредной.

И я решил заменить FM-приемник на интернет-приемник.

Быстро купил детали на Алиэкспресс и собрал интернет-ресивер.

Об интернет-приемнике.

Сердцем ресивера является микроконтроллер ESP32. Прошивка от КА-радио.

Детали обошлись мне в 12 долларов.

Легкость сборки позволила мне собрать его за пару дней.

Работает хорошо и стабильно.

За 10 месяцев работы зависало всего пару раз, и то только из-за моих экспериментов.

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

Одним словом, это замечательный интернет-приемник.

Все хорошо.

Но однажды ранним утром я пришел к выводу, что, несмотря на доступ к десяткам тысяч радиостанций, интересных станций не было.

Меня раздражала реклама и глупые шутки ведущих.

Постоянно перескакиваю с одной станции на другую.

Мне нравится Spotify и Яндекс.

Музыка.

Но печально то, что они не работают в моей стране.

И хотелось бы их послушать через интернет-ресивер.

Я вспомнил свое детство.

У меня был магнитофон и две дюжины кассет. Я обменялся кассетами с друзьями.

И это было чудесно.

Я решил, что мне нужно стримить свои аудиоархивы только на интернет-ресивер.

Конечно, есть возможность подключить к колонкам аудиоплеер или iPod и не волноваться.

Но это не наш путь! Ненавижу соединять разъемы) Я начал искать готовые решения.

На рынке есть предложение создать свое интернет-радио от Radio-Tochka.com. Я тестировал его 5 дней.

С моим интернет-приемником все работало нормально.

Но цена меня не привлекла.

Я отказался от этого варианта.

Я оплатил хостинг 10 ГБ.

Я решил написать сценарий для потоковой передачи аудиопотока моих mp3-файлов.

Я решил написать это на PHP. Я быстро написал его и запустил.

Все работало.

Это было круто! Но через пару дней мне пришло письмо от администрации хостинга.

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

Скрипт пришлось удалить и отказаться от этого варианта.

Как это произошло? Я не могу жить без радио.

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

Где я буду делать то, что желает моя душа.

У меня древний нетбук без батареи (процессор - 900 МГц, оперативная память - 512 Мб).

Старику уже 11 лет. Подходит для сервера.

Я устанавливаю Ubuntu 12.04. Потом устанавливаю Apache2 и PHP 5.3, Samba. Мой сервер готов.

Я решил попробовать Icecast. Я прочитал на нем много маны.

Но мне было трудно.

И я решил вернуться к варианту с PHP-скриптом.

На отладку этого скрипта было потрачено пару дней.

И все работало отлично.

Потом я еще написал скрипт для воспроизведения подкастов.

И мне это настолько понравилось, что я решил сделать небольшой проект. Назвал его IWScast. Опубликовано на github .



Ваше собственное интернет-радио

Все очень просто.

Я копирую файлы mp3 и файл index.php в корневую папку Apache /var/www/, и они воспроизводятся в случайном порядке.

Около 300 песен хватит примерно на целый день.

Файл index.php — это сам скрипт. Скрипт считывает все имена файлов MP3 в каталоге в массив.

Создает аудиопоток и подставляет имена MP3-файлов.

Бывают случаи, когда ты слушаешь песню, и она тебе нравится.

Как вы думаете, кто поет? На такой случай в журнале log.txt есть запись названий прослушанных треков.

Полный код скрипта

  
   

<Эphp set_time_limit(0); header('Content-type: audio/mpeg'); header("Content-Transfer-Encoding: binary"); header("Pragma: no-cache"); header("icy-br: 128 "); header("icy-name: your name"); header("icy-description: your description"); $files = glob("*.

mp3"); shuffle($files); //Random on for ($x=0; $x < count($files);) { $filePath = $files[$x++]; $bitrate = 128; $strContext=stream_context_create( array( 'http'=>array( 'method' =>'GET', 'header' => 'Icy-MetaData: 1', 'header' =>"Accept-language: en\r\n" ) ) ); //Save to log $fl = $filePath; $log = date('Y-m-d H:i:s') .

' Song - ' .

$fl; file_put_contents('log.txt', $log .

PHP_EOL, FILE_APPEND); $fpOrigin=fopen($filePath, 'rb', false, $strContext); while(!feof($fpOrigin)){ $buffer=fread($fpOrigin, 4096); echo $buffer; flush(); } fclose($fpOrigin); } ?>

Если вам нужно, чтобы треки воспроизводились по порядку, то нужно закомментировать строку в index.php

shuffle($files); //Random on

Для подкастов я использую /var/www/podcast/.

Есть еще один скрипт index.php. Есть функция запоминания треков подкаста.

При следующем включении интернет-приемника будет воспроизводиться следующая дорожка подкаста.

Также имеется журнал проигранных треков.

В файле counter.dat можно указать номер трека и с него начнется воспроизведение подкаста.

Написал парсеры для автоматического скачивания подкастов.

Он берет последние 4 трека из RSS и загружает их.

Все это прекрасно работает на смартфоне, IPTV-приставке или в браузере.

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

Но я пока не знаю, как это сделать на PHP. Скрипт можно скачать github.com/iwsys/IWScast Теги: #linux #стриминг #php #Apache #интернет-радио

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.