Prüfsumme nach Umwandlung "WAV->Flac und zurück" fehlerhaft

Begonnen von josepadilla, 17. November 2013, 17:15:26

Vorheriges Thema - Nächstes Thema

josepadilla

Ich habe folgende Unklarheit: Ich habe von jeder flac-Datei zusätzlich md5-Prüfsummen im jeweiligen Ordner liegen.

Nachdem ich eine Audio-Datei im wav-Format heute heruntergeladen habe, hatte ich spasseshalber davon ebenfalls eine md5-Prüfsumme erstellt und anschließend mit Foobar in das Flac-Format umgewandelt. Danach habe ich mit dem "Helium Music Manager" die flac-Datei wieder in das wav-Format umgewandelt. In froher Erwartung dachte ich, daß die Prüfsumme nun wieder stimmen müßte, da diese auch von der ursprünglichen wav-Datei erstellt wurde. Sie stimmt aber nicht.

Dieses Prozedere habe ich noch mehrmals in verschiedenen Varianten gemacht, z.B. Hin- und Rückwandlung nur mit Foobar oder nur mit Helium Music Manager, wobei ich seltsamerweise manchmal ein richtiges Prüfsummenergebnis bekomme und manchmal nicht.

Ich bekomme einfach den Fehler nicht heraus. Daß ich aus Versehen die Prüfsumme von der flac-Datei statt der wav-Datei erstellt habe, habe ich schon ausgeschlossen.

Weiß evtl. jemand, wo der Fehler liegen könnte? Ich kann mir nicht vorstellen, daß man für das Hin- und Herwandeln die gleiche Software braucht, da ich bei ausschließlicher Nutzung einer Software eher fehlerfreie Prüfsummen hatte, aber auch nicht immer.

grimes

Was sagt denn der File Integrity Verifier zu den korrumpierten Files?

Kontextmenü | Utilities | Verify Integrity

josepadilla

....der sagt, daß die Datei o.k. ist (ich habe umgekehrt eine flac in Helium in wav umgewandelt und in foobar wieder in flac).

Ich habe bis heute übersehen, daß in den flac-Dateien bereits eine md5-Prüfsumme enthalten sein soll. Könnte ich mir damit eigentlich nicht das lästige zusätzliche Erstellen von md5-Prüfsummen ersparen, die auch noch jedesmal neu erstellt werden müssen, wenn z.B. nur ein Tag-Feld geändert wird.

Allerdings frage ich mich, warum diese Verify-Integrity-Funktion auch bei wav-Stücken funktioniert, wo eigentlich keine Prüfsumme enthalten sein dürfte. Foobar zeigt mir hier auch eine md5- und eine CRC32-Prüfsumme an.

Unabhängig davon bin ich aber bei o.g. Problem nicht weitergekommen. Die zusätzliche md5-Prüfsumme müßte so oder so auch stimmen, was aber nicht der Fall ist.

grimes

Zitat von: josepadilla in 18. November 2013, 00:45:06
Ich habe bis heute übersehen, daß in den flac-Dateien bereits eine md5-Prüfsumme enthalten sein soll. Könnte ich mir damit eigentlich nicht das lästige zusätzliche Erstellen von md5-Prüfsummen ersparen, die auch noch jedesmal neu erstellt werden müssen, wenn z.B. nur ein Tag-Feld geändert wird.
Die in flac enthaltene Audio MD5 ist unter Properties | Properties zu sehen. Soweit ich weiss, handelt es sich nicht etwa um die MD5 der flac Datei sondern un die der ursprünglichen wav Datei.

Zitat von: josepadilla in 18. November 2013, 00:45:06
Allerdings frage ich mich, warum diese Verify-Integrity-Funktion auch bei wav-Stücken funktioniert, wo eigentlich keine Prüfsumme enthalten sein dürfte. Foobar zeigt mir hier auch eine md5- und eine CRC32-Prüfsumme an.
Warum Verify Integrity bei wav Dateien funktioniert, kann ich nicht sagen. Ich vermute, dass es neben der Prüfsumme auch noch andere Prüfkriterien gibt.

fbuser

