Webradio führt teilweise zu einem freeze

Ja bei einem erneuten Versuch hat es dann immer wieder funktioniert. Aber ich gebe dir recht, unschön war der freeze des ESP, so ist es eigentlich kein Problem mehr, insbesondere wenn es nur noch sporadisch auftritt. Werde es mal noch beobachten.

Wenn eine URL aufgerufen wird, die den wirklichen Audiostream überträgt (also die keine Playlist sendet oder ein „redirection“), wird zunächst vom Server der AudioHeader übermittelt. In AudioHeader stehen indormationen über den kommenden Audiostream, wie:

  • Bitrate
  • icy-url           das ist die Homepage der Station
  • icy-name      das ist der Stationsname
  • icy-metaint   das ist der Abstand zwischen den StreamTitel (Künstler, Liedtitel…)
  • content-type mpeg, aac, ogg, flac, m4a…
    und anderes …

Der Audioheader wird von Server mit „/r/n/r/n“ beendet. Danach hängt der Server den Audiostream ein. Nachdem die ersten Audiodaten empfangen wurden gibt es eine Funktion, die einen leeren Audibuffer über mehrere Sekunden erkennt und die Verbindung neu aufbaut.
Das ist notwendig, weil es manchmal passieren kann, dass die Verbindung abbricht, aus welchen Gründen auch immer. So wird eine 24/7 Übertragung garantiert.

vG Wolle

Hallo , gerade Update auf neue Version gemacht .
Webradio läuft bei mir mit der Version 20210725-1 überhaupt nicht . Rev 20210713-3 läuft einwandfrei .
Meine Lieblingskarte mit WDR2 www.wdr.de/wdrlive/media/wdr2.m3u wird meist nicht erkannt , manchmal startet Webstream für 1-2 Sekunden , dann Restart . Habe im Moment keine Zeit und werde es später versuchen einzugrenzen .

VG

Hi @biologist
Habe heute nochmals probiert mit Rev 20210727-2 .
Dieser Stream http://streamtdy.ir-media-tec.com/disco/mp3-128/web/play.mp3 funktioniert , dieser nicht http://www.wdr.de/wdrlive/media/wdr2.m3u
Mit Rev 20210713-3 läuft es einwandfrei .
Anbei die Konsolenausgabe:
20210727-2.txt (14,8 KB)

VG

Zwei Anmerkungen dazu:

  1. Könntest du es mal ohne Neopixel testen? Also nicht mit einkompilieren. Ich hatte hier und hier wegen m3u ein paar größere Änderungen gemacht. Wenn, dann müsste es am ehesten damit zu tun haben.
  2. Vielleicht kannst du das Ganze mal in den Stacktrace-Decoder stecken: GitHub - me-no-dev/EspExceptionDecoder: Exception Stack Trace Decoder for ESP8266 and ESP32. Da muss man einfach ne .jar in das passende Verzeichnis kopieren und erhält dann einen Menüpunkt in der Arduino-IDE. Ruft man den auf, dann geht ein Fenster auf, welches zwei Sachen möchte:
    a) Den Stacktrace
    b) Die verwendete .bin-Datei vom Flashen (findest du dann in .pio in Platformio).
    Wenn man das beides geliefert hat, dann kriegt man einen Stacktrace, den man auch lesen kann. Oft bringt er mich nicht weiter, aber kommt schon mal vor :slight_smile:
1 „Gefällt mir“

Hi @biologist
Liegt an Neopixel , ohne geht es .

Edit: Habe mal meine "Single_Led.cpp " vom 8.7.2021 kompiliert . Das funktioniert auch . Allerdings habe ich bisher , weil es ja nicht läuft , das neue Feature nicht ausprobiert .

Meinst du das m3u-Feature?
Ich hatte bei meinen kürzlichen Änderungen die LED.cpp angepasst. Aber war nur ganz wenig.
Ich schaue einfach mal, dass ich es bei mir nachstelle.

Hab den Stream auch mal getestet, bei mir läuft es. Habe aber auch den Stack erhöht, wie hier beschrieben: Abspielen von https Streams? - #8 von biologist

Keine Ahnung ob das einen Zusammenhang hat.

P.S.: ich hab aber auch weder MQTT, FTP noch Drehencoder mit drin.

Ja, das meine ich . Ich habe gesehen dass die Änderung in der led.cpp minimal ist und genau das ist in meiner led.cpp natürlich nicht drin . Heute ist schlecht werde es morgen mal checken
VG

Der Stream (WDR) läuft bei mir auf lolin32 und lolin32 d32 pro auch.

Ok , dann muss es ja irgendwie bei mir liegen .

Hallo @biologist

Es liegt tatsächlich an Led.cpp Zeile 470

alte Version: if (!gPlayProperties.isWebstream) { funktioniert
neue Version: if (gPlayProperties.playMode != WEBSTREAM) { funktioniert nicht

Da meine Kenntnisse nicht reichen weiß ich den Unterschied nicht und schon garnicht warum es bei dir läuft . Verwende Wrover-E

VG

Anders rum. if (!gPlayProperties.isWebstream) ist neu.
Kannst du mal als Debug bei dir ein Serial.println(„not webstream“) direkt unterhalb dieser Zeile einfügen, wenn du deinen Webstream startest?

Bis vor kurzem habe ich nur auf den Playmodus geschaut, wenn es darum geht, die LED-Signalisierung zu machen. Das geht mit m3u jedoch nicht mehr, weil m3u beides sein kann (Webstream und kein Webstream). Also habe ich isWebstream als boolsches Flag eingeführt. Dessen Eigenschaft steht aktuell jedoch erst relativ spät fest (im Gegensatz zum Playmodus). Möglicherweise gibt es jetzt eine kurze Zeitspanne, in der LED.cpp bei dir davon ausgeht, dass es sich nicht um einen Webstream handelt. Ist das der Fall, dann wird currentRelPos gebraucht, ist aber noch nicht gesetzt und dann knallt es in Zeile 474, weil da intern eine Division durchgeführt wird.

Selbst für diesen Einzeiler bin ich zu dumm . Compilerfehler , auch mit div. anderen Schreibweisen davon

Semikolon vergessen am Ende?

Habe ich hinzugefügt , hilft nicht ,

Sind die Anführungszeichen beide „oben“? :slight_smile:
Unten und oben wird der Compiler nicht mögen, hehe.

Hatte ich auch probiert

Hi @biologist
Habe eben 2 Systeme auf die aktuelle Rev. geflasht . Mein Problem mit WDR2 ist weg . Hast du da was gemacht oder liegt es an Wolles geänderter Lib. ?
Praktisch jetzt durch die Radiostationen zu zappen .

VG

Also am Neopixel habe ich nichts geändert.
Es wird jetzt halt die aktuelle Titel in er GUI angezeigt, ich habe die RC522-Initialisierung nach hinten geschoben und die platformio.ini eingekürzt. Erstgenanntes war schon, von der Anzahl der betroffenen Files, bisschen größer, aber Led.cpp war nicht dabei.

Tja, eigentlich müsste ich schon im Sinne der Reproduzierbarkeit die Versionen festpinnen. Bislang habe ich das, außer bei Fastled, nicht gemacht.