Skript für Umwandlung WAV nach FLAC plus Rückumwandlung und Prüfung möglich?

Begonnen von John22, 20. März 2016, 23:24:34

Vorheriges Thema - Nächstes Thema

John22

Gibt es die Möglichkeit ein Skript zu erstellen, das eine WAV-Datei in eine FLAC-Datei umwandelt und die wieder in eine WAV-Datei rückumwandelt und das Ergebnis mit der WAV-Ursprungsdatei vergleicht, ob wirklich keine Differenzen zwischen den beiden Dateien besteht. Bei einigen Dateien möchte ich selbst überprüfen ob die Umwandlung in FLAC wirklich verlustfrei ist.

grimes

Mit (rechtsklick track) | Utilities | Verify Integrity erhältst Du eine MD5. Sind die MD5-Werte von FLAC und WAV identisch, so war die Umwandlung fehler- und verlustfrei. Dies funktioniert u.a., weil der Header der Audiodateien nicht berücksichtigt wird.
Fürs Rippen von CDs: Sicherer ist ein Vergleich mit den Einträgen der AccurateRip Datenbank. Dies funktioniert "per album".

John22

Ich komme jetzt endlich dazu mich wieder um dies Thema zu kümmern. Daher habe ich eine WAV-Datei
La Recessione-Wav.wav
mit Foobar2000 und dem Programm "Flac.exe" aus dem "Free_Encoder_Pack_2015-10-24.exe" umgewandelt (Level weiß ich nicht) in
La Recessione-Foo.flac (19.825.777 Bytes)
und dies auch mit dem "FLAC frontend-NET40.exe" und mit "Flac.exe" 1.3.1 vom 27.11.2014 mit Level 5 umgewandelt (war voreingestellt) in
La Recessione-End.flac (19.826.213 Bytes)

Jetzt stellt sich mir aber die Frage warum sich die beiden Dateien in der Größe unterscheiden, aber andererseits beim Test mit Verify Integrity identische MD5-Werte haben. Das kann ich mir nicht erklären. Siehe die beiden Bilder.




TomPro

Weil der MD-5 Wert sich aus den "linearen" (also rückgewandelten, genau das was Du ja händisch per Script machen wolltest) Audiobytes berechnet und diese bleiben gleich bei einem Verlustlosen Comprimierer.

John22

Das verstehe ich jetzt. Aber warum ist die Dateilänge der beiden Flac-Daten unterschiedlich, d.h. die mit Foobar2000 erstellte Datei ist 436 Bytes kleiner. Im Kopfsatz beider Dateien steht Version 1.3.1 und Datum 20141125. In beiden Programmen ist Level 5 (habe ich jetzt für Foobar2000 im Convert-Fenster gefunden) eingestellt. Wenn ich die Dateien mit Winmerge vergleiche, dann ist nur der Kopfsatz unterschiedlich lang. Die Musikdaten scheinen in beiden Dateien identisch zu sein.

Daher die Frage ob es verschiedene Arten von Flac gibt und ob alle verschiedenen Flac-Formate auch von allen mobilen Musik-Playern abgespielt werden. Ich möchte mir nicht die Mühe machen alles zu konvertieren und anschliessend feststellen das der Player dies nicht abspielt.

Nachtrag: ich habe mal mit einem Hexeditor aus beiden Flac-Dateien den Kopfteil entfernt und danach gab es wie erwartet und wie der MD5-Vergleich schon zeigte keine Unterschiede. Gibt es irgendwo eine Beschreibung, die auch für Laien verständlich ist, wie groß der Kopfsatz werden kann und was an welcher Stelle gespeichert wird. Ich habe zwar das folgende gefunden, aber was wo genau im Datensatz steht, wird nicht erwähnt: https://xiph.org/flac/format.html

grimes

Wahrscheinlich gibt es Unterschiede beim Block vorbis_comment (unterschiedliche Tags). Die Unterschiede können mit Properties | Properties oder Properties | Metadata ausgelesen werden.

John22

In den Properties habe ich nichts gefunden. Nach durchlesen der Webseite zum Flac-Format (3 : SEEKTABLE) tippe ich eher darauf das "FLAC frontend-NET40.exe" mit "Flac.exe" 1.3.1 vom 27.11.2014 eine Seektable mit Seekpoints einfügt und Foobar2000 das nicht macht. Die beiden Flac-Dateien trennen sich als das Frontend Nummer "03" (Seektable) setzt während Foobar2000 schon "04" (Vorbis_comment) setzt. Ich habe unten im Bild den kompletten Inhalt von Nummer "03" hexadezimal dargestellt bis Nummer "04" (rot eingekreist) beginnt. Da in Nummer "03" wiederum vieles auf 18 Byte große Blöcke hinausläuft tippe ich auf Seektable. Darunter habe ich nochmal die erste Differenz der beiden Flac-Dateien dargestellt. Nachtrag: wenn ich im Frontend den Parameter "--no-seektable" setze dann sind die Flac-Dateien vom Frontend und Foobar2000 identisch. Jetzt muss ich nur noch überlegen ob die Seektable sinnvoll ist oder nicht.


grimes

Ich habe keine signifikanten Verzögerungen beim Seeken von FLAC-Dateien ohne seektable (mit foobar2000 erzeugt) in foobar2000 feststellen können. Vielleicht bei sehr großen Dateien? Na ja, die seektable nimmt nicht viel Platz ein und bringt eventuell was. Ich lasse alle FLACs so wie sie sind, ob mit oder ohne seektable.

John22

Ich habe in dem Covert-Dialog im Setup (über ... erreicht) keine Möglichkeit gefunden Flac-Parameter mitzugeben, z.B.
-S 10s
für die Ausgabe der Standard-Seektable. Ist das so oder habe ich es übersehen.

grimes

Ich habs nicht ausprobiert, aber:
... | Output format | FLAC | Edit | Encoder: Custom | Parameter

(Ich hoffe, Du steigst noch durch) :P

John22

Vielen Dank für deinen Tipp. Die Parameter-Zeile sieht jetzt unter Custom so aus:
-s -S 10s --ignore-chunk-sizes -5 - -o %d
d.h. ich habe nur "-S 10s" (bzw. die Alternative "--seekpoint=10s") hinter "-s" (Silent) eingefügt. Sonst alles unverändert gelassen. Was mich nur wundert was das allein stehende "-" bewirken soll.

All meine Versuche haben aber trotzdem keine Seektable eingefügt.

grimes

Ich glaube das hängt irgendwie mit dem pipe mode zusammen ("-"). Ist zulange her, kann mich nicht mehr erinnern. Es geht nicht mit foobar2000.

John22

Ich kann wohl auf die Seektable auch verzichten. Ich habe jetzt einige Flac-Songs gekauft. Einige davon sind mit Seektable und andere nicht. Merkwürdigerweise benutzen alle eine alte Flac-Version 1.2.1 aus 2007 obwohl viele der Songs erst kürzlich veröffentlicht wurden.