Mi az a QOA audio fájlformátum? Jellemzők, architektúra és hogyan nyissuk meg
A digitális hangmérnöki és játékfejlesztési területeken a fájlméret, a lejátszási késleltetés és a CPU terhelés egyensúlyozása mindig is kihívást jelentett. Az MP3, AAC és Ogg Vorbishez hasonló szabványos formátumok magas tömörítési arányt kínálnak, de összetett dekódolási csővezetékeket, nehéz lebegőpontos aritmetikát és jelentős memóriahasználatot igényelnek. Ezzel szemben a tömörítetlen PCM (.wav) nulla késleltetésű lejátszást biztosít, de hatalmas lemezhasználat és lassú eszközszállítás árán.
A QOA (Quite OK Audio) formátum ezt a hiányt pótolja. Dominic Szablewski (a széles körben dicsért QOI képformátum alkotója) által létrehozott QOA egy nyílt forráskódú, veszteséges hangformátum, amely villámgyors dekódolásra, minimális összetettségre és kiszámítható memóriahasználatra van szabva.
Mi az a QOA fájl?
Egy .qoa kiterjesztésű fájl a Quite OK Audio formátumot használva tárol tömörített digitális hangot. 16 bites mélységű, pulzus-kód modulált (PCM) audio adatot kezel, mintavételi frekvenciákkal $1\text{ Hz}$ és $16,777,215\text{ Hz}$ között, és legfeljebb 31 audio csatornát támogat.
A pszichoakusztikus kodekekkel ellentétben, amelyek a frekvenciatartománybeli transzformációkra (például a módosított diszkrét koszinusz transzformációra vagy MDCT-re) támaszkodnak, a QOA teljesen az időtartományban működik. A hangot pontosan $3.2\text{ bit mintánként}$ rögzített arányra tömöríti, ezzel állandó $5:1$ tömörítési arányt ér el a nyers 16 bites lineáris PCM felett.
A standard CD-minőségű hang (44,1 kHz, sztereó) esetén a QOA adatfolyam pontos, állandó bitrátát ér el:
$$\text{Bitráta} = 44,100 \times 2 \times 3.2 = 282,240\text{ bits/s} \approx 278\text{ kbps}$$
A QOA részletes jellemzői
1. Minimalista specifikáció és megvalósítás
A hagyományos modern kodekek megvalósításához több száz oldalas műszaki specifikációra és több ezer kódsorra van szükség. Ezzel szemben a teljes QOA formátumspecifikáció egy egyoldalas PDF-be illeszkedik, és a hivatalos referencia implementáció (qoa.h) körülbelül 400 sor standard C kódból áll.
2. Időbeli LMS előrejelzés
A QOA elkerüli a számításigényes transzformációs algoritmusokat. Ehelyett egy adaptív Legkisebb Négyzetek (LMS) előrejelző szűrőt használ négy historikus súllyal csatornánként. A jövőbeli minták értékének becslésével és csak a kvantált maradékkülönbségek rögzítésével a QOA átlátható, észlelés-alapú hangminőséget nyújt nehéz CPU használat nélkül.
3. Rendkívül gyors dekódolás
Mivel a QOA kizárólag egész számú aritmetikára és könnyű műveletekre támaszkodik, $3\times$-szor gyorsabban dekódol, mint az Ogg Vorbis, és jelentősen felülmúlja a szokásos MP3 dekódereket. Még a Microsoft ADPCM-nél is gyorsabban dekódol, ami ideálissá teszi alacsony fogyasztású beágyazott hardverek, mikrokontroller-ek és valós idejű játékmotorok számára.
4. Streaming-re készen álló darabolt architektúra
A QOA fájlok önálló keretekre vannak osztva, amelyek legfeljebb $5,120$ mintát tartalmaznak csatornánként ($256$ szelet $20$ mintával). Minden keret saját LMS szűrő súlyokat és történetet hordoz, lehetővé téve a azonnali keresést, nulla büntetéses helyreállítást elveszett csomagokból, valamint a dinamikus, valós idejű streaminget kötelező globális indexelés nélkül.
A QOA fő jellemzői
| Jellemző | Specifikáció / Részlet |
|---|---|
| Fájlkiterjesztés | .qoa |
| Mágikus bájtok | qoaf (0x71, 0x6f, 0x61, 0x66) |
| Fejlesztő / Készítő | Dominic Szablewski (PhobosLab) |
| Tömörítési típus | Veszteséges (időbeli LMS előrejelzés) |
| Tömörítési arány | Rögzített $5:1$ a 16-bites PCM-hez képest |
| Tárolás mintánként | Pontosan $3.2\text{ bit mintánként}$ |
| Bitráta (44,1 kHz, Sztereó) | $\approx 278\text{ kbps}$ ($282,24\text{ kbps}$ hasznos adat) |
| Mintavételezési frekvenciatartomány | $1\text{ Hz}$ to $16,777,215\text{ Hz}$ ($24\text{-bit}$ előjel nélküli) |
| Támogatott csatornák | $1$ to $31$ audio csatorna (Mono, Stereo, 5.1, 7.1, stb.) |
| Fejléc terhelés | 8 bájtos fájlfejléc, 8 bájtos keretfejléc |
| Licencelés | MIT (Forráskód) / CC0 (Specifikáció és logó) |
Hogyan hozzunk létre és kódoljunk QOA fájlokat
Az audio QOA-ba kódolása egyszerű a kész fejlesztői binárisok és a közösségi eszközkészletek köszönhetően.
Módszer 1: Az hivatalos qoaconv CLI használata
Az elsődleges enkóder közvetlenül az hivatalos referencia tárolóban kerül terjesztésre.
- Klónozd a tárolót és építsd fel a bináris fájlt:
git clone https://github.com/phoboslab/qoa.git cd qoa make - Konvertálj egy tömörítetlen WAV fájlt QOA formátumba:
./qoaconv input.wav output.qoa - (Opcionális) Ha
HAS_DRLIBS=true-val van lefordítva, aqoaconvközvetlenül át tud kódolni.flacés.mp3fájlokból is.
Módszer 2: Motoron belüli kódolás (Godot Engine)
A Godot 4.3-tól kezdve a játékfejlesztők importálhatnak tömörítetlen .wav fájlokat, és közvetlenül a Godot Import dokkból választhatják a QOA tömörítést. Ez kompakt játékeszközöket eredményez, amelyek natívan dekódolnak elhanyagolható CPU késleltetéssel a nehéz játékszcenáriók során.
Módszer 3: Böngészőben működő webes konverterek
Számos webalapú WebAssembly segédprogram (például a qoaformat.org-on és kapcsolódó nyílt forráskódú demókban elérhetők) lehetővé teszi a felhasználók számára, hogy húzzák és ejtsék a szabványos audio fájlokat, és helyileg letöltsék a kódolt .qoa eszközt anélkül, hogy terminálparancsokat kellene futtatni.
Hogyan nyissuk meg és játsszuk le a QOA fájlokat
Mivel a QOA egy könnyű formátum, amely elsősorban futásidejű integrációra készült, a hagyományos fogyasztói médialejátszók esetleg plugineket vagy dedikált verziókat igényelhetnek.
- Dedikált CLI lejátszó (
qoaplay): A hivatalos tárolóqoaplay-ként fordul le, amely natív audio alrendszereket (ALSA Linuxon, CoreAudio macOS-en, WASAPI Windows-on) használ a.qoafájlok közvetlen lejátszásához:./qoaplay audio.qoa - Játékkeretrendszerek és motorok:
- Raylib: Natív támogatás a
raudiomodulon keresztül. - Godot Engine: Teljes natív lejátszási támogatás (Godot 4.3+).
- Raylib: Natív támogatás a
- Médialejátszók és bővítmények:
- Qmmp: Fejlett multimédia lejátszó natív QOA dekódoló modulokkal.
- OpenCubicPlayer: Klasszikus tracker és hangfájl lejátszó, amely támogatja a QOA streameket.
- Audacious / foobar2000: Támogatott nyílt forráskódú közösségi bemeneti bővítményekkel.
- IDE és fejlesztői eszközök:
- VS Code: A QOA Preview kiterjesztés lehetővé teszi a fejlesztők számára, hogy előnézetet készítsenek és lejátszanak
.qoahangklippeket közvetlenül a forrásfájukban.
- VS Code: A QOA Preview kiterjesztés lehetővé teszi a fejlesztők számára, hogy előnézetet készítsenek és lejátszanak
Gyakran Ismételt Kérdések (GYIK)
Mit jelent a QOA?
A QOA a Quite OK Audio rövidítése, egy gyors, egyszerű, nyílt forráskódú veszteséges audio formátum.
A QOA hang veszteségmentes vagy veszteséges?
A QOA egy veszteséges audio tömörítési formátum, de a legtöbb gyakorlati felhasználási esetben közel átlátszó hangminőséget biztosít.
Mekkora tömörítést biztosít a QOA?
A QOA 16 bites tömörítetlen audiót tömörít állandó $5:1$ arányban (pontosan $3.2\text{ bit mintánként}$).
A QOA helyettesítheti az MP3-at vagy AAC-t általános zenei streaminghez?
Nem, a QOA az ultra-gyors, könnyű dekódolást helyezi előtérbe a maximális sávszélesség-megtakarítás helyett, így jobban alkalmas játékokra, mikrokontrollerekre és alacsony késleltetésű alkalmazásokra, mint a nagy sűrűségű webes streaming.
Van a QOA-nak licenc- vagy szabadalmi díja?
Nem, a QOA teljesen szabad a szabadalmaktól, és a permisszív MIT licenc alatt került kiadásra, míg a specifikációja és logója a közkinccsé tartozik (CC0).
Referencia URL-ek és hivatalos források
- Hivatalos weboldal: https://qoaformat.org/
- Hivatalos specifikáció (PDF): https://qoaformat.org/qoa-specification.pdf
- GitHub tároló: https://github.com/phoboslab/qoa
- Szerző technikai mélymerülése: PhobosLab Blog - QOA bejelentés és benchmarkok