Die 1. Datei kann nicht abgespielt werden, die 2. schon.
I [1860330] info : Reading file: "/Kinder/Hoerbuecher/Der Raeuber Hotzenplotz/Folge 01 - Der Raeuber Hotzenplotz.mp3
"
I [1860369] info : The .mp3 format is not supported
I [1860369] info : Closing audio file "Folge 01 - Der Raeuber Hotzenplotz.mp3
"
I [1860400] info : buffers freed, free Heap: 124036 bytes
...
I [1860867] info : Reading file: "/Kinder/Hoerbuecher/Der wilde Raeuber Donnerpups/04. Der Raeuberschatz.mp3"
I [1860890] info : MP3Decoder has been initialized, free Heap: 100568 bytes , free stack 3208 DWORDs
An dem Log sieht man schon, dass der Inhalt der m3u Datei anscheinend fehlerhaft geparsed wird und der ‚Carriage Return‘ das abspielen scheitern lässt.
Ich hab ein wenig rumprobiert und mit einem simplen „linefeed“ können die angegebenen Dateien abgespielt werden.
Mode: Webstream (local .m3u-file)
N [2615255] New playlist received with 2 track(s)
D [2615256] Free heap: 96976
I [2615277] info : buffers freed, free Heap: 121772 bytes
I [2615296] info : Reading file: "/Kinder/Hoerbuecher/Der Raeuber Hotzenplotz/Folge 01 - Der Raeuber Hotzenplotz.mp3"
I [2615326] info : MP3Decoder has been initialized, free Heap: 98060 bytes , free stack 3208 DWORDs
Das Format der m3u Datei ist UTF-8.
ESPuino Software-revision: 20240504-1
Ist das so gedacht? Oder sollte man das parsen an der Stelle korrigieren/robuster gestalten?
// normal m3u is just a bunch of filenames, 1 / line
f.seek(0);
while (f.available()) {
String line = f.readStringUntil('\n');
if (line.endsWith("\r")) {
line.trim();
}
// save string
if (!SdCard_allocAndSave(playlist, line)) {
return std::nullopt;
}
}
Die drei Zeilen, die nachfolgend grün markiert sind, habe ich dort eingefügt. Teste das bitte mal, ob das dein Problem behebt, wenn du das auch bei dir einfügst. Hab’s selbst nicht getestet. Vielleicht geht das auch eleganter @laszloh!?
Hi, danke.
Ich komme leider aktuell nicht dazu die Box zu flashen und zu testen. Aber der ‚trim‘ Befehl an der Stelle klingt mMn sinnvoll.
Müsste man ggf. nicht mal auf „\r“ checken und einfacher immer trimmen. Wenn es nichts zu trimmen gibt, macht der Befehl ja nichts.
Hab mich jetzt auch ein wenig von der m3u Liste verabschiedet. Man kann dort keinen Fortschritt der Datei speichern und eine endless loop ist wohl auch nicht so einfach zu realisieren.