Radio Internet propre

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 stations de radio FM locales. Pas intéressant. Mais cette habitude s'est avérée nuisible. Et j'ai décidé de remplacer le récepteur FM par un récepteur Internet. Vous avez 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. Le coût des pièces m'a coûté 12 $. La facilité de montage m'a permis de l'assembler en quelques jours. Cela fonctionne bien et de manière stable. Plus de 10 mois de travail, il n'a accroché que quelques fois et ce n'est qu'à cause de mes expériences. Une interface pratique et réfléchie vous permet de contrôler à partir d'un smartphone et d'un ordinateur. En un mot, c'est un merveilleux récepteur Internet.

Tout est cool. Mais tôt le matin, je suis arrivé à la conclusion qu'avec l'accès à des dizaines de milliers de stations de radio, il n'y a pas de stations intéressantes. J'étais ennuyé par la publicité, des blagues stupides à la tête. Sautant constamment d'une station à l'autre. J'aime Spotify et Yandex.Music. Mais le plus triste, c'est qu'ils ne travaillent pas dans mon pays. Et je voudrais les écouter via le récepteur Internet.

Je me suis souvenu de mon enfance. J'avais un magnétophone et deux douzaines de cassettes. Les cassettes ont changé avec des amis. Et c'était merveilleux. J'ai décidé de ne diffuser mes archives audio que sur le récepteur Internet. Bien sûr, il y a une option pour connecter un lecteur audio ou un iPod aux haut-parleurs et non à la vapeur. Mais ce n'est pas notre chemin! Je déteste connecter les connecteurs)

Il a commencé à chercher des solutions toutes faites. Il existe une offre sur le marché pour créer votre propre radio Internet à partir de Radio-Tochka.com. J'ai testé 5 jours. Tout fonctionnait parfaitement avec mon récepteur Internet. Mais le prix n'était pas attrayant pour moi. Refusé cette option.

J'ai un hébergement payant de 10 Go. J'ai décidé d'écrire un script sur quelque chose qui diffuserait le flux audio de mes fichiers mp3. J'ai décidé d'écrire en PHP. A rapidement écrit et lancé. Tout fonctionnait. C'était génial! Mais quelques jours plus tard, une lettre est venue de l'administration d'hébergement. Il a évoqué le dépassement de la limite de minutes processeur et la nécessité de passer à un tarif plus élevé. Le script a dû être supprimé et abandonné cette option.

Comment ça? Je ne peux pas vivre sans radio. Si vous n'êtes pas autorisé à 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 11 ans. Pour un serveur, ça va. J'ai mis Ubuntu 12.04. Installez ensuite 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 cela m'a paru compliqué. Et j'ai décidé de revenir à l'option avec un script en PHP. Quelques jours ont été consacrés au débogage de ce script. Et cela a parfaitement 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. Je l'ai appelé IWScast. Publié sur github .

image

Tout est très simple. Je copie les fichiers mp3 et le fichier index.php dans le dossier racine de Apache / var / www / et ils sont lus de manière aléatoire. Environ 300 chansons suffisent pour toute la journée environ.
Le fichier index.php est le script lui-même. Le script lit tous les noms des fichiers de répertoire mp3 dans un tableau. Crée un flux audio et remplace les noms de fichiers mp3. Il y a des moments où vous écoutez une chanson et que vous l'aimez. Pensez-vous qui chante cela? Dans ce cas, il existe un enregistrement des noms des pistes écoutées dans le journal 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: en\r\n" ) ) ); //Save to log $fl = $filePath; $log = date('Ymd 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 voulez que les pistes soient lues dans l'ordre, vous devez commenter la ligne dans index.php
 shuffle($files); //Random on 


Pour les podcasts, j'utilise / var / www / podcast / Il y a un autre script index.php. Il a mémoriser des pistes de podcast. La prochaine fois que vous allumez le récepteur Internet, la piste de podcast suivante est lue. Il existe également un journal des pistes reproduites.
Vous pouvez spécifier le numéro de piste dans le fichier counter.dat et la lecture du podcast commence à partir de celui-ci.

A écrit des analyseurs pour télécharger automatiquement les 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, dans un navigateur.

Récemment dans la matinée, j'ai eu l'idée que c'était génial de mémoriser la position de lecture sur la piste. Mais je ne sais pas encore comment faire cela en PHP.

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

Source: https://habr.com/ru/post/fr471954/


All Articles