Erste Erfahrungen / Verbesserungswünsche

Soo die Adventszeit hat begonnen und meine Kids haben die Box mit dem Adventskalender bekommen.
Nun kann ich die ersten Erfahrungen berichten.

Ich nutze die ESPMuse Luxe Box, da sie bereits alles nötige bis auf den RFID Reader enthält.
Was die Akkulaufzeit angeht, kann ich leider noch nichts sagen, ich hab ihn sowieso um 2000mAh verdoppelt.
Normalweise sollte man die Box über einen Schalter ausschalten, daher weiß ich auch nicht, wieviel die Box verbraucht, wenn der ESP im DeepSleep ist.

  1. Beim Bestücken der Box ist mir aufgefallen, dass bei einer unbekannten Karte einfach die letzte Playlist/Titel fortgesetzt wird.
    Hier wäre meine Erwartung, dass einfach gar nichts passiert.

  2. Wenn man einen Button drückt, wäre es gut, wenn ein kurzer Piepton abgespielt werden könnte.
    Das gleiche gilt auch, wenn man die Lautstärke durch langes drücken erhöht.

  3. Wenn man eine Karte aufliegen hat, dann ist der Play/Pausebutton scheinbar ohne Funktion.
    Ich habe PAUSE_WHEN_RFID_REMOVED aktiviert, aber sollte es nicht trotzdem möglich sein, dass man auch pausieren kann, wenn die Karte noch aufliegt?

  4. Es kam jetzt schon 1-2 vor, dass die Karte aufgelegt wurde, der Titel abgespielt wurde, aber dann nicht automatisch der nächste abgespielt wurde. Ich musste dann einmal auf weiter klicken, dann lief auch der Rest der Playlist durch.

  5. Zwischen den Titeln der Playlist ist immer eine kurze Pause.
    Ich habe hier ein Hörspiel von wo ein Titel nur ca 2 Minuten geht, da sind die Unterbrechungen manchmal mitten im Satz.
    Ich glaube da könnte @Wolle was zu sagen, da die Plazlist ja nur an seine Bibliothek übergeben wird.

  6. Wenn keine Karte aufgelegt und wieder entfernt wurde, kann man die Wiedergabe der gerade entfernten Karte trotzdem noch über die Tasten starten/stoppen weiterspringen etc.
    Dies sollte doch nicht möglich sein oder?

  7. Es wäre ganz praktisch, wenn eine kurze Ansage abgespielt werden könnte, wenn der Akku fast leer ist.

  8. Ein Startsound wäre auch ganz gut.

  9. Die interne Verstärkung muss ich noch reduzieren, aktuell ist die Stufe 2 bereits ausreichen laut.

Verstehe ich nicht. Du spielst eine Playlist ab und legst eine unbekannte Karte auf. Dann leuchten kurz alle LEDs rot auf und die bisherige Playlist läuft weiter. Das ist aus meiner Sicht der beste „Fallback“, den ich machen kann. Klar kann ich das Playback dann beenden, aber das ist aus meiner Sicht weniger erstrebenswert.

Sehe ich anders. Weil dafür muss ich das aktuelle Playback unterbrechen. Da gibt’s kein Overlay.
Die Lautstärke ändert man am besten mit einem Drehencoder - deswegen empfehle ich das auch :slight_smile:

Muss ich mal testen. Aber ich meine das hat geklappt, als ich das zuletzt getestet habe. Ist aber schon eine Weile her.

Habe ich noch nie gehabt. Wäre mir auch nicht bekannt, dass das jemals hier jmd. berichtet hätte. Schau mal ins Log, wenn sowas nochmal passiert. Wüsste gerne mal, ob man davon was im Log sieht. Aber was genau passiert in diesem Zustand denn? Pause?

Warum nicht?
Wenn du eine Karte auflegst, die mit einer Playlist verknüpft ist, dann startet das Playback. Nimmst du die Karte weg, dann ist dieses Playback weiterhin aktiv - es ist halt nur pausiert. Die Implementierung interessiert sich nicht dafür, was diese Pause ausgelöst hat (in diesem Falle das Entfernen) - man könnte Pause auch gleichermaßen über das Webinterface, MQTT, mit einer Taste oder einer Modkarte ausgelöst haben.
Ich sehe keine Notwendigkeit, eine Playlist komplett zu beenden. Aber das kannst du dir ja leicht korrigieren, indem das Entfernen einer Karte die Aktion STOP auslöst. Nur muss dann mit jedem Neuauflegen halt die Playlist neu generiert werden.

