Votre propre radio Internet

Beaucoup d’entre nous aiment écouter la radio le matin. Et puis un beau matin, j’ai réalisé que je ne voulais pas écouter les radios FM locales. Pas intéressé. Mais cette habitude s’est avérée nocive. Et j'ai décidé de remplacer le récepteur FM par un récepteur Internet. J'ai rapidement acheté des pièces sur Aliexpress et assemblé un récepteur Internet.

À propos du récepteur Internet. Le cœur du récepteur est le microcontrôleur ESP32. Firmware de KA-radio. Les pièces m'ont coûté 12 $. La facilité de montage m'a permis de l'assembler en quelques jours. Fonctionne bien et de manière stable. En 10 mois de travail, il n'a gelé que quelques fois, et seulement à cause de mes expériences. Une interface pratique et bien pensée vous permet de contrôler depuis un smartphone et un ordinateur. En un mot, c'est un merveilleux récepteur Internet.

Tout va bien. Mais un matin, je suis arrivé à la conclusion que malgré l’accès à des dizaines de milliers de stations de radio, il n’y avait aucune station intéressante. J'étais agacé par la publicité et les blagues stupides des présentateurs. Sauter constamment d'une station à l'autre. J'aime Spotify et Yandex.Music. Mais le plus triste, c’est qu’ils ne fonctionnent pas dans mon pays. Et j'aimerais les écouter via le récepteur Internet.

Je me suis souvenu de mon enfance. J'avais un magnétophone et deux douzaines de cassettes. J'ai échangé des cassettes avec des amis. Et c'était merveilleux. J'ai décidé que je devais diffuser mes archives audio uniquement sur un récepteur Internet. Bien sûr, il existe une option pour connecter un lecteur audio ou un iPod aux haut-parleurs sans vous inquiéter. Mais ce n'est pas notre façon de faire ! Je déteste connecter des connecteurs)

J'ai commencé à chercher des solutions toutes faites. Il existe sur le marché une offre pour créer votre propre radio Internet depuis Radio-Tochka.com. Je l'ai testé pendant 5 jours. Tout a bien fonctionné avec mon récepteur Internet. Mais le prix ne me paraissait pas attractif. J'ai refusé cette option.

J'ai payé 10 Go d'hébergement. J'ai décidé d'écrire un script sur quelque chose qui diffuserait le flux audio de mes fichiers mp3. J'ai décidé de l'écrire en PHP. Je l'ai rapidement écrit et lancé. Tout a fonctionné. C'était cool! Mais quelques jours plus tard, j'ai reçu une lettre de l'administration d'accueil. Il a indiqué que la limite de minutes de processeur avait été dépassée et qu'il était nécessaire de passer à un tarif plus élevé. Le script a dû être supprimé et cette option abandonnée.

Comment est-ce arrivé? Je ne peux pas vivre sans radio. S'ils ne vous permettent pas d'exécuter le script sur l'hébergement de quelqu'un d'autre, vous avez besoin de votre propre serveur. Où je ferai ce que mon âme désire.

J'ai un ancien netbook sans batterie (CPU - 900 MHz, RAM - 512 Mo). Le vieil homme a déjà 11 ans. Convient pour un serveur. J'installe Ubuntu 12.04. Ensuite j'installe Apache2 et php 5.3, samba. Mon serveur est prêt.

J'ai décidé d'essayer Icecast. J'ai lu beaucoup de mana dessus. Mais j'ai trouvé ça difficile. Et j'ai décidé de revenir à l'option avec un script PHP. Quelques jours ont été consacrés au débogage de ce script. Et tout a très bien fonctionné. Ensuite, j'ai également écrit un script pour lire des podcasts. Et ça m'a tellement plu que j'ai décidé de faire un petit projet. Appelé ça IWScast. Publié sur github.

Votre propre radio Internet

Tout est très simple. Je copie les fichiers mp3 et le fichier index.php dans le dossier racine Apache /var/www/ et ils sont lus de manière aléatoire. Environ 300 chansons suffisent pour une journée entière.
Le fichier index.php est le script lui-même. Le script lit tous les noms de fichiers MP3 d'un répertoire dans un tableau. Crée un flux audio et remplace les noms des fichiers MP3. Il y a des moments où vous écoutez une chanson et vous l’aimez. À votre avis, qui chante ? Pour un tel cas, il y a un enregistrement des noms des pistes écoutées dans le log log.txt
Code de script complet

<?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: enrn"
       )
     )
   );
//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);
}
?>

Si vous avez besoin que les pistes soient lues dans l'ordre, vous devez alors commenter la ligne dans index.php

shuffle($files); //Random on

Pour les podcasts, j'utilise /var/www/podcast/ Il existe un autre script index.php. Il dispose d'une mémorisation des pistes de podcast. La prochaine fois que vous allumerez le récepteur Internet, la piste de podcast suivante sera lue. Il existe également un journal des pistes écoutées.
Dans le fichier counter.dat, vous pouvez spécifier le numéro de piste et la lecture du podcast commencera à partir de celui-ci.

A écrit des analyseurs pour le téléchargement automatique de podcasts. Il prend les 4 dernières pistes de RSS et les télécharge. Tout cela fonctionne très bien sur un smartphone, un décodeur IPTV ou dans un navigateur.

L'autre matin, j'ai pensé qu'il serait formidable de se souvenir de la position de lecture sur une piste. Mais je ne sais pas encore comment faire ça en PHP.

Le script peut être téléchargé github.com/iwsys/IWScast

Source: habr.com

Ajouter un commentaire