schreibfaul1 / ESP32-MiniWebRadio

Internetradio with ESP32, I2S DAC and SPI TFT Display with Touchpad
https://www.youtube.com/watch?v=6QbPee2583o
320 stars 78 forks source link

https Streams möglich? #51

Closed Accuvue closed 2 years ago

Accuvue commented 2 years ago

Hallo Wolle,

der DLF hat seine Streams auf SSL umgestellt.

https://st01.sslstream.dlf.de/dlf/01/128/mp3/stream.mp3

Ich habe Deine Statements unter https://forum.espuino.de/t/abspielen-von-https-streams/544/3 gelesen. Betrifft aber nicht dieses MiniWebRadio-Projekt, oder?

Wäre es möglich, diese Streams hier zum Laufen zu bringen?

VG Hendrik

schreibfaul1 commented 2 years ago

Hallo Hendrik, beim Projekt ESPuino haben die Entwickler viele Funktionen eingebaut die reichlich SRAM belegen. Wird dann eine verschlüsselte Verbindung aufgebaut kann es dann eng werden. Beim Miniwebradio ist das kein Problem, wenn DLF läuft (https://st01.sslstream.dlf.de/dlf/01/128/mp3/stream.mp3) sind noch 160KB Heap frei.

vG Wolle

Accuvue commented 2 years ago

Hallo Wolle, danke für die schnelle Antwort. Funktioniert bei mir leider nicht. Konntest Du es bei Dir mal ausprobieren? Ich nutze eine modifizierte Software-Version einer der letzten Sourcen der Arduino-Entwicklungsumgebung.

VG Hendrik

schreibfaul1 commented 2 years ago

Hab von V1.0.6 auf V2.0.0-rc2 gewechselt und das funktioniert auch. Kommt bei Dir eine Fehlermeldung?
Ich habe aud er Weboberfläche nur die URL eingetragen und auf dem Button rechts daneben gedrückt. image Gehe bitte auf das Frageszeichen, free heap sollte nicht zu niedrig sein (>80KB ist okay)

Accuvue commented 2 years ago

Folgende Meldung: vs1053_info: Connect to new host: https://st01.sslstream.dlf.de/dlf/01/128/mp3/stream.mp3 vs1053_info: Connect to st01.sslstream.dlf.de on port 443, extension /dlf/01/128/mp3/stream.mp3 vs1053_info: Request st01.sslstream.dlf.de/dlf/01/128/mp3/stream.mp3 failed!

free memory: 201880, buffer filled: 0, available stream: 0

Hmm...

schreibfaul1 commented 2 years ago

dann konnte in der vorgegebenen Zeit die Verbindung nicht aufgebaut werden? in vs1053_ext.cpp: image Vielleicht hilft die Erhöhung des Wertes für Timeout?

Accuvue commented 2 years ago

Ich habe bemerkt, dass ich wohl noch eine vs1053_ext von 2019 benutze. Kann sein, dass es damit noch nicht funktionierte? Ich werde mich mal durch die Releases klicken und schauen, was Du so geändert hast.

Accuvue commented 2 years ago

Also es lag tatsächlich an der von mit genutzten sehr alten Version der vs1053_ext. Mit den aktuelleren Versionen klappts auch mit https ganz ordentlich.

Ein kleiner Bug ist m.E. noch drin: Der Rücksprung vom MP3-Player (auch der Zeitansage) zum letzten (https)-Radiosender geht schief. Vielleicht kannst Du das bitte noch mal verifizieren Wolle?

Accuvue commented 2 years ago

Ich möchte meine Frage gleich selbst beantworten:

Das Problem sind alle Zeilen mit "vs1053.connecttohost(_lastconnectedhost);"

Dort wird die vom Programmteil "void vs1053_lasthost(const char *info)" gemeldete URL wiederhergestellt. Das geht schief.

Ich habe diese Zeilen mit "vs1053.connecttohost(setStation(pref.getUInt("station")));" ersetzt. Damit funktioniert es erstmal.

schreibfaul1 commented 2 years ago

Dass bei dir nach dem Ender der mp3 nicht funktioniert hatte ich gelesen. Ich konnte keinen Fehler feststellen und deine Frage geriet in Vergessenheit. Das Ereignis

void vs1053_lasthost(const char *info){                 // really connected URL
    _lastconnectedhost=String(info);
    showStation();
    Serial.printf("lastURL    : %s\n", info);
}

wird immer beim Senderwechsel von der vs1053 Lib aufgerufen. Und das scheint nicht zu funktionieren, somit wird _lastconnectedhost nicht überschrieben. Du kannst mal bitte ins Log gucken ob es eine Zeile mit lastURL... nach einem Senderwechsel gibt

Accuvue commented 2 years ago

Also ja, das Ereignis vs1053_lasthost wird bei mir beim DLF aufgerufen. Folgende URL: "https://st01.sslstream.dlf.de/dlf/01/128/mp3/stream.mp3"

Der Log:

vs1053_info: Song stopped correctly after 20 msec vs1053_info: Connect to new host: "https://st01.sslstream.dlf.de/dlf/01/128/mp3/stream.mp3" vs1053_info: Connect to "st01.sslstream.dlf.de" on port 443, extension "/dlf/01/128/mp3/stream.mp3" vs1053_info: SSL has been established in 1004 ms, free Heap: 164124 bytes tft_info : Total render time was: 14ms vs1053_info: HTTP/1.1 302 Found vs1053_info: date: Sun, 31 Oct 2021 16:38:37 GMT vs1053_info: content-length: 0 vs1053_info: access-control-allow-methods: GET, OPTIONS, HEAD vs1053_info: access-control-allow-origin: vs1053_info: redirect to new host "https://d141.rndfnk.com/ard/dlf/01/mp3/128/stream.mp3?sid=20HP0auMSBMWVc2IWDQ3lSLgrJH&token=3JO8qGImtgGTy6RgexwyNhHDPynzDAdMNNfQ3ThFKqI&tvf=V6lEKJk-sxZkMTQxLnJuZGZuay5jb20" vs1053_info: Song stopped correctly after 0 msec vs1053_info: Connect to new host: "https://d141.rndfnk.com/ard/dlf/01/mp3/128/stream.mp3?sid=20HP0auMSBMWVc2IWDQ3lSLgrJH&token=3JO8qGImtgGTy6RgexwyNhHDPynzDAdMNNfQ3ThFKqI&tvf=V6lEKJk-sxZkMTQxLnJuZGZuay5jb20" vs1053_info: Connect to "d141.rndfnk.com" on port 443, extension "/ard/dlf/01/mp3/128/stream.mp3?sid=20HP0auMSBMWVc2IWDQ3lSLgrJH&token=3JO8qGImtgGTy6RgexwyNhHDPynzDAdMNNfQ3ThFKqI&tvf=V6lEKJk-sxZkMTQxLnJuZGZuay5jb20" vs1053_info: SSL has been established in 1728 ms, free Heap: 168864 bytes vs1053_info: HTTP/1.1 200 OK vs1053_info: content-type: audio/mpeg, format is mp3 vs1053_info: ice-audio-info: ice-samplerate=44100;ice-bitrate=128;ice-channels=2 vs1053_info: icy-name: Deutschlandfunk vs1053_info: icy-samplerate: 44100 Homepage : http://www.deutschlandfunk.de vs1053_info: server: rocketstreamingserver vs1053_info: date: Sun, 31 Oct 2021 16:38:39 GMT vs1053_info: access-control-allow-origin: vs1053_info: Switch to DATA, metaint is 16384 lastURL : https://d141.rndfnk.com/ard/dlf/01/mp3/128/stream.mp3 vs1053_info: stream ready vs1053_info: buffer filled in 6 ms vs1053_info: StreamTitle='Uwe Friedrich über Verdis "Otello" am Staatsschauspiel Hannover, Michael Köhler'

"https://d141.rndfnk.com/ard/dlf/01/mp3/128/stream.mp3" steht also in _lastconnectedhost. Ein erneuter Connect damit geht schief.

schreibfaul1 commented 2 years ago

Der Fehler ist eingegrenzt. Bisher wurde alles hinter dem ? abgeschnitten, da ohne Relevanz. Außer bei diesem Beispiel. Ich habe die vs1053ext Lib aktualisiert und _lastconnectedhost wird nun vollständig übergeben.

viele Grüße Wolle

Accuvue commented 2 years ago

So gehts auch und es ist sicher die sauberere Lösung. Dankeschön...

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.