Grundsätzlich: Ja, ok (wobei der Neopixel Warnungen auch anzeigt).
Aber: Gibt halt kein Overlay - siehe oben. Dafür muss ich aus der aktuellen Playlist aus- und wieder einsteigen. Das führt zu sehr lästigen Pausen. Alternativ müsste man alle Playlists gleich mit einem solchen Element generieren, so dass man da nur hinspringen muss. Aber dafür müsste einiges an Logik an sehr kritischen Stellen des Paylist-Handlings angepasst werden.

Ich persönlich finde sowas super lästig. Aber gut, ja - das könnte man mit einfachen Mitteln einbauen.
Du kannst dir das Feature allerdings jetzt schon ziemlich einfach selbst mit Bordmitteln bauen:

  1. Lade das gewünschte Start-mp3 hoch auf die SD-Karte.
  2. Verknüpfe das mp3 mit einer frei ausgedachten 12stelligen Dummy-ID - z.B 123456789012 - über das Webinterface. Da kannst auch ne richtige Karte nehmen, aber das ist nicht notwendig, dafür eine Karte zu opfern. (@sonovice Für sowas ist es übrigens praktisch, wenn man die ID frei editieren kann :slight_smile: ).
  3. Entferne gCurrentRfidTagId und ersetze es durch die Dummy-ID. Das sorgt dafür, dass diese ID immer gespeichert wird als „letzte Karte“.
  4. Aktiviere PLAY_LAST_RFID_AFTER_REBOOT.
  1. Flashe die Firmware neu.
  1. Ich hab ja aktiviert, dass pausiert wird, wenn die Karte entfernt wird.
    Dann hab ich die neue Karte drauf gelegt und es spielte die vorherige Playlist weiter, obwohl sie pausiert war.
    Klar wenn die Playlist läuft und man ne unbekannte Karte drauf legt, dann sollte die einfach weiterspielen.
    Aber ich hätte nicht erwartet, dass eine unbekannte Karte die letzte Playlist wieder fortsetzt.

  2. ja das mit dem Overlay habe ich auch schon nachgeschaut gehabt, dass das aktuell in der Lib nicht implementiert ist.
    Ich will halt an dem ESPMuse Luxe so wenig wie möglich verändern, daher gibts da nur drei Buttons und einen Neopixel.

  3. Ob das häufiger vorkommt, muss ich mal beobachten, das war am Frühstückstisch und die Kinder hatten vorher auch fleißig die Knöpfe gedrückt.

  4. Ich schau mir das mal an und bau das dann mal ein.
    Das würde dann ja auch Punkt 1 in meinem Fall beheben.
    Ich hab das cachen der Playlists aktiv, daher sollte das ja keinen großen Unterschied machen.

  5. Ja hab ich mir schon gedacht, da ich ja auch schon gesehen habe, dass aktuell kein Overlay möglich ist. Vielleicht kommt das ja irgendwann.
    Ich hab halt nur einen Neopixel verbaut aktuell.
    Vielleicht schau ich mal, ob ich unter das Gitter noch was unterbringen kann.

  6. Werd ich mir mal anschauen, muss ja nur 1-2 Sekunden sein.

  7. Meine Frau hat gerade berichtet, dass die Box, zumindest unterwegs nicht so recht funktioniert.
    Da gibt sie wohl oft komische Geräusche von sich.
    Muss ich mal schauen, ob ich das zuhause nachstellen kann.
    Bisher lief die auf Akku zuhause ohne Probleme.
    Könnte mir denken, dass es unterwegs daran liegt, dass kein WLAN da ist.

EDIT: Soo, jetzt hab ich die Box wieder hier.
Wenn ich ne Karte auflege wird nichts mehr abgespielt …
Drücke ich auf weiter, spielt der nächste Track …
Vielleicht war das ja auch heute morgen das Problem, wo scheinbar die Playlist angehalten wurde.
Im Webinterface steht dann auch kein Titel drin der spielt.

