Probleme mit mp3 Dateien

Also bei mir sieht es so aus. Oben kommt erst jede Minute RSSI und dann gehen die Fehler los. Ganz unten habe ich dann eine neue Karte aufgelegt.

[ 3180375 ] RSSI: -45 dBm
[ 3236619 ] info : MP3 decode error -9 : INVALID_HUFFCODES
[ 3236623 ] info : syncword found at pos 209
[ 3236626 ] info : syncword found at pos 0
[ 3236635 ] info : Channels: 2
[ 3236635 ] info : SampleRate: 44100
[ 3236635 ] info : BitsPerSample: 16
[ 3236635 ] info : BitRate: 192000
[ 3237103 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3237107 ] info : syncword found at pos 503
[ 3237110 ] info : syncword found at pos 0
[ 3237113 ] info : MP3 decode error -9 : INVALID_HUFFCODES
[ 3237117 ] info : syncword found at pos 77
[ 3237121 ] info : syncword found at pos 0
[ 3237132 ] info : Channels: 2
[ 3237132 ] info : SampleRate: 44100
[ 3237132 ] info : BitsPerSample: 16
[ 3237134 ] info : BitRate: 192000
[ 3237241 ] info : MP3 decode error -9 : INVALID_HUFFCODES
[ 3237244 ] info : syncword found at pos 613
[ 3237247 ] info : syncword found at pos 0
[ 3237256 ] info : Channels: 2
[ 3237256 ] info : SampleRate: 44100
[ 3237256 ] info : BitsPerSample: 16
[ 3237256 ] info : BitRate: 192000
[ 3237668 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3237672 ] info : syncword found at pos 626
[ 3237675 ] info : syncword found at pos 0
[ 3237683 ] info : Channels: 2
[ 3237684 ] info : SampleRate: 44100
[ 3237684 ] info : BitsPerSample: 16
[ 3237684 ] info : BitRate: 192000
[ 3237887 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3237891 ] info : syncword found at pos 153
[ 3237894 ] info : syncword found at pos 0
[ 3237897 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3237901 ] info : syncword found at pos 195
[ 3237905 ] info : syncword found at pos 0
[ 3237915 ] info : MP3 decode error -9 : INVALID_HUFFCODES
[ 3237918 ] info : syncword found at pos 0
[ 3237927 ] info : Channels: 2
[ 3237927 ] info : SampleRate: 44100
[ 3237927 ] info : BitsPerSample: 16
[ 3237928 ] info : BitRate: 192000
[ 3238154 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3238157 ] info : syncword found at pos 626
[ 3238160 ] info : syncword found at pos 0
[ 3238167 ] info : MP3 decode error -9 : INVALID_HUFFCODES
[ 3238171 ] info : syncword found at pos 0
[ 3238180 ] info : Channels: 2
[ 3238180 ] info : SampleRate: 44100
[ 3238180 ] info : BitsPerSample: 16
[ 3238180 ] info : BitRate: 192000
[ 3238476 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3238480 ] info : syncword found at pos 80
[ 3238483 ] info : syncword found at pos 0
[ 3238492 ] info : Channels: 2
[ 3238492 ] info : SampleRate: 44100
[ 3238492 ] info : BitsPerSample: 16
[ 3238492 ] info : BitRate: 192000
[ 3238776 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3238780 ] info : syncword found at pos 626
[ 3238783 ] info : syncword found at pos 0
[ 3238791 ] info : Channels: 2
[ 3238792 ] info : SampleRate: 44100
[ 3238792 ] info : BitsPerSample: 16
[ 3238792 ] info : BitRate: 192000
[ 3239156 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3239160 ] info : syncword found at pos 115
[ 3239163 ] info : syncword found at pos 0
[ 3239171 ] info : Channels: 2
[ 3239172 ] info : SampleRate: 44100
[ 3239172 ] info : BitsPerSample: 16
[ 3239172 ] info : BitRate: 192000
[ 3239431 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3239434 ] info : syncword found at pos 626
[ 3239437 ] info : syncword found at pos 0
[ 3239444 ] info : MP3 decode error -9 : INVALID_HUFFCODES
[ 3239447 ] info : syncword found at pos 0
[ 3239456 ] info : Channels: 2
[ 3239456 ] info : SampleRate: 44100
[ 3239456 ] info : BitsPerSample: 16
[ 3239457 ] info : BitRate: 192000
[ 3239809 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3239812 ] info : syncword found at pos 147
[ 3239815 ] info : syncword found at pos 0
[ 3239818 ] info : MP3 decode error -9 : INVALID_HUFFCODES
[ 3239822 ] info : syncword found at pos 0
[ 3239833 ] info : Channels: 2
[ 3239833 ] info : SampleRate: 44100
[ 3239833 ] info : BitsPerSample: 16
[ 3239835 ] info : BitRate: 192000
[ 3240000 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3240003 ] info : syncword found at pos 237
[ 3240006 ] info : syncword found at pos 0
[ 3240011 ] info : MP3 decode error -9 : INVALID_HUFFCODES
[ 3240015 ] info : syncword found at pos 493
[ 3240018 ] info : syncword found at pos 0
[ 3240029 ] info : Channels: 2
[ 3240029 ] info : SampleRate: 44100
[ 3240029 ] info : BitsPerSample: 16
[ 3240031 ] info : BitRate: 192000
[ 3240375 ] RSSI: -43 dBm
[ 3240430 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3240433 ] info : syncword found at pos 259
[ 3240436 ] info : syncword found at pos 0
[ 3240445 ] info : Channels: 2
[ 3240445 ] info : SampleRate: 44100
[ 3240445 ] info : BitsPerSample: 16
[ 3240446 ] info : BitRate: 192000
[ 3240600 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3240603 ] info : syncword found at pos 626
[ 3240606 ] info : syncword found at pos 0
[ 3240617 ] info : Channels: 2
[ 3240618 ] info : SampleRate: 44100
[ 3240618 ] info : BitsPerSample: 16
[ 3240618 ] info : BitRate: 192000
[ 3241089 ] info : MP3 decode error -9 : INVALID_HUFFCODES
[ 3241093 ] info : syncword found at pos 322
[ 3241096 ] info : syncword found at pos 0
[ 3241106 ] info : Channels: 2
[ 3241106 ] info : SampleRate: 44100
[ 3241106 ] info : BitsPerSample: 16
[ 3241106 ] info : BitRate: 192000
[ 3242447 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3242451 ] info : syncword found at pos 246
[ 3242454 ] info : syncword found at pos 0
[ 3242459 ] info : Channels: 2
[ 3242459 ] info : SampleRate: 16000
[ 3242459 ] info : BitsPerSample: 16
[ 3242463 ] info : BitRate: N/A
[ 3242470 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3242476 ] info : syncword found at pos 84
[ 3242480 ] info : syncword found at pos 0
[ 3242491 ] info : Channels: 2
[ 3242491 ] info : SampleRate: 44100
[ 3242491 ] info : BitsPerSample: 16
[ 3242493 ] info : BitRate: 192000
[ 3242996 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3243000 ] info : syncword found at pos 151
[ 3243003 ] info : syncword found at pos 0
[ 3243006 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3243010 ] info : syncword found at pos 473
[ 3243014 ] info : syncword found at pos 0
[ 3243025 ] info : Channels: 2
[ 3243026 ] info : SampleRate: 44100
[ 3243026 ] info : BitsPerSample: 16
[ 3243027 ] info : BitRate: 192000
[ 3243101 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3243104 ] info : syncword found at pos 623
[ 3243107 ] info : syncword found at pos 0
[ 3243116 ] info : Channels: 2
[ 3243116 ] info : SampleRate: 44100
[ 3243116 ] info : BitsPerSample: 16
[ 3243117 ] info : BitRate: 192000
[ 3243665 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 3243669 ] info : syncword found at pos 626
[ 3243672 ] info : syncword found at pos 0
[ 3243681 ] info : Channels: 2
[ 3243681 ] info : SampleRate: 44100
[ 3243681 ] info : BitsPerSample: 16
[ 3243681 ] info : BitRate: 192000
[ 3243745 ] RFID-Karte erkannt: (ISO-14443) ID: 3c-bc-6c-3a
[ 3243753 ] RFID-Karte empfangen: 060188108058
[ 3243754 ] Modus: Webstream
[ 3243755 ] Neue Playlist empfangen mit 1 Titel(n)
[ 3243755 ] Free heap: : 61756
[ 3243756 ] info : Connect to new host: „http://stream.bassdrive.uk:8200
[ 3243768 ] info : buffers freed, free Heap: 86280 bytes
[ 3243848 ] info : Connection has been established in 79 ms, free Heap: 86080 bytes
[ 3243852 ] ‚http://stream.bassdrive.uk:8200‘ wird abgespielt (1 von 1)
[ 3243936 ] info : icy-name: Bassdrive - Worldwide Drum and Bass Radio
[ 3243936 ] station : Bassdrive - Worldwide Drum and Bass Radio
[ 3243940 ] bitrate : 192000
[ 3243942 ] icyurl : http://www.bassdrive.com
[ 3243948 ] info : MP3Decoder has been initialized, free Heap: 55316 bytes , free stack 2736 DWORDs
[ 3243955 ] lasthost : http://stream.bassdrive.uk:8200
[ 3243965 ] info : stream ready
[ 3243967 ] info : syncword found at pos 0
[ 3243981 ] info : Channels: 2
[ 3243981 ] info : SampleRate: 44100
[ 3243981 ] info : BitsPerSample: 16
[ 3243981 ] info : BitRate: 192000
[ 3244105 ] info : StreamTitle=‚Plates from the Crypt Mar 10 - hosted by Ill Omen‘
[ 3244105 ] streamtitle : Plates from the Crypt Mar 10 - hosted by Ill Omen
[ 3261091 ] logo request
[ 3261117 ] no cover image for webstream
[ 3261380 ] build filelist finished: 148 ms
[ 3261385 ] ws[/ws][1] connect
[ 3261449 ] no cover image for webstream

