Hallo,
die Frage geht wohl vor allem an @Wolle: Es ist ja möglich, http Audio Streams abzuspielen. Ich hatte es auch einmal mit einem https-Stream probiert, was aber nicht klappte. Ist das prinzipiell möglich?
Viele Grüße
Johannes
Hallo,
die Frage geht wohl vor allem an @Wolle: Es ist ja möglich, http Audio Streams abzuspielen. Ich hatte es auch einmal mit einem https-Stream probiert, was aber nicht klappte. Ist das prinzipiell möglich?
Viele Grüße
Johannes
Das geht, aber es gibt vereinzelt Streams, die nicht funktionieren. Da gibt’s teilweise mehrere Weiterleitungen und weiß der Teufel - ich vermute mal, dass da der Connectionpool des ESP32 einfach nicht groß genug ist.
@Wolle kann aber bestimmt was dazu sagen.
Grundsätzlich funktionieren https-Streams. Es muss die komplette URL beginnend mit „https://“ angegeben werden damit der ClientSecure aufgerufen werden kann. Es werden nur die Schlüssel ausgetauscht, kein X.509 Zertifikat. Aber selbst das braucht einschließlich der Ver/Entschlüsselung zusätzlich etwa 37KB an SRAM. Das ist das eigentliche Problem, daher sollte soweit möglich immer PSRAM benutzt werden. Ein weiterer Nachteil: der Verbindungsaufbau kann bis zu 10 mal länger dauern als bei http, ca. 1,5 … 2 Sekunden sind normal.
Nachdem die Verbindung steht gibt es keine Unterschiede zu http.
Web-Radiostationen bieten häufig unverschlüsselte Streams an, Podcasts sind im Netz fast immer verschlüsselt. Ob solche Podcasts abspielbar sind hängt dann am „free heap“.
Ich habe mir erlaubt, deine Ausführung mal in die FAQ zu verlinken. Vielen Dank für die genaue Erklärung.
Bei mir klappt es mit https-Streams leider auch nicht:
Kommando: Nächster Titel
info : buffers freed, free Heap: 103672 bytes
info : Connect to new host: "https://st01.sslstream.dlf.de/dlf/01/128/mp3/stream.mp3"
info : Connect to "st01.sslstream.dlf.de" on port 443, extension "/dlf/01/128/mp3/stream.mp3"
Guru Meditation Error: Core 1 panic'ed (Unhandled debug exception)
Debug exception reason: Stack canary watchpoint triggered (mp3play)
Core 1 register dump:
PC : 0x40098bf9 PS : 0x00060f36 A0 : 0x80098cca A1 : 0x3ffd7f40
A2 : 0x3ffef29c A3 : 0xbaad5678 A4 : 0x3ffef290 A5 : 0x3fff09ec
A6 : 0x00000100 A7 : 0x00000040 A8 : 0x3ffef3a4 A9 : 0x3ffef294
A10 : 0x00000001 A11 : 0x3ffef290 A12 : 0x00009630 A13 : 0x00008ce4
A14 : 0x3ffefcf8 A15 : 0x3ffef3a8 SAR : 0x00000010 EXCCAUSE: 0x00000001
EXCVADDR: 0x00000000 LBEG : 0x4000c46c LEND : 0x4000c477 LCOUNT : 0x00000000
ELF file SHA256: 0000000000000000
Backtrace: 0x40098bf9:0x3ffd7f40 0x40098cc7:0x3ffd7f70 0x4009015d:0x3ffd7f90 0x40090399:0x3ffd7fb0 0x4008f914:0x3ffd7fd0 0x402042c5:0x3ffd7ff0 0x40201b6a:0x3ffd8010 0x40202d00:0x3ffd8030 0x4025175c:0x3ffd86a0 0x402527f9:0x3ffd86d0 0x4025289f:0x3ffd8700 0x402548d5:0x3ffd8730 0x4024e36b:0x3ffd8770 0x4024fdb4:0x3ffd8790 0x4025050f:0x3ffd8820 0x40245201:0x3ffd8840 0x40245241:0x3ffd8860 0x402393f1:0x3ffd8880 0x40238c2f:0x3ffd8b00 0x40238d89:0x3ffd8b30 0x4025e20b:0x3ffd8b50 0x400e7b96:0x3ffd8b70 0x400d3c31:0x3ffd8d00 0x400952b2:0x3ffd8e40
Rebooting...
Infos aus dem Info-Bereich:
Freier Heap: 80784 Bytes
Groesster freier Heap-Block: 3807384 Bytes
Freier PSRAM: 3873176
WLAN-Signalstaerke: -73 dBm
Software-revision: 20210725-1
Heap sollte doch in dem Fall eigentlich ausreichen oder?
Muss ich mir mit dem Stacktrace-Decoder anschauen. Kann es auf jeden Fall auf einem Lolin32 reproduzieren.
Was du vielleicht parallel dazu mal testen könntest: ESP32-audioI2S/I2Saudio.ino at 268897ef166be16f80e9663e9f2adfa2b92ae57a · schreibfaul1/ESP32-audioI2S · GitHub
Musst dir die GPIOs anpassen. SD passt hier nur für SPI-SD (und nicht SD_MMC). Aber das macht ja nix, wenn du nur nen Webstream testen willst.
Um es anders zu sagen: Das ist die Lib von @Wolle und alles, was dort nicht läuft, wird in ESPuino erst Recht nicht laufen. Alles, was dort läuft und in ESPuino jedoch nicht… das muss ich mir dann genauer anschauen.
This will usually be followed by a message like:
Debug exception reason: Stack canary watchpoint triggered (task_name)
This error indicates that application has written past the end of the stack of task_name
task. Note that not every stack overflow is guaranteed to trigger this error. It is possible that the task writes to stack beyond the stack canary location, in which case the watchpoint will not be triggered.
Das bedeutet dass auf dem Stack nichts mehr „raufgelegt“ werden kann
Ach stimmt, das hatte ich gar nicht gesehen.
Ok, dann muss ich mal den Stack des Tasks vergrößern und es testen.
@Saile Vielleicht kannst du die 4000 auf 4500 oder 5000 setzen:
Dann neu kompilieren und hochladen.
Mit 5000 klappt es wunderbar, 4500 ist zu wenig. Vielen Dank für eure schnelle Hilfe!
Hab’s in den master aufgenommen.
Danke für das Feedback.
Auf einem Lolin32, also ohne PSRAM, läuft dieser Stream übrigens nicht, weil der Speicher nicht reicht (Neopixel, MQTT und mDNS aktiv).
@Marlo Das noch als Nachtrag zu meiner PM von gestern: Also in manchen Fällen ist man mit PSRAM im Vorteil. Für meine Webradio-Sender funktioniert es allerdings gut.
Ich habe leider keinen PSRAM. Hinzufügen von Deutschlandradio als https stream funktionierte leider nicht und führte immer zu einem Neutstart des ESPuinos.
Wenn man das „s“ entfernt, also:
„http://st01.sslstream.dlf.de/dlf/01/128/mp3/stream.mp3“
dann funktioniert es lustigerweise. Aber das nur am Rande.
das ist nichts lustig dran, die „Station“ bietet hat beides an, 1x unverschlüsselt, 1x verschlüsselt
Es gibt aber die Tendenz das die Versionen ohne s wefallen, und nur noch https geht.
Ich verstehe, dass Deutschlandradio sowohl eine unverschlüsselte als auch eine verschlüsselte Option anbietet. Ich fand es nur lustig, dass ich auf der Suche nach Lösugen anfangs verschiedene mögliche Fehlerquellen in Betracht gezogen habe, bevor ich auf die Idee kam, einfach das ‚s‘ in der URL wegzulassen. Es hat etwas gedauert, aber vielleicht war ich in diesem Fall einfach etwas langsamer. Ich denke jedoch, dass es evtl. anderen helfen kann, Zeit und Mühe zu sparen, die auch nicht gleich drauf kommen.