Hier das Log wo ich von der einen zur anderen RFID Karte wechsel.

RFID-Karte erkannt: 04-08-cc-42
RFID-Karte wurde entfernt
Kontroll-Kommando empfangen via Queue: 3
Kommando: Pause
Titel pausiert bei Position: 2144398 (2143016)
Schreibe '#/Die drei Fragezeichen/Die Drei ___ Kids - Folge 86_ Riesen in Rocky Beach#2143016#3#32' in NVS für RFID-Card-ID 004008204066 mit Abspielmodus 3 und letzter Track 32
#/Die drei Fragezeichen/Die Drei ___ Kids - Folge 86_ Riesen in Rocky Beach#2143016#3#32
RFID-Karte erkannt: 04-0c-cc-42
RFID-Karte empfangen: 004012204066
RFID-Karte erkannt: 04-0c-cc-42
Kontroll-Kommando empfangen via Queue: 3
Kommando: Pause
Playlist-Generierung: cached
RFID-Karte erkannt: 04-0c-cc-42
Freier Speicher: 64904
Gebe Speicher der alten Playlist frei.
Freier Speicher nach Aufräumen: 64904
Anzahl gültiger Files/Webstreams: 30
Modus: Hoerspiel
info        : Closing audio file
Neue Playlist empfangen mit 30 Titel(n)
RFID-Karte erkannt: 04-0c-cc-42
info        : buffers freed, free Heap: 89728 bytes
info        : Reading file: "/Die drei Fragezeichen/Die Drei ___ Kids - Folge 87_ Das Geisterspiel/16 - 87 - Das Geisterspiel (Teil 14).mp3"
info        : MP3Decoder has been initialized, free Heap: 65976 bytes
RFID-Karte erkannt: 04-0c-cc-42
Titel wird abgespielt ab Position 2235589
'/Die drei Fragezeichen/Die Drei ___ Kids - Folge 87_ Das Geisterspiel/16 - 87 - Das Geisterspiel (Teil 14).mp3' wird abgespielt (16 von 30)

Also das Problem mit dem nicht mehr fortsetzen und die Fehler bei der Wiedergabe die meine Frau berichtet hatte, könnte an meiner Implementierung vom PN523 Reader liegen, da hab ich gerade noch etwas angepasst.
Da wurde bei jedem Durchlauf geloggt, dass die Karte aufliegt, teilweise sind dann erst Änderungen der Karte festgestellt worden, nachdem keine mehr auflag.

Mich hat’s ehrlich gesagt auch schon gewundert. Weil wir waren dieses Jahr 2 Wochen in Urlaub und beide Kinder hatten ihre ESPuinos dabei. Und die wurden echt viel genutzt. Die hatten in dieser Zeit kein WLAN und es gab keinerlei Probleme.
Gut, ich habe seitdem das WLAN auf asynchronen Start umgestellt, aber auch damit ist mein Sohnemann schon im Auto gefahren (ohne WLAN).

Tja, das dauert schon eine Weile, bis man die Software für RFID-Reader so halbwegs gehärtet hat.

Also irgendwie scheint das Problem mit der Karte immer noch zu bestehen.

Hier das Log, von einer Karte die funktioniert und dann die Karte die nicht funktioniert.
Was mir auffällt, ist das bei der nicht funktionierenden keine Infos zur Bitrate etc angezeigt werden.
Die Position ist auch immer die gleiche und erhöht sich nicht obwohl in die GUI auf Play steht.