Die Datei „Sonne Mond und Sterne…mp3“ läuft in der Testumgebung ohne Probleme. Also habe ich sie dann im ESPUINO getestet und konnte den selben Fehler feststellen. Das Dateiende wird nicht korrekt erkannt, stattdessen gibt es einen Fehler vom Dekoder, es wird ein neues SyncWord gesucht (Überlauf im InBuff) und die Datei weiter abgespielt. Im InBuff sind noch Daten vorhanden, etwa 200KB, die in einer Schleife abgespielt werden. EOF wird nie erzeugt.
Ich hatte die Datei über das WebInterface auf die SD Karte geschrieben. Danach ist die Audiodatei aud der SD kürzer als das Original???, etwa 700 Bytes fehlen.
Danach habe ich die SD Karte aus den ESPUINO genommen und die Datei mit dem PC aud die SD Karte geschrieben, jetzt stimmt die Dateilänge und der Fehler ist verschwunden. Kann das bitte jemand überprüfen. Meine ESPUINO-SW ist vom Januar.

1 „Gefällt mir“

Ist deine SD per SPI oder SD_MMC angebunden?

Die SD Karte läuft über SPI, ich habe ein OLIMEX Bord, das geht leider kein SD_MMC

Das eine Datei beim Upload verstümmelt wird ist mir bisher noch nie aufgefallen. War auch noch nie Thema, außer jetzt bei der Sonne, Mond Sterne…mp3 Datei weiter oben im Thread, heißt dort musicfile.zip

