Probleme mit mp3 Dateien

Ich habe mal bisschen in der Audio.cpp gesucht und dort folgendes in der Funktion „sendBytes“ in Zeile 3180 angepasst:

	 if((ret == -1) || (bytesDecoded == 0 && ret == 0)){ // unlikely framesize

Ich habe ehrlicherweise keine Ahnung was für Auswirkungen das sonst so hat, in meinem Fall löst es aber das Problem und die Meldung sieht entsprechend so in der Konsole aus:

[ 60545 ]  info        : framesize is 0, start decoding again
[ 60546 ]  info        : Closing audio file
[ 60546 ]  info        : End of file "NAME_OF_FILE.mp3"
[ 60557 ]  eof_mp3     : NAME_OF_FILE.mp3

@Wolle ist das in Ordnung oder wie beurteilst du diese Änderung?

1 „Gefällt mir“

Ich habe mit deiner Datei etwas rumprobiert.
Für Linux gibt es ein Programm namens MP3Check - leider habe ich ein defektes Paket auf meinem Linuxrechner und kann da gerade nix installieren (anderes Thema).
Ich habe dann Foobar2000 auf Windows installiert. Dort kann man „Verify integrity“ auf Dateien anwenden. Da wird gesagt, die Datei ist in Ordnung. Es gibt aber noch einen weiteren Punkt „Fix VBR MP3 header“. Die damit bearbeitete Datei funktioniert.
Meistens sollen Probleme am ID3-Tag liegen aber der ist bei dir gar nicht ausgefüllt.
musicfile_fix.zip (2,3 MB)

1 „Gefällt mir“

Vielen Dank für deine Antwort! Das ist ja spannend :slight_smile: .
Wenn die Datei ansich in Ordnung ist, dann sollte der Espuino sie auch spielen können.
Ich habe eigentlich auch viele weitere Dateien ohne ID3-Tags die ohne Probleme funktionierne. Also ist vermutlich doch ein header defekt, auch wenn die Datei „in Ordnung“ ist?

Edit: im Hexeditor sieht man als Diff wirklich nur Änderungen am Anfang der Datei. Für mich macht das irgendwie kein Sinn, dass es dann am Ende abbricht…

Ich Stocher auch bloß im dunkeln.
Es hat sich tatsächlich bloß der Header geändert.
These (ohne, dass ich genau weiß was alles im Header steht), wenn dort eine fehlerhafte Liedlänge steht, dann verhaspelt sich der ESPUINO eventuell ???

Ist vielleicht nur ein Problem bei VBR

Klingt plausibel, jetzt müssen wir nur noch herausfinden was der inhaltliche Unterschied des headers bedeutet und und dann überlegen, ob der Espuino das auch „fehlerhaft“ abspielen können soll und wenn ja, wie am besten der Workaround dafür aussieht :slight_smile: .
Für heute muss ich mich aber verabschieden. Wünsche noch einen schönen Abend!

Ich vermute, dass wir da vom gleichen Problem reden, wie auch hier: Slow Stream - #2 von Wolle.
Weil ich habe vorhin, als diese Probleme wieder auftraten, nochmal genauer geschaut und bin dann auch auf dieses „INVALID FRAMEHEADER“ gestoßen. Die Art, wie sich das jetzt genau anhört, hat sich in letzter Zeit (subjektiver Eindruck) auch irgendwie geändert.

Das ist irgendwie elend
Ich habe jetzt noch EncSpot Pro v2.2 installiert.
Da bekommt man ein Haufen Werte angezeigt. Die sind bei beiden Dateien identisch. Außer „Total Bitstream Bytes“ im „Lame Header“.
Gefixt:
fix
Original:
original

Was das bedeutet weiß ich aber auch nicht. Ich muss jetzt ins Bett

1 „Gefällt mir“

Kommt bei dem slow -stream die header-Meldung als erstes oder als Folgefehler?
Im Fall der Datei ist der header erst der Folgefehler von dem Underrun Fehler.
Das würde auch zu den unterschiedlichen Längenangaben passen.

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: