Abspielen von https Streams?

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“.

2 „Gefällt mir“

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.

1 „Gefällt mir“

Unhandled debug exception

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

1 „Gefällt mir“

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.

1 „Gefällt mir“