Also es ist nicht 100% auszuschließen, dass es von SPI kommt. Wenn man ein File hochlädt, dann wird aus diesem Grund eine Statistik ausgegeben, wieviel Pakete erfolgreich übertragen wurden.
Da haben wir schon einiges an Zeit drin verbraten, aber bisher hat niemand rausgefunden, warum Dateien immer mal wieder (nicht immer) beim SPI-Transfer kaputtgehen. Der hört dann ab einem gewissen Punkt einfach auf, den Kram auf die SD zu schreiben und meldet das auch entsprechend zurück.

Hallo @Joe91,
ich bin der Meinug, dass die Datei auf der SD Karte von der Originaldatei in der Länge abweicht.
MP3 decode error -1 : INDATA_UNDERFLOW
weist darauf hin. Damit nicht die Endlosschleife wirkt, habe ich eine Abbruchbdingung eingebaut. Bei einem Dekoderfehler wird jetzt ein EOF gesendet.
Im Log sieht das dann so aus:

[ 159695 ]  info        : MP3 decode error -1 : INDATA_UNDERFLOW
[ 159695 ]  info        : audio file is corrupt --> send EOF
[ 159696 ]  info        : Closing audio file
1 „Gefällt mir“

Vielen Dank für den fix!!
Aber zurück zur Ursache. Irgendwas an der Datei sorgt ja dafür, dass sie zuverlässig falsch übertragen wird und etwas Inhalt verloren geht wenn der ESPuino das macht.
Wurde jetzt ja auch mehreren Systemen nachgestellt.
Dass mit dem direkt auf die SD schreiben ist ziemlich verrückt :smiley: .
Wenn der header „korrigiert“ wird klappt es ja wieder mit dem Webupload. FTP macht übrigens keinen Unterschied dabei…