RFID-Karte erkannt: 04-08-cc-42
RFID-Karte empfangen: 004008204066
Playlist-Generierung: cached
Freier Speicher: 64008
Gebe Speicher der alten Playlist frei.
Freier Speicher nach Aufräumen: 64008
Anzahl gültiger Files/Webstreams: 41
Modus: Hoerspiel
info        : Closing audio file
Neue Playlist empfangen mit 41 Titel(n)
Free heap: 65480
info        : buffers freed, free Heap: 88832 bytes
info        : Reading file: "/Die drei Fragezeichen/Die Drei ___ Kids - Folge 86_ Riesen in Rocky Beach/33 - 86 - Riesen in Rocky Beach (Teil 31).mp3"
info        : MP3Decoder has been initialized, free Heap: 65100 bytes
Titel wird abgespielt ab Position 359166
'/Die drei Fragezeichen/Die Drei ___ Kids - Folge 86_ Riesen in Rocky Beach/33 - 86 - Riesen in Rocky Beach (Teil 31).mp3' wird abgespielt (33 von 41)
info        : Content-Length: 2144398
info        : file has no mp3 tag, skip metadata
info        : Audio-Length: 2144398
info        : stream ready
info        : syncword found at pos 0
info        : MP3 decode error -2 : MAINDATA_UNDERFLOW
info        : syncword found at pos 0
info        : MP3 decode error -2 : MAINDATA_UNDERFLOW
info        : syncword found at pos 0
no cover image for SD-card audio
info        : Channels: 2
info        : SampleRate: 44100
info        : BitsPerSample: 16
info        : BitRate: 128000
RFID-Karte wurde entfernt
Kontroll-Kommando empfangen via Queue: 3
Kommando: Pause
Titel pausiert bei Position: 816234 (533037)
Schreibe '#/Die drei Fragezeichen/Die Drei ___ Kids - Folge 86_ Riesen in Rocky Beach#533037#3#32' in NVS für RFID-Card-ID 004008204066 mit Abspielmodus 3 und letzter Track 32
#/Die drei Fragezeichen/Die Drei ___ Kids - Folge 86_ Riesen in Rocky Beach#533037#3#32
ws[/ws][2] text-message[24]: ping
RFID-Karte erkannt: 04-0c-cc-42
RFID-Karte empfangen: 004012204066
Playlist-Generierung: cached
Freier Speicher: 64136
Gebe Speicher der alten Playlist frei.
Freier Speicher nach Aufräumen: 64136
Anzahl gültiger Files/Webstreams: 30
Modus: Hoerspiel
info        : Closing audio file
Neue Playlist empfangen mit 30 Titel(n)
Free heap: 65608
info        : buffers freed, free Heap: 88980 bytes
info        : Reading file: "/Die drei Fragezeichen/Die Drei ___ Kids - Folge 87_ Das Geisterspiel/18 - 87 - Das Geisterspiel (Teil 16).mp3"
info        : MP3Decoder has been initialized, free Heap: 65264 bytes
Titel wird abgespielt ab Position 2275295
'/Die drei Fragezeichen/Die Drei ___ Kids - Folge 87_ Das Geisterspiel/18 - 87 - Das Geisterspiel (Teil 16).mp3' wird abgespielt (18 von 30)

Ich glaube ich komme dem Fehler näher …

Wenn ich die Datei von Anfang an starte, dann bekomme ich ja auch die Conten-Length:

'/Die drei Fragezeichen/Die Drei ___ Kids - Folge 87_ Das Geisterspiel/18 - 87 - Das Geisterspiel (Teil 16).mp3' wird abgespielt (18 von 30)
info        : Content-Length: 2276677

Wenn man sich nun anschaut, ab wann der vorher abspielen wollte.
Stell man fest, dass das Abspielen direkt am Ende der Datei starten sollte.
Damit scheint der Code wohl aktuell noch nicht klar zu kommen.

Titel wird abgespielt ab Position 2275295
'/Die drei Fragezeichen/Die Drei ___ Kids - Folge 87_ Das Geisterspiel/18 - 87 - Das Geisterspiel (Teil 16).mp3' wird abgespielt (18 von 30)

EDIT:
Also irgendwas ist da komisch.
Jetzt wurde ein Titel zu Ende gespielt und hielt dann an.
Hier das Log dazu:

Titel wird abgespielt ab Position 1029573
'/Die drei Fragezeichen/Die Drei ___ Kids - Folge 86_ Riesen in Rocky Beach/33 - 86 - Riesen in Rocky Beach (Teil 31).mp3' wird abgespielt (33 von 41)
info        : Content-Length: 2144398
info        : file has no mp3 tag, skip metadata
info        : Audio-Length: 2144398
info        : stream ready
info        : syncword found at pos 0
info        : MP3 decode error -2 : MAINDATA_UNDERFLOW
info        : syncword found at pos 0
info        : MP3 decode error -2 : MAINDATA_UNDERFLOW
info        : syncword found at pos 0
info        : Channels: 2
info        : SampleRate: 44100
info        : BitsPerSample: 16
info        : BitRate: 128000
no cover image for SD-card audio
...
RFID-Karte wurde entfernt
Kontroll-Kommando empfangen via Queue: 3
Kommando: Pause
Titel pausiert bei Position: 2144398 (2143016)
Schreibe '#/Die drei Fragezeichen/Die Drei ___ Kids - Folge 86_ Riesen in Rocky Beach#2143016#3#32' in NVS für RFID-Card-ID 004008204066 mit Abspielmodus 3 und letzter Track 32
#/Die drei Fragezeichen/Die Drei ___ Kids - Folge 86_ Riesen in Rocky Beach#2143016#3#32
RFID-Karte erkannt: 04-08-cc-42
RFID-Karte empfangen: 004008204066
Playlist-Generierung: cached
Freier Speicher: 64020
Gebe Speicher der alten Playlist frei.
Freier Speicher nach Aufräumen: 64020
Anzahl gültiger Files/Webstreams: 41
Modus: Hoerspiel
info        : Closing audio file
Neue Playlist empfangen mit 41 Titel(n)
Free heap: 65500
info        : buffers freed, free Heap: 88864 bytes
info        : Reading file: "/Die drei Fragezeichen/Die Drei ___ Kids - Folge 86_ Riesen in Rocky Beach/33 - 86 - Riesen in Rocky Beach (Teil 31).mp3"
info        : MP3Decoder has been initialized, free Heap: 65132 bytes
Titel wird abgespielt ab Position 2143016
'/Die drei Fragezeichen/Die Drei ___ Kids - Folge 86_ Riesen in Rocky Beach/33 - 86 - Riesen in Rocky Beach (Teil 31).mp3' wird abgespielt (33 von 41)

Ich habe exakt das gleiche Problem. Bei mehreren Playlists die alle im Hörspielmodus wiedergegeben werden. Bei anderen Wiedergaben ist mir das noch nicht passiert.

Der Neopixel bleibt übrigens dauerhaft auf der letzten Trackposition stehen (alles leuchtet) und sonst tut sich nichts. Wenn ich die „Zurücktaste“ (CMD_PREVTRACK) drücke und der Titel noch einmal von vorne gespielt wird, geht er (meist) problemlos zum nächsten Titel über.

