FLAC-Metadatenblock STREAMINFO

folgende Informationen stammen aus: https://xiph.org/flac/format.html#metadata_block_streaminfo

Aufbau:
BitsBytesInhalt
<16>  2minimale Blockgröße (in samples)
<16>  2maximale Blockgröße (in samples)
<24>  3minimale Framegröße (in Bytes)
<24>  3maximale Framegröße (in Bytes)
<20>  8 Samplerate in Hz (das ganze 11. und 12. Byte und die ersten 4 Bits vom 13. Byte)
<3>Anzahl der Kanäle (bit3, bit2 und bit1 vom 13. Byte)
<5>Bits pro sample (bit0 vom 13. Byte und die höherwertigen 4 bits vom 14. Byte)
<36>Anzahl aller samples in der Datei (die 4 niederwertigen Bits vom 14. Byte und weitere 4 Bytes)
<128> 16MD5-Signatur der Audiodatei. (zur Fehlererkennung)

STREAMINFO besteht also immer aus 34 Bytes!

In diesem Block gibt es 2 Angaben, mit deren Hilfe man die Spieldauer bestimmen kann. Aus der GesamtSampleAnzahl G und der SampeRate S kann man die Spieldauer in Sekunden bestimmen: G / S

An dem eingangs beschriebenen Beispiel möchte ich dies veranschaulichen:

00   -- 102   076   097   067   000   000   000   034   016   000
10   -- 016   000   000   000   014   000   029   007   010   196
20   -- 066  
240   000   109   140   216   146   175   002   137
30   -- 189   140   244   218   061   178   151   168   152   117
40   -- 159   025   003   000   001   050   000   000   000   000
50   -- 000   000   000   000   000   000   000   000   000   000

Der 1. Header lautet:   0   0   0   34   --> (siehe FLAC-Startseite) Typ: STREAMINFO mit 34 Bytes

Die Samplerate steckt in den Bytewerten 10 (alle 8 Bits), 196 (alle 8 Bits) und die höherwertigen 4 Bits vom Wert 66:
Die 3 Werte dual und in Folge:     0000 1010   1100 0100   0100 0010
Die Samplerate S steckt in den ersten 20 Bits:     0000 1010  ; 1100 0100   0100
S = 10·4096 + 196·16 + 4 = 44100


Die GesamtSampleAnzahl G in Bytes erhält man aus den niederwertigen 4 Bits von 240 und allen Bits der Werte 000, 109, 140 und 216
240 also Dualzahl geschrieben: 1111 0000   ... die 4 niederwertigen Bits sind 0000 und das ergibt 0
Hochzahlen schreibe ich mit: ^ ... 2 hoch 3 = 2^3
G = 0·256^4 + 0·256^3 + 109·256^2 + 140·256 + 216 = 7179480 ... etwa 7,2 MB

Die Spieldauer in Sekunden ist also 7179480 / 44100 = 162,8 ... 2 Minuten 42,8 Sekunden.

zurück zur FLAC-Startseite