3 Stimmen

Wie sind Dateien (insbesondere Audiodateien) intern organisiert?

Ich versuche das zu verstehen: Apple spricht von "Paketen" in Audiodateien, und es gibt eine schicke Funktion namens AudioFileReadPackets, die viele Argumente benötigt. Eins davon gibt das "Startpaket" an, ein anderes die Anzahl der Pakete, die gelesen werden sollen.

Also stelle ich mir eine Audiodatei intern so vor: Sie besteht aus vielen Paketen. Wenn es sich um eine Audiodatei im Format mit variablem Bitraten handelt, kann jedes Paket eine andere Größe haben. Bei einer Datei im Format mit konstanter Bitrate hat jedes Paket die gleiche Größe. Eine Audiodatei ist also wie ein Lastwagen voller Kisten, und jede Kiste enthält interessante Sachen.

Ist das korrekt? Gilt das für jede Art von Datei? Ist das tatsächlich so, wie Dateien aussehen?

1voto

Conrad Albrecht Punkte 1798

"Paket" sieht für mich nach Apple-spezifischer Terminologie aus. Ich habe gerade viel gelesen und programmiert, um WAV- und MP3-Dateien zu verarbeiten, und ich glaube nicht, dass ich den Begriff "Paket" einmal gesehen habe.

1voto

Clifford Punkte 82130

Die Frage (selbst mit der Qualifikation "insbesondere Audiodateien") ist viel zu allgemein; verschiedene Dateiformate sind nun einmal unterschiedlich!

Um die Frage zu beantworten, müssen Sie zunächst einen bestimmten Dateityp angeben; dann wird die Antwort auf die Frage zwangsläufig darauf hinauslaufen, sich die Spezifikation anzusehen. Proprietäre Formate haben möglicherweise keine öffentlich verfügbare Spezifikation.

Spezifikationen für viele Dateien (offizielle und rückentwickelte) finden Sie auf der großartigen Wotsit's Format-Website.

AAC, das von Apple iTunes und anderen verwendet wird, wird definiert von ISO/IEC 13818-7:2006. Das Dokument kostet 252 Schweizer Franken (etwa 233 US-Dollar)! Sie müssten wirklich sehr interessiert (kommerziell) sein, um das zu bezahlen, anstatt einen vorhandenen AAC-Codec zu verwenden.

"Paket" ist ein Begriff, der häufig in der Datenübertragung verwendet wird, daher ist er möglicherweise eher auf Audio-Streaming als auf Audiodateien anwendbar, wo ein "Rahmen" angemessener sein könnte, oder für Datendateien im Allgemeinen ein "Datensatz", aber die Terminologie ist flexibel, weil sie bedeutet, was auch immer die Person, die sie geschrieben hat, damit gemeint hat! Wenn genug Leute einen Begriff falsch verwenden, wird er im Grunde neu definiert (oder mehrfach definiert), um genau das zu bedeuten, also würde ich mich nicht zu sehr darauf versteifen. Der Autor hat ihn zweifellos verwendet, um eine Einheit zu definieren, die ein definiertes Format innerhalb einer Datei hat, in der mehrere solche Einheiten hintereinander wiederholt werden.

1voto

TarkaDaal Punkte 17500

Dateien enthalten das, was die Anwendung, die sie erstellt hat, darin platziert hat. Dateien sind im Grunde eine Sequenz von Bytes. Jegliche weitere Organisation ist eine semantische Unterscheidung, die vom Programm erstellt wurde. Es ist falsch anzunehmen, dass alle Dateien die gleiche Struktur haben.

Davon abgesehen sind bestimmte Daten Speicherprobleme ähnlich genug, um auf ähnliche Weise gelöst zu werden, und Muster beginnen sich abzuzeichnen. Das Aufteilen von Daten in Datensätze oder Pakete ist ein Beispiel dafür.

0voto

Frank Shearar Punkte 16759

So sehen Audio-Dateien im Grunde aus: eine Reihe von Datenblöcken oder Frames. AudioFileReadPacketData und AudioFileReadPackets schützen Sie vor Details wie beispielsweise der Größe eines Frames in Bytes (weil Sie möglicherweise aus einer WAV-Datei lesen, die eine andere Struktur als eine MP3-Datei hat, oder Ihre MP3-Datei eine variable Bitrate verwendet).

Das Konzept von Frames gilt im Allgemeinen nicht für jede Datei, aber dann würden Sie die Audio File Services-API nicht verwenden, um einfach irgendeine Datei einzusehen.

0voto

Für MP3 (und MP1, MP2) besteht die Datei aus Frames. Und ja, Ihr Verständnis ist korrekt - in VBR-Dateien haben die Pakete verschiedene Größen. In WAV-Dateien haben die Pakete die gleiche Länge, wenn mich mein Gedächtnis nicht täuscht (ich habe vor 11 Jahren einen Decoder / Player geschrieben).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X