Ich glaube nicht, dass es am SPI liegt. Verhält sich ja auch auf anderen Systemen so, dass bestimmte Dateien dieses Verhalten aufweisen…

Ich habe die ESPuino-mini 4Layer und die ist meines Wissen über SD_MMC angeschlossen. Bei mir ist der Fehler auch über den Webupload passiert. Daher würde ich SPI als Ursache auch ausschließen

Auch hier sd_mmc, bisher habe auch ich alle Dateien über das web interface hochgeladen und der Fehler tritt ziemlich häufig auf.

(Ich hab’s komischerweise noch nicht geschafft eine sd Karte so zu formatieren dass ich vom Rechner aus direkt was auf die Karte kopiere und der espuino das dann sieht… Der espuino scheint hier ausschließlich die Dateien zu sehen die mit dem web interface hochgeladen werden. FTP funktioniert hier auch gar nicht - aber das ist ein anderes Thema)

Der Bugfix funktioniert @Wolle !
Falls wir an der Ursache nicht weiterkommen, ist zumindest die Auswirkung behoben :wink:

Fehlerhafter Upload ist bislang nur für SD-Anbindung über SPI bekannt!
SD_MMC sollte fehlerfrei sein, scheint aber nach Euren Berichten nicht der Fall zu sein…

Ich habe seinerzeit den Webupload optimiert mit einen Ringpuffer, der möglichst große Chunks schreibt.
Am Ende des Uploads erscheint in der seriellen Ausgabe eine Meldung Bytes [ok] %zu / [not ok]
[not ok] muss natürlich 0 sein sonst ist die Datei fehlerhaft/unvollständig.

Der Upload wurde aber nicht abgebrochen?
Evt. können wir die Fehlerbehandlung verbessern ab hier?

So, ich kann diesen Song nicht mehr hören :slight_smile:

Das kann ich nicht bestätigen…ich bekomme immer die Gesamte Dateistruktur angezeigt

Es ist so wie @Wolle es beschrieben hat. Die Fehler entstehen scheinbar durch den Webupload.

Ich habe 6 Dateien einmal direkt auf die SD-Karte kopiert und einmal per Web.
Das Webinterface hat dies wie folgt Quittiert:

Wenn man die Dateien vergleicht kommt dies heraus (links ist per SD-Karte, links ist per Web):

Aber jetzt ist nur die erste Datei von dem Problem betroffen. Die VBR-Headerreparatur hat also doch keinen Einfluss.

Verrückt wird es jedoch, wenn man sich die Unterschiede einsieht.

  • Wie gesagt, von dem Zurückspringen ist nur die erste Datei betroffen, die 2. wird problemlos abgespielt und beendet
  • Bei der ersten Datei ist die Webübertragung um 549byte kleiner.
  • Bei der zweiten Datei ist die Webübertragung um 549byte größer.
  • Wenn man die Dateien auf Ascii-Ebene vergleicht, dann klemmt genau der Block von Datei 1 am Beginn der Datei 2

Wer es sich anschauen mag, hier die Dateien:
Test.zip (9,1 MB)

Man sieht auch im Terminal, dass er für die 2. Datei des Webuploads keine ID3-Infos findet (Wahrscheinlich weil die Datei nicht mehr mit ID3 beginnt)

[ 9149 ] RFID-Karte erkannt: (ISO-14443) ID: 04-5f-75-6a
[ 9152 ] RFID-Karte empfangen: 004095117106
[ 9185 ] Playlist-Generierung: cached
[ 9198 ] Freier Speicher: 86476
[ 9198 ] Anzahl gültiger Files/Webstreams: 6
[ 9198 ] Modus: Hoerspiel
[ 9207 ] Neue Playlist empfangen mit 6 Titel(n)
[ 9207 ] Free heap: : 87288
[ 9254 ] info : PSRAM found, inputBufferSize: 283615 bytes
[ 9254 ] info : buffers freed, free Heap: 87288 bytes
[ 9254 ] info : Reading file: „/Nochmal/Kapitel 10.2 Kapitel 11.1 Sonne Mond und Sterne (Wieso Weshalb Warum JUNIOR Folge 72)_1.mp3“
[ 9287 ] info : MP3Decoder has been initialized, free Heap: 63568 bytes
[ 9288 ] ‚/Nochmal/Kapitel 10.2 Kapitel 11.1 Sonne Mond und Sterne (Wieso Weshalb Warum JUNIOR Folge 72)_1.mp3‘ wird abgespielt (1 von 6)
[ 9317 ] info : Content-Length: 2408448
[ 9317 ] info : ID3 framesSize: 45
[ 9317 ] info : ID3 version: 2.4
[ 9339 ] info : ID3 normal frames
[ 9429 ] id3data : SettingsForEncoding: Lavf59.34.102
[ 9547 ] info : Audio-Length: 2408403
[ 9706 ] info : stream ready
[ 9708 ] info : syncword found at pos 0
[ 9717 ] info : Channels: 2
[ 9717 ] info : SampleRate: 48000
[ 9717 ] info : BitsPerSample: 16
[ 9717 ] info : BitRate: 64000
[ 9738 ] info : VBR recognized, audioFileDuration is estimated
[ 10046 ] Aktuelle Batteriespannung: 3.88 V
[ 10064 ] Aktuelle Batterieladung: 100.00 %
[ 31662 ] 30 Sekunden nach vorne gesprungen
[ 32043 ] info : stream ready
[ 34011 ] 30 Sekunden nach vorne gesprungen
[ 34389 ] info : stream ready
[ 36280 ] 30 Sekunden nach vorne gesprungen
[ 36663 ] info : stream ready
[ 36670 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 36673 ] info : syncword found at pos 376
[ 36677 ] info : syncword found at pos 0
[ 36680 ] info : MP3 decode error -8 : INVALID_SCALEFACT
[ 36684 ] info : syncword found at pos 236
[ 36688 ] info : syncword found at pos 0
[ 36702 ] info : Channels: 2
[ 36702 ] info : SampleRate: 48000
[ 36702 ] info : BitsPerSample: 16
[ 36702 ] info : BitRate: 128000
[ 38782 ] 30 Sekunden nach vorne gesprungen
[ 39160 ] info : stream ready
[ 43891 ] ws[/ws][1] connect
[ 44138 ] no cover image for SD-card audio
[ 60003 ] RSSI: -56 dBm
[ 72316 ] Neue Lautstärke empfangen via Queue: 2
[ 73180 ] Neue Lautstärke empfangen via Queue: 1
[ 74013 ] Neue Lautstärke empfangen via Queue: 2
[ 74260 ] Neue Lautstärke empfangen via Queue: 3
[ 75291 ] Neue Lautstärke empfangen via Queue: 4
[ 75505 ] Neue Lautstärke empfangen via Queue: 5
[ 75771 ] Neue Lautstärke empfangen via Queue: 6
[ 87094 ] info : MP3 decode error -1 : INDATA_UNDERFLOW
[ 87098 ] info : syncword found at pos 93
[ 87101 ] info : syncword found at pos 0
[ 87104 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 87106 ] info : syncword found at pos 176
[ 87111 ] info : syncword found at pos 0
[ 87116 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 87122 ] info : syncword found at pos 93
[ 87126 ] info : syncword found at pos 0
[ 87130 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 87136 ] info : syncword found at pos 1
[ 87141 ] info : syncword found at pos 0
[ 87145 ] info : MP3 decode error -8 : INVALID_SCALEFACT
[ 87151 ] info : syncword found at pos 213
[ 87155 ] info : syncword found at pos 0
[ 87168 ] info : Channels: 2
[ 87169 ] info : SampleRate: 48000
[ 87169 ] info : BitsPerSample: 16
[ 87169 ] info : BitRate: 224000
[ 101279 ] Kontroll-Kommando empfangen via Queue: 4
[ 101279 ] Schreibe ‚#/Nochmal#0#3#1‘ in NVS für RFID-Card-ID 004095117106 mit Abspielmodus 3 und letzter Track 1
[ 101283 ] #/Nochmal#0#3#1
[ 101287 ] Titel wird im Hörspielmodus von vorne gespielt.
[ 101290 ] Kommando: Nächster Titel
[ 101294 ] info : Closing audio file
[ 101308 ] info : buffers freed, free Heap: 85960 bytes
[ 101308 ] info : Reading file: „/Nochmal/Kapitel 10.2 Kapitel 11.1 Sonne Mond und Sterne (Wieso Weshalb Warum JUNIOR Folge 72)_2.mp3“
[ 101340 ] info : MP3Decoder has been initialized, free Heap: 62248 bytes
[ 101347 ] ‚/Nochmal/Kapitel 10.2 Kapitel 11.1 Sonne Mond und Sterne (Wieso Weshalb Warum JUNIOR Folge 72)_2.mp3‘ wird abgespielt (2 von 6)
[ 101370 ] info : Content-Length: 2411037
[ 101370 ] info : file has no mp3 tag, skip metadata
[ 101371 ] info : Audio-Length: 2411037
[ 101432 ] no cover image for SD-card audio
[ 101737 ] info : stream ready
[ 101740 ] info : syncword found at pos 69
[ 101744 ] info : syncword found at pos 0
[ 101764 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 101767 ] info : syncword found at pos 1534
[ 101772 ] info : syncword found at pos 0
[ 101780 ] info : Channels: 2
[ 101780 ] info : SampleRate: 48000
[ 101780 ] info : BitsPerSample: 16
[ 101780 ] info : BitRate: 64000
[ 101801 ] info : VBR recognized, audioFileDuration is estimated
[ 120005 ] RSSI: -57 dBm
[ 127320 ] 30 Sekunden nach vorne gesprungen
[ 127701 ] info : stream ready
[ 129380 ] 30 Sekunden nach vorne gesprungen
[ 129756 ] info : stream ready
[ 131679 ] 30 Sekunden nach vorne gesprungen
[ 132063 ] info : stream ready
[ 132066 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 132069 ] info : syncword found at pos 0
[ 132072 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 132076 ] info : syncword found at pos 0
[ 132080 ] info : MP3 decode error -6 : INVALID_FRAMEHEADER
[ 132086 ] info : syncword found at pos 18
[ 132090 ] info : syncword found at pos 0
[ 132106 ] info : Channels: 2
[ 132106 ] info : SampleRate: 48000
[ 132106 ] info : BitsPerSample: 16
[ 132106 ] info : BitRate: 320000
[ 133731 ] 30 Sekunden nach vorne gesprungen
[ 134108 ] info : stream ready
[ 178468 ] info : Closing audio file
[ 178468 ] info : End of file „/Nochmal/Kapitel 10.2 Kapitel 11.1 Sonne Mond und Sterne (Wieso Weshalb Warum JUNIOR Folge 72)_2.mp3“
[ 178474 ] eof_mp3 : /Nochmal/Kapitel 10.2 Kapitel 11.1 Sonne Mond und Sterne (Wieso Weshalb Warum JUNIOR Folge 72)_2.mp3
[ 178485 ] Schreibe ‚#/Nochmal#0#3#2‘ in NVS für RFID-Card-ID 004095117106 mit Abspielmodus 3 und letzter Track 2
[ 178495 ] #/Nochmal#0#3#2
[ 178509 ] info : buffers freed, free Heap: 85944 bytes
[ 178509 ] info : Reading file: „/Nochmal/Kapitel 10.2 Kapitel 11.1 Sonne Mond und Sterne (Wieso Weshalb Warum JUNIOR Folge 72)_3.mp3“
[ 178539 ] info : MP3Decoder has been initialized, free Heap: 62228 bytes
[ 178546 ] ‚/Nochmal/Kapitel 10.2 Kapitel 11.1 Sonne Mond und Sterne (Wieso Weshalb Warum JUNIOR Folge 72)_3.mp3‘ wird abgespielt (3 von 6)
[ 178569 ] info : Content-Length: 2408997
[ 178569 ] info : ID3 framesSize: 45
[ 178570 ] info : ID3 version: 2.4
[ 178592 ] info : ID3 normal frames
[ 178678 ] id3data : SettingsForEncoding: Lavf59.34.102
[ 178798 ] info : Audio-Length: 2408952
[ 178815 ] no cover image for SD-card audio
[ 178965 ] info : stream ready
[ 178969 ] info : syncword found at pos 0
[ 178977 ] info : Channels: 2
[ 178977 ] info : SampleRate: 48000
[ 178977 ] info : BitsPerSample: 16
[ 178977 ] info : BitRate: 64000
[ 178998 ] info : VBR recognized, audioFileDuration is estimated

