Was ist das QOA-Audio-Dateiformat? Funktionen, Architektur und wie man es öffnet
In der digitalen Audio‑Engineering und Spieleentwicklung war es schon immer eine Herausforderung, Dateigröße, Wiedergabelatenz und CPU‑Overhead auszubalancieren. Standardformate wie MP3, AAC und Ogg Vorbis bieten hohe Kompressionsraten, erfordern jedoch komplexe Dekodierungspipelines, rechenintensive Fließkomma‑Arithmetik und einen erheblichen Speicherbedarf. Am anderen Ende des Spektrums liefert unkomprimiertes PCM (.wav) eine latenzfreie Wiedergabe, allerdings auf Kosten eines enormen Festplattenverbrauchs und langsamer Asset‑Auslieferung.
Das QOA (Quite OK Audio)‑Format schließt diese Lücke. Erstellt von Dominic Szablewski (Erfinder des weithin gelobten QOI‑Bildformats), ist QOA ein Open‑Source‑Audioformat mit Verlust, das für blitzschnelle Dekodierung, minimale Komplexität und vorhersehbaren Speicherverbrauch optimiert ist.
Was ist eine QOA-Datei?
Eine Datei mit der Erweiterung .qoa speichert komprimiertes digitales Audio im Quite OK Audio-Format. Sie arbeitet mit pulsweitenmodulierten (PCM) Audiodaten mit einer 16‑Bit‑Tiefe über Abtastraten von $1\text{ Hz}$ bis $16,777,215\text{ Hz}$ und unterstützt bis zu 31 Audiokanäle.
Im Gegensatz zu psychoakustischen Codecs, die sich auf Frequenzbereichstransformationen (wie die Modifizierte Diskrete Kosinustransformation oder MDCT) verlassen, arbeitet QOA vollständig im Zeitbereich. Es komprimiert Audio auf ein festes Verhältnis von exakt $3.2\text{ bits per sample}$, wodurch ein konstanter Kompressionsfaktor von $5:1$ über rohes 16‑Bit‑lineares PCM erreicht wird.
Für standardmäßiges CD‑Qualitäts‑Audio (44,1 kHz, Stereo) erreicht ein QOA‑Stream eine exakte, konstante Bitrate von:
$$\text{Bitrate} = 44,100 \times 2 \times 3.2 = 282,240\text{ bits/s} \approx 278\text{ kbps}$$
Detaillierte Funktionen von QOA
1. Minimalistische Spezifikation und Implementierung
Traditionelle moderne Codecs benötigen Hunderte von Seiten technischer Spezifikationen und Tausende von Codezeilen für die Implementierung. Im Gegensatz dazu passt die gesamte QOA‑Format‑Spezifikation auf ein einseitiges PDF, und die offizielle Referenzimplementierung (qoa.h) besteht aus etwa 400 Zeilen Standard‑C‑Code.
2. Zeitbereichs-LMS-Vorhersage
QOA vermeidet rechenintensive Transformationsalgorithmen. Stattdessen nutzt es einen adaptiven Least-Mean-Squares (LMS)-Vorhersagefilter mit vier historischen Gewichten pro Kanal. Durch die Schätzung zukünftiger Sample‑Werte und das Aufzeichnen nur quantisierter Residual‑Differenzen liefert QOA transparente, wahrnehmungsbasierte Audioqualität ohne hohe CPU‑Auslastung.
3. Äußerst schnelles Dekodieren
Da QOA ausschließlich auf Ganzzahlarithmetik und leichte Operationen setzt, dekodiert es bis zu $3\times$ schneller als Ogg Vorbis und übertrifft Standard‑MP3‑Decoder deutlich. Es dekodiert sogar schneller als Microsoft ADPCM, was es ideal für stromsparende Embedded‑Hardware, Mikrocontroller und Echtzeit‑Spiel‑Engines macht.
4. Streaming-bereite Chunk-basierte Architektur
QOA‑Dateien sind in eigenständige Frames unterteilt, die bis zu $5,120$ Samples pro Kanal enthalten ($256$ Slices zu je $20$ Samples). Jeder Frame trägt seine eigenen LMS‑Filtergewichte und die Historie, was sofortiges Suchen, verlustfreie Wiederherstellung bei verlorenen Paketen und dynamisches On‑the‑Fly‑Streaming ohne zwingende globale Indexierung ermöglicht.
Wesentliche Merkmale von QOA
| Merkmal | Spezifikation / Detail |
|---|---|
| Dateierweiterung | .qoa |
| Magische Bytes | qoaf (0x71, 0x6f, 0x61, 0x66) |
| Entwickler / Ersteller | Dominic Szablewski (PhobosLab) |
| Kompressionstyp | Verlustbehaftet (Zeitbereich LMS-Vorhersage) |
| Kompressionsrate | Fest $5:1$ relativ zu 16‑Bit PCM |
| Speicher pro Sample | Genau $3.2\text{ bits per sample}$ |
| Bitrate (44,1 kHz, Stereo) | $\approx 278\text{ kbps}$ ($282.24\text{ kbps}$ Nutzdaten) |
| Abtastratenbereich | $1\text{ Hz}$ bis $16,777,215\text{ Hz}$ ($24\text{-bit}$ vorzeichenlos) |
| Unterstützte Kanäle | $1$ bis $31$ Audiokanäle (Mono, Stereo, 5.1, 7.1 usw.) |
| Header-Overhead | 8-byte-Dateikopf, 8-byte-Frame-Kopf |
| Lizenzierung | MIT (Quellcode) / CC0 (Spezifikation & Logo) |
Wie man QOA-Dateien erstellt und kodiert
Das Codieren von Audio in QOA ist unkompliziert dank vorgefertigter Entwickler‑Binaries und Community‑Toolchains.
Methode 1: Verwendung des offiziellen qoaconv CLI
Der primäre Encoder wird direkt im offiziellen Referenz‑Repository bereitgestellt.
- Klone das Repository und baue die Binärdatei:
git clone https://github.com/phoboslab/qoa.git cd qoa make - Konvertiere eine unkomprimierte WAV-Datei zu QOA:
./qoaconv input.wav output.qoa - (Optional) Wenn mit
HAS_DRLIBS=truekompiliert, kannqoaconvauch direkt von.flac- und.mp3-Dateien transkodieren.
Methode 2: In-Engine-Kodierung (Godot Engine)
Ab Godot 4.3 können Spieleentwickler unkomprimierte .wav-Dateien importieren und die QOA-Kompression direkt im Godot-Import-Dock auswählen. Das erzeugt kompakte Spiel-Assets, die nativ mit vernachlässigbarer CPU-Latenz während intensiver Spielszenen dekodiert werden.
Methode 3: In-Browser-Web-Konverter
Mehrere webbasierte WebAssembly-Tools (wie die auf qoaformat.org gehosteten und verwandte Open-Source-Demos) ermöglichen es Benutzern, Standard-Audiodateien per Drag‑&‑Drop hochzuladen und ein codiertes .qoa‑Asset lokal herunterzuladen, ohne Terminalbefehle ausführen zu müssen.
Wie man QOA-Dateien öffnet und abspielt
Da QOA ein leichtgewichtiges Format ist, das hauptsächlich für die Laufzeitintegration entwickelt wurde, können herkömmliche Consumer-Media-Player Plugins oder spezielle Builds benötigen.
- Dedizierter CLI‑Player (
qoaplay): Das offizielle Repository kompiliert zuqoaplay, das native Audiosubsysteme (ALSA unter Linux, CoreAudio unter macOS, WASAPI unter Windows) verwendet, um.qoa‑Dateien direkt abzuspielen:./qoaplay audio.qoa - Spiel‑Frameworks & -Engines:
- Raylib: Native Unterstützung über das
raudio-Modul. - Godot Engine: Vollständige native Wiedergabeunterstützung (Godot 4.3+).
- Raylib: Native Unterstützung über das
- Medienplayer & Plugins:
- Qmmp: Fortgeschrittener Multimedia‑Player mit nativen QOA‑Dekodiermodulen.
- OpenCubicPlayer: Klassischer Tracker und Audioplayer, der QOA‑Streams unterstützt.
- Audacious / foobar2000: Unterstützt über Open‑Source‑Community‑Eingabe‑Plugins.
- IDE & Entwicklerwerkzeuge:
- VS Code: Die QOA Preview-Erweiterung ermöglicht Entwicklern,
.qoa‑Soundclips direkt im Quellbaum vorzuschauen und abzuspielen.
- VS Code: Die QOA Preview-Erweiterung ermöglicht Entwicklern,
Häufig gestellte Fragen (FAQ)
Wofür steht QOA?
QOA steht für Quite OK Audio, ein schnelles, einfaches, quelloffenes verlustbehaftetes Audioformat.
Ist QOA-Audio verlustfrei oder verlustbehaftet?
QOA ist ein verlustbehaftetes Audio-Kompressionsformat, aber es bewahrt eine nahezu transparente Audioqualität für die meisten praktischen Anwendungsfälle.
Wie viel Kompression bietet QOA?
QOA komprimiert 16‑Bit unkomprimiertes Audio mit einem konstanten Verhältnis von $5:1$ (genau $3.2\text{ Bits pro Sample}$).
Kann QOA MP3 oder AAC für allgemeines Musik-Streaming ersetzen?
Nein, QOA priorisiert ultra‑schnelle, leichte Dekodierung über maximale Bandbreiteneinsparungen, wodurch es besser für Spiele, Mikrocontroller und latenzarme Anwendungen geeignet ist als für hochdichte Web‑Streaming.
Hat QOA Lizenz- oder Patentgebühren?
Nein, QOA ist völlig patentfrei und wird unter der permissiven MIT-Lizenz veröffentlicht, während seine Spezifikation und sein Logo gemeinfrei (CC0) sind.
Referenz-URLs & offizielle Ressourcen
- Offizielle Website: https://qoaformat.org/
- Offizielle Spezifikation (PDF): https://qoaformat.org/qoa-specification.pdf
- GitHub-Repository: https://github.com/phoboslab/qoa
- Technischer Deep Dive des Autors: PhobosLab Blog - QOA-Ankündigung & Benchmarks