Zitat von: josepadilla in 18. November 2013, 00:45:06Allerdings frage ich mich, warum diese Verify-Integrity-Funktion auch bei wav-Stücken funktioniert, wo eigentlich keine Prüfsumme enthalten sein dürfte. Foobar zeigt mir hier auch eine md5- und eine CRC32-Prüfsumme an.
Es werden keine Prüfsummen angezeigt, die in der jeweiligen Datei enthalten sind, sondern Prüfsummen, die auf Basis der reinen Audio-Daten (ohne Metadaten) errechnet werden. Bei der Umwandlung von einem verlustlosen Format in ein anderes ändern sich diese Prüfsummen auch nicht. Daher wäre es auch sinnvoller, wenn du für deine Vergleiche die so ermittelten Prüfsummen verwenden würdest. Die von dir festgestellten Differenzen dürften von unterschiedlichen Headerinformationen in Quell- und Zieldatei herrühren.

grimes

#5
Ich habe mal nach WAV und Header gegoogelt.

In WAV Dateien gibt es nur einen sogenannten Format Chunk. Dieser enthält lediglich Informationen wie Abtastrate etc. Alle diese Informationen sollten sich nicht ändern durch Enkodieren in FLAC und anschließendes Dekodieren in WAV.

EDIT: Oh, es gibt etliche Datenformate für WAV neben PCM. Möglicherweise verwendet der Helium player ein anderes Format.

josepadilla

Danke für Eure Antworten.

Also macht das Erstellen von zusätzlichen md5-Prüfsummen bei Flac-Dateien keinen Sinn, wenn ich zumindest die reinen Audio-Daten z.B. mit der Verify-Integry-Funktion von Foobar überprüfen kann??

Und die o.g. fehlerhafte Prüfsumme ergibt sich wohl aufgrund verschiedener WAV-Unterformate, die in verschiedener Software genutzt werden?

grimes

Zitat von: josepadilla in 18. November 2013, 19:25:55
Also macht das Erstellen von zusätzlichen md5-Prüfsummen bei Flac-Dateien keinen Sinn, wenn ich zumindest die reinen Audio-Daten z.B. mit der Verify-Integry-Funktion von Foobar überprüfen kann??

Ja.

Zitat von: josepadilla in 18. November 2013, 19:25:55
Und die o.g. fehlerhafte Prüfsumme ergibt sich wohl aufgrund verschiedener WAV-Unterformate, die in verschiedener Software genutzt werden?

WAV ist der Container. PCM meist das Datenformat. Überprüfen kann man das unter Properties | Properties | Codec: PCM

josepadilla

#8
Ich habe mal von der Flac-Datei bei Foobar unter Properties geschaut und die Tabelle hierher kopiert. Darunter noch die mit Foobar und mit Helium umgewandelte WAV-Datei.

Bei den WAV-Dateien fällt mir auf, daß sich die Größe bei beiden um ein paar 100 Bytes unterscheidet. Normalerweise müßte das doch 100%ig identisch sein?!

Ich habe vorher die Original-Datei bei musicload im wav-Format heruntergeladen und dann mit Foobar in Flac umgewandelt. Nachdem ich das ganze nochmal in Helium gemacht habe, ergibt sich auch beim Umwandeln in Flac bei beiden Dateien eine unterschiedliche Größe bei gleicher Komprimierungsrate (5).


Flac-Datei:
File name : If I Could Be U.flac
Folder name : C:\Users\holger\Desktop\Claes Rosen Test
File path : C:\Users\holger\Desktop\Claes Rosen Test\If I Could Be U.flac
Subsong index : 0
File size : 43.1 MB (45 259 790 bytes)
Last modified : 2013-11-18 00:20:42
Duration : 6:01.378 (15 936 769 samples)
Sample rate : 44100 Hz
Channels : 2
Bits per sample : 16
Bitrate : 1002 kbps
Codec : FLAC
Encoding : lossless
Tool : reference libFLAC 1.2.1 20070917
Embedded cuesheet : no
Audio MD5 : 4A965DC3401195EA4B2E81BABC861DC0
----------------------------------------------------
WAV aus Foobar:
File name : If I Could Be U.wav
Folder name : C:\Users\holger\Desktop\Claes Rosen Test
File path : C:\Users\holger\Desktop\Claes Rosen Test\If I Could Be U.wav
Subsong index : 0
File size : 60.7 MB (63 747 725 bytes)
Last modified : 2013-11-19 01:00:20
Duration : 6:01.378 (15 936 769 samples)
Sample rate : 44100 Hz
Channels : 2
Bits per sample : 16
Bitrate : 1411 kbps
Codec : PCM
Encoding : lossless
---------------------------------------------------------
WAV aus Helium-Music-Manager:
File name : If I Could Be U.wav
Folder name : C:\Users\holger\Desktop\Claes Rosen Test
File path : C:\Users\holger\Desktop\Claes Rosen Test\If I Could Be U.wav
Subsong index : 0
File size : 60.7 MB (63 747 328 bytes)
Last modified : 2013-11-19 01:03:45
Duration : 6:01.378 (15 936 769 samples)
Sample rate : 44100 Hz
Channels : 2
Bits per sample : 16
Bitrate : 1411 kbps
Codec : PCM
Encoding : lossless