[ 1588335 ]  RFID-Karte empfangen: 229085150045
[ 1588416 ]  Playlist-Generierung: cached
[ 1588516 ]  Freier Speicher: 58176
[ 1588516 ]  Gebe Speicher der alten Playlist frei.
[ 1588517 ]  Freier Speicher nach Aufräumen: 58176
[ 1588522 ]  Anzahl gültiger Files/Webstreams: 29
[ 1588523 ]  Modus: Hoerspiel
[ 1588562 ]  info        : Closing audio file
[ 1588563 ]  Neue Playlist empfangen mit 29 Titel(n)
[ 1588563 ]  Free heap: : 59544
[ 1588732 ]  info        : buffers freed, free Heap: 82900 bytes
[ 1588732 ]  info        : Reading file: "/Karneval der Tiere/25 - Camille Saint-Sa�nsPeter Stangel - Die Fossilien.mp3"
[ 1588761 ]  info        : MP3Decoder has been initialized, free Heap: 59208 bytes
[ 1588763 ]  Titel wird abgespielt ab Position 303209
[ 1588771 ]  '/Karneval der Tiere/25 - Camille Saint-Sa�nsPeter Stangel - Die Fossilien.mp3' wird abgespielt (25 von 29)
[ 1588778 ]  info        : Content-Length: 1472105
[ 1588778 ]  info        : file has no mp3 tag, skip metadata
[ 1588783 ]  info        : Audio-Length: 1472105
[ 1588791 ]  info        : stream ready
[ 1588791 ]  info        : syncword found at pos 0
[ 1588800 ]  info        : MP3 decode error -2 : MAINDATA_UNDERFLOW
[ 1588804 ]  info        : syncword found at pos 0
[ 1588809 ]  info        : MP3 decode error -2 : MAINDATA_UNDERFLOW
[ 1588815 ]  info        : syncword found at pos 0
[ 1588824 ]  info        : Channels: 1
[ 1588824 ]  info        : SampleRate: 48000
[ 1588825 ]  info        : BitsPerSample: 16
[ 1588828 ]  info        : BitRate: 128000
[ 1597069 ]  Neue Lautstärke empfangen via Queue: 3
[ 1597143 ]  Neue Lautstärke empfangen via Queue: 2
[ 1597239 ]  Neue Lautstärke empfangen via Queue: 1
[ 1800112 ]  RSSI: -45 dBm
[ 1810108 ]  Aktuelle Batteriespannung: 3.52 V
[ 1810110 ]  Aktuelle Batterieladung: 100.00 %
[ 1980120 ]  RSSI: -52 dBm
[ 2011633 ]  Kontroll-Kommando empfangen via Queue: 5
[ 2011633 ]  Schreibe '#/Karneval der Tiere#0#3#24' in NVS für RFID-Card-ID 229085150045 mit Abspielmodus 3 und letzter Track 24
[ 2011638 ]  #/Karneval der Tiere#0#3#24
[ 2011644 ]  Titel wird im Hörspielmodus von vorne gespielt.
[ 2011647 ]  Kommando: Vorheriger Titel
[ 2011651 ]  info        : Closing audio file
[ 2011732 ]  info        : buffers freed, free Heap: 82900 bytes
[ 2011732 ]  info        : Reading file: "/Karneval der Tiere/25 - Camille Saint-Sa�nsPeter Stangel - Die Fossilien.mp3"
[ 2011760 ]  info        : MP3Decoder has been initialized, free Heap: 59208 bytes
[ 2011766 ]  '/Karneval der Tiere/25 - Camille Saint-Sa�nsPeter Stangel - Die Fossilien.mp3' wird abgespielt (25 von 29)
[ 2011774 ]  info        : Content-Length: 1472105
[ 2011774 ]  info        : ID3 framesSize: 146153
[ 2011775 ]  info        : ID3 version: 2.3
[ 2011783 ]  info        : ID3 normal frames
[ 2011796 ]  id3data     : Album: Saint-Saens: Der Karneval der Tiere
[ 2011808 ]  id3data     : Artist: Camille Saint-Saëns/Peter Stangel
[ 2011820 ]  id3data     : Band: Peter Stangel
[ 2011832 ]  id3data     : ContentType: Classical
[ 2011844 ]  id3data     : Title: Die Fossilien
[ 2011861 ]  id3data     : Track: 25
[ 2011873 ]  id3data     : Year: 2010
[ 2012947 ]  info        : Audio-Length: 1325952
[ 2012954 ]  info        : stream ready
[ 2012954 ]  info        : syncword found at pos 0
[ 2012958 ]  info        : Channels: 1
[ 2012958 ]  info        : SampleRate: 48000
[ 2012958 ]  info        : BitsPerSample: 16
[ 2012962 ]  info        : BitRate: 128000

Dann müsst ihr mir nochmal genau beschreiben, wie ich das reproduzieren kann.

Wie genau man das reproduzieren kann, weiß ich gerade auch nicht.
Aber wenn es passiert ist, dann hängt dieser Titel dauerhaft.
Sprich wenn man eingestellt hat, dass an der letzten Position fortgefahren werden soll, dann gehts auch nicht.

Ich hab ja irgendwie die Vermutung, dass der das Ende des Tracks irgendwie „verpasst“ und dann hängt.
Im Fehlerfall, will der die Wiedergabe ja immer wieder direkt am Ende starten, siehe meine log von oben.

Beim Start wird der Titel eingelesen


info : Audio-Length: 2144398

Dann nachdem der Titel angehalten hat, habe ich die Karte entfernt:

Titel pausiert bei Position: 2144398 (2143016)

Dann die Karte wieder aufgelegt:

Titel wird abgespielt ab Position 2143016

Ich habe nun ein immer und immer gleiches Muster, das den Fehler erzeugt, dass ein MP3 bis zum Ende gespielt wird, die LEDs anzeigen, dass der Track (fast) zuende ist, aber der folgende Titel nicht gespielt wird. Der Trick lautet: vorspulen.

Immer wenn ich einen Titel vorspule, wird der folgende Titel nicht automatisch abgespielt. Der Fehler tritt auch auf, wenn man über das Titelende hinaus spulen möchte.

Vielleicht kann @Wolle da ja etwas zu sagen.

Allerdings: Auch bei mir trat dieser Fehler auch schon ohne Vorspulen auf. Allerdings lässt er sich dann nicht so einfach reproduzieren.

[ 1638527 ]  info        : Closing audio file
[ 1638666 ]  info        : buffers freed, free Heap: 82780 bytes
[ 1638667 ]  info        : Reading file: "/Dr. Brumm/Dr. Brumm steckt fest & geht baden/02 - Kapitel 2.mp3"        
[ 1638684 ]  info        : MP3Decoder has been initialized, free Heap: 59120 bytes
[ 1638690 ]  '/Dr. Brumm/Dr. Brumm steckt fest & geht baden/02 - Kapitel 2.mp3' wird abgespielt (2 von 6)
[ 1638697 ]  info        : Content-Length: 3168807
[ 1638698 ]  info        : ID3 framesSize: 136359
[ 1638699 ]  info        : ID3 version: 2.3
[ 1638706 ]  info        : ID3 normal frames
[ 1638719 ]  id3data     : Album: Dr. Brumm steckt fest / Dr. Brumm geht baden
[ 1638729 ]  id3data     : Artist: Dr. Brumm
[ 1638742 ]  id3data     : Band: Dr. Brumm
[ 1638754 ]  id3data     : PartOfSet: 1
[ 1638766 ]  id3data     : ContentType: Hörspiel
[ 1638778 ]  id3data     : Subtitle: Kapitel 1.2 & Dr. Brumm steckt fest - Kapitel 2.1
[ 1638789 ]  id3data     : Title: Kapitel 2
[ 1638806 ]  id3data     : Track: 02
[ 1638818 ]  id3data     : Year: 2017
[ 1639842 ]  info        : Audio-Length: 3032448
[ 1639848 ]  info        : stream ready
[ 1639848 ]  info        : syncword found at pos 0
[ 1639853 ]  info        : Channels: 1
[ 1639854 ]  info        : SampleRate: 48000
[ 1639854 ]  info        : BitsPerSample: 16
[ 1639856 ]  info        : BitRate: 128000
[ 1643205 ]  30 Sekunden nach vorne gesprungen
[ 1643207 ]  info        : syncword found at pos 161
[ 1643210 ]  info        : syncword found at pos 0
[ 1643213 ]  info        : MP3 decode error -2 : MAINDATA_UNDERFLOW
[ 1643216 ]  info        : syncword found at pos 0
[ 1643220 ]  info        : MP3 decode error -2 : MAINDATA_UNDERFLOW
[ 1643227 ]  info        : syncword found at pos 0
[ 1643232 ]  info        : Channels: 1
[ 1643233 ]  info        : SampleRate: 48000
[ 1643236 ]  info        : BitsPerSample: 16
[ 1643240 ]  info        : BitRate: 128000
[ 1645306 ]  30 Sekunden nach vorne gesprungen
[ 1645308 ]  info        : syncword found at pos 33
[ 1645310 ]  info        : syncword found at pos 0
[ 1645314 ]  info        : MP3 decode error -2 : MAINDATA_UNDERFLOW
[ 1645316 ]  info        : syncword found at pos 0
[ 1645319 ]  info        : MP3 decode error -2 : MAINDATA_UNDERFLOW
[ 1645328 ]  info        : syncword found at pos 0
[ 1645336 ]  info        : Channels: 1
[ 1645336 ]  info        : SampleRate: 48000
[ 1645337 ]  info        : BitsPerSample: 16
[ 1645341 ]  info        : BitRate: 128000
[ 1647472 ]  30 Sekunden nach vorne gesprungen
[ 1647474 ]  info        : syncword found at pos 136
[ 1647476 ]  info        : syncword found at pos 0
[ 1647480 ]  info        : MP3 decode error -2 : MAINDATA_UNDERFLOW
[ 1647482 ]  info        : syncword found at pos 361
[ 1647488 ]  info        : syncword found at pos 0
[ 1647497 ]  info        : Channels: 1
[ 1647497 ]  info        : SampleRate: 48000
[ 1647497 ]  info        : BitsPerSample: 16
[ 1647501 ]  info        : BitRate: 128000
[ 1649761 ]  30 Sekunden nach vorne gesprungen
[ 1649763 ]  info        : syncword found at pos 33
[ 1649766 ]  info        : syncword found at pos 0
[ 1649770 ]  info        : MP3 decode error -2 : MAINDATA_UNDERFLOW
[ 1649773 ]  info        : syncword found at pos 0
[ 1649774 ]  info        : MP3 decode error -2 : MAINDATA_UNDERFLOW
[ 1649783 ]  info        : syncword found at pos 0
[ 1649792 ]  info        : Channels: 1
[ 1649792 ]  info        : SampleRate: 48000
[ 1649792 ]  info        : BitsPerSample: 16
[ 1649796 ]  info        : BitRate: 128000