1 „Gefällt mir“

Rückfrage an @mzanetti , @joker , @Joe91 und alle die dies Problem haben:

  • Verwendet Ihr den aktuellen Master oder Arduino 2? Letztere Version ist experimentell & hat zumindest Probleme mit schwankenden Uploadraten und hier evt. auch Paketverlust

  • Macht Ihr einen Mehrdateiupload oder jeweils nur eine Datei zur Zeit?

  • Seht Ihr nach dem Upload in der seriellen Ausgabe etwas mit [nok] > 0? Das sind dann fehlerhafte Chunks. Dieser Log wurde ursprünglich für Probleme bei SPI eingebaut.

Die Dateien werden anscheinend fehlerhaft hochgeladen und liegen beschädigt auf der SD, da kann dann die Audio-Bibliothek auch nicht mehr viel retten außer nicht abzustürzen oder hängenzubleiben…

Ich habe auf jeden Fall schon gesehen das es keine Fehlerbehandlung gibt wenn Chunks [nok] = not OK sind. Aus meiner Sicht sollte dann die bereits (halb) geschriebene Datei gelöscht werden und ein Fehler genauso wie jetzt bei Timeout dem Anwender angezeigt werden.

Passiert auf Arduino 1 und 2.
Hatte sowohl mehrere Dateien über FTP aufgespielt als auch anschließend einzelnen die betroffenen Dateien nochmal ausgetauscht. Das hat alles kein Unterschied gemacht.
Ich würde so weit gehen zu behaupten, dass das auf jeden System mit den passenden Dateien reproduzierbar ist wenn man den fix von @Wolle wieder rückgängig macht.

Die spannende Sache daran finde ich, dass das Verhalten an der Datei haftet und nicht zufällig sondern reproduzierbar auftritt…

@joker ich kann dir morgen auch noch weitere Dateien mit diesem Problem besorgen. Das ist schon eine besonders heftige zum wiederholt anhören :smiley:

Geht das Schreiben auf die SD-Karte eventuell auf den Header und nicht auf die Roh-Datei?
Falls dort der Fehler liegt?

Der HTTP Datei-Upload wird vom verwendeten ESPAsyncWebserver behandelt und ist hier beschrieben.

Die Datei wird in Chunks gesendet, diese werden nach und nach in die SD-Datei geschrieben. Bei „final“ wird die Datei dann geschlossen. Den Upload-Code findet Ihr ab hier.

Aus Gründen der Upload-Performance wird ein eigener Schreib-Task erzeugt der über einen Ringpuffer die Chunks entgegennimmt und auf SD-Karte schreibt.

Wenn jetzt so ein Chunk fehlt ist die Datei unvollständig. Also hat jemand im Log dann [NOK] > 0?

Werde ich mir anschauen. Komme allerdings erst morgen Abend wieder an den PC. Wünsche euch eine gute Nacht zusammen!

Ich habe den master von vor 2 Wochen mit den Fix zu Multibutton und Shutdown-Animation.

Der Fehler ist sowohl bei Einzeldateien, als auch bei Ordnern aufgetreten.

Ich habe jetzt die Dateien 10 mal hochgeladen (10 mal nacheinander den Ordner Nochmal in einen neuen Testdurchlauf-Ordner gekippt)
Das Ergebnis:


Durchlauf 7,8 und 9 waren fehlerfrei

Die Fehlenden Daten aus Testdurchlauf 4 (letzte Datei) lad dann in der ersten Datei von 5

Die Terminalausgabe habe ich mal in eine Textdatei gepackt. [nok]>0 gibt es nicht - seltsamer Weise habe ich nur 59 [nok] - ich sehe gerade, irgendwie hat das Terminal gleich beim ersten Durchlauf zwischen Datei 1 und 2 daten verloren
Terminal.txt (33,7 KB)