Frank Bicking

Der Größenunterschied lässt sich leicht mit den Tags erklären, die seit v1.1.9 in WAV-Dateien geschrieben werden können. Der eigentliche Audioanteil ist ja gleich lang (siehe Duration) und lässt sich mit foo_bitcompare vergleichen.

josepadilla


josepadilla

...ich wollte nochmal auf die "Verify Integrity"-Funktion zurückkommen: Ich hatte an anderer Stelle folgenden Link dazu gefunden:
http://www.foobar2000.org/components/view/foo_verifier

Soweit ich es mit meinen Englisch-Kenntnissen richtig verstehe, wird wohl eine 100%ige Korrektheit bei flac-files nicht gewährleistet trotz fehlerfreier Prüfergebnisse mit der Verify-Integrity-Funktion, da nur ein Abbruch der Dekodierung damit festgestellt werden kann.

Welche anderen Fehlermöglichkeiten gibt es denn noch und werden diese dann wirklich nicht erkannt?

Sollte man ansonsten Software wie den Flac-Tester verwenden, von dem ich mehrmals gelesen habe?

fooamp

Solange foobar2000 nach dem Encodierprozess "No problems occured" ausgibt, kannst Du beruhigt schlafen.

josepadilla

...bis in den Schlaf verfolgt mich das Gottseidank noch nicht))

Ich hatte bei einigen Flacs aber Fehlermeldungen erhalten, nachdem ich heute nach dem Umkopieren auf eine andere Festplatte alles mit der Verify-Integrity-Funktion geprüft hatte. Es handelte sich bei allen Dateien um Downloads aus dem Internet, die auch auf der Quell-Festplatte bereits den gleichen Fehler hatten, als ich diese nochmal auf die betreffenden flacs überprüft hatte.

Bei einem Teil sind auch Aussetzer bis hin zum Wiedergabeabbruch hörbar.

Bei 2 Stücken bekomme ich eine Fehlermeldung angezeigt, mit der ich nicht viel anfangen kann. Dort wird mir eine Spielzeit angezeigt, wo sich der betreffende Fehler befinden soll, was aber kurz vor dem Titelende ist. Beim Anhören kann ich keinen Fehler bemerken, aber vermutlich ist ein Fehler vorhanden, der nicht unbedingt hörbar ist??!

Das sind die zwei betreffenden flacs:
Item: "H:\Eigene Musik\Helium - eingelesene CDs\Einzelne Musikstücke\Einzelne Musikstücke G\Jean Claude Gavri\Breakdancin' (Jean Claude Gavri Re-Edit).flac"
MD5: 6A7D325BF06648EB86D37C29460B6923
CRC32: 9A0DEEF2
Warning: Reported length is inaccurate : 5:09.879683 vs 5:09.786803 decoded
Error: Corrupted FLAC stream
Error: MD5 mismatch

Item: "H:\Eigene Musik\Helium - eingelesene CDs\Einzelne Musikstücke\Einzelne Musikstücke G\Jean Claude Gavri\Dare Me.flac"
MD5: C17567BF27686D0EB1679516C9521E1E
CRC32: 9B820690
Warning: Reported length is inaccurate : 5:49.760952 vs 5:49.668073 decoded
Error: Corrupted FLAC stream
Error: MD5 mismatch


Ich weiß nicht genau, was mir "Reported Length is inaccurate" sagen soll?