Frage

Benötigen Sie Hilfe bei den HEX -Editor- und Audio -Dateien. Ich habe Probleme, die Formel herauszufinden, um die Anzahl der Beispiele in meinen .wav -Dateien zu erhalten.

Ich habe Stripwav heruntergeladen, was mir die Anzahl der Beispiele in den .wellen mitteilt, aber die Formel immer noch nicht herausfinden kann.

Können Sie bitte diese beiden .wavs herunterladen, sie in einem Hex -Editor öffnen und mir die Formel sagen, um die Anzahl der Beispiele zu erhalten?

Wenn Sie dies so freundlich für mich tun, sagen Sie mir die Anzahl der Beispiele für jedes .wav, damit ich sicherstellen kann, dass die Formel korrekt ist.

http://sinewavemultimedia.com/1wav.wavhttp://sinewavemultimedia.com/2wav.wav

Hier ist ein Problem, das ich zwei Programme habe,

Einer liest die WAV -Daten und der andere zeigt die Numsamples hier sind die Daten

RIFF 'WAVE' (wave file)
        <fmt > (format description)
                PCM format
                2 channel
                44100 frames per sec
                176400 bytes per sec
                4 bytes per frame
                16 bits per sample
        <data> (waveform data - 92252 bytes)

Das andere Programm besagt jedoch, dass Numsamples ist

23,063 samples

/*******AKTUALISIEREN*********/ Eine weitere Sache, die ich mit 2 Dateien berechnet habe, ist korrekt

92,296 bytes and num samples is 23,063` 

Aber dieser andere kommt nicht richtig heraus, es sind über 2 Megs, die ich nur 44 Bytes unterteilt habe und ich es hier falsch mache? Hier ist die Dateigröße

2,473,696 bytes 

Aber die richtigen Zahlen sind

 617,400
War es hilfreich?

Lösung

Es gibt keine einfache Formel, um die Anzahl der Stichproben in einer WAV -Datei zu bestimmen. Eine sogenannte "kanonische" WAV-Datei besteht aus einem 44-Byte-Header, gefolgt von den tatsächlichen Beispieldaten. Wenn Sie also wissen, dass die Datei 2 Bytes pro Beispiel verwendet, ist die Anzahl der Stichproben gleich der Größe der Datei in Bytes, minus 44 (für den Kopf) und dann durch 2 geteilt (da es 2 Bytes pro pro Probe).

Leider sind nicht alle WAV -Dateien so "kanonisch". Eine WAV -Datei verwendet das Riff -Format. Die richtige Möglichkeit, eine WAV -Datei zu analysieren, besteht darin, die Datei zu durchsuchen und die verschiedenen Brocken zu suchen.

Hier ist ein Beispiel (nicht sicher, in welcher Sprache Sie dies tun müssen):

http://msdn.microsoft.com/en-us/library/ms712835

Andere Tipps

Wellenformat

Sie müssen die lesen fmt Header, um die Anzahl der Kanäle und Bits pro Probe zu bestimmen, und lesen Sie dann die Größe der data Chunk, um festzustellen, wie viele Daten Bytes im Audio enthalten sind. Dann:

NumSamples = NumBytes / (NumChannels * BitsPerSample / 8)

EIN WAVE's format chunk (fmt) hat die angegebenen "Bytes pro Stichprobenrahmen" als wBlockAlign.
So: framesTotal = data.ck_size / fmt.wBlockAlign;
und samplesTotal = framesTotal * wChannels;
Daher, samplesTotal===FramesTotal IIF wChannels === 1!!

Beachten Sie, wie die obige Antwort elegant vermieden wurde, zu erklären, dass die Tastenäquationen die Spezifikation (und die Antworten basierend auf ihnen) falsch sind: Betrachten Sie Flor Beispiel A 2 Kanal 12 Bit pro Second Wave.
Die Spezifikation erklärt, dass wir jedes 12 -Bit / s -Beispiel in ein Wort einfügen:

  note: t=point in time, chan = channel
+---------------------------+---------------------------+-----
|         frame 1           |         frame 2           |  etc
+-------------+-------------+-------------+-------------+-----
| chan 1 @ t1 | chan 2 @ t1 | chan 1 @ t2 | chan 2 @ t2 |  etc
+------+------+------+------+------+------+------+------+-----
| byte | byte | byte | byte | byte | byte | byte | byte |  etc
+------+------+------+------+------+------+------+------+-----

Also .. wie viele Bytes macht den Beispielrahmen (BlockAlign) für eine 2 -zoch -12bit / s -Welle nach Spezifikation?
u003Csarcasm> CEIL(wChannels * bps / 8) = 3 Bytes ..u003C/sarcasm>
Offensichtlich ist die richtige Gleichung: wBlockAlign=wChannels*CEIL(bps/8)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top