Springst du mit +30s ggf. über die Dateigrenze hinweg?
Also sagen wir mal die Restlaufzeit ist 20s und du springst mit 30s da halt drüber?

Der Fehler tritt dann auch auf. Aber auch wenn ich nur bis kurz vor das Titelende spule tritt der Fehler auf.

In der Testumgebung kann ich das nicht nachvollziehen, auch wenn über das Ende der Datei geprungen wird. Könnt ihr bitte im Log prüfen, ob immer das Ereignis void audio_eof_mp3(const char *info) am Ende der Audiodatei aufgerufen wird?

1 „Gefällt mir“

Versuch bitte nach vorspulen gleich wieder gleich oft zurückspulen ob dann auch wieder das Ende erkannt wird.
Hatte das schon einmal im Nov. hier ins Forum gestellt. Ich wollte Deep Sleep testen und spulte vor bis kurz vor das Ende. Dann wurde das Ende auch nicht erkannt.

Siehe: Ende des Titels wird nicht erkannt - #7 von Niko

Auf diese Idee bin ich bisher noch nicht gekommen, da es keinen Knopf fürs Zurückspulen bei mir gibt. :wink: Hab es ausprobiert und es hat funktioniert. Das Zurückspulen, scheint die Problematik des Vorspulens aufzuheben.

Und was wäre dann die Lösung?

Ich bin leider noch nicht so tief im Source drin.
Aber sobald ein Problem reproduzierbar ist, ist die Lösung nicht mehr fern.
Mein Verdacht, aber das können die Autoren viel besser analysieren, geht in Richtung:
Die Endeerkennung orientiert sich an einen Pointer, die im Normalfall gleichlautend ist mit einem 2. pointer und bei Vorspulen die sich dann unterscheiden und die Endeerkennung sich diese am falschen (vorgespulten) orientiert oder irgendwo der offset fälschlicherweise mitgerechnet wird. Aber genug dem Kaffeesudlesen. Warten wir auf @biologist oder @Wolle oder wer sonst für den entsprechenden Part uns weiterhelfen kann.

Fehler können hier nicht ausgeschlossen werden. Vom Prinzip entscheidet die aktuelle Leseposition auf der Datei zusammen mit den Ende des Audioblocks über das Stop des Abspielvorganges. Manchmal kommt nach den Audiodaten noch ein ID3V1 Block, der ausgelesen wird oder weitere Infos oder Bilder die übersprungen weden. Oder das Ende des Audioblocks ist auch das Ende der Datei. In allen Fällen wird gewartet bis der Buffer leer ist und alle dekodierten Audiodaten im I2S DMA liegen. Erst dann wird audio_eof_mp3() aufgerufen. Schicke mir doch bitte die Datei oder einen Link damit ich den Fehler reproduzieren kann.

Da kann ich dir meine gesamte Musiksammlung von der Box schicken. Das ist bei jeder Datei (bei der ich es probiert habe) so. Egal wie lang oder kurz. Ich schicke dir dennoch mal eine Datei zu, sobald ich am PC sitze.

Hier eine Beispieldatei: