Kas ir QOA audio faila formāts? Iezīmes, arhitektūra un kā to atvērt
Digitālajā audio inženierijā un spēļu izstrādē vienmēr ir bijusi izaicinājums līdzsvarot faila lielumu, atskaņošanas latentumu un CPU slogu. Standarta formāti, piemēram, MP3, AAC un Ogg Vorbis, piedāvā augstu saspiešanas koeficientu, bet prasa sarežģītas atkodēšanas caurules, smagu peldošā komata aritmētiku un ievērojamu atmiņas patēriņu. Savukārt, nesaspiests PCM (.wav) nodrošina nulles latentuma atskaņošanu, bet tas prasa milzīgu diska vietas patēriņu un lēnu resursu piegādi.
QOA (Quite OK Audio) formāts aizpilda šo plaisu. To izveidoja Dominic Szablewski (plaši slavētais QOI attēlu formāta radītājs), QOA ir atvērtā koda, ar zudumiem audio formāts, kas ir pielāgots zibens ātrai atkodēšanai, minimālai sarežģītībai un paredzamai atmiņas lietošanai.
Kas ir QOA fails?
Fails ar .qoa paplašinājumu saglabā kompresētu digitālo audio, izmantojot Quite OK Audio formātu. Tas darbojas ar pulsa kodēta modulēta (PCM) audio datiem 16-bitu dziļumā, pār dažādiem paraugu ātrumiem no $1\text{ Hz}$ līdz $16,777,215\text{ Hz}$ un atbalsta līdz 31 audio kanāliem.
Atšķirībā no psihoakustiskajiem kodekiem, kas balstās uz frekvences domēna transformācijām (piemēram, modificētā diskrētā kosinusa transformācija vai MDCT), QOA darbojas pilnīgi laika domēnā. Tas kompresē audio līdz precīzi noteiktam fiksētam attiecībai $3.2\text{ bits per sample}$, sasniedzot konstantu $5:1$ kompresijas attiecību pār neapstrādātu 16-bitu lineāro PCM.
Standarta CD kvalitātes audio (44,1 kHz, stereo) gadījumā QOA straume sasniedz precīzu, konstantu bitreitu:
$$\text{Bitreits} = 44,100 \times 2 \times 3.2 = 282,240\text{ bits/s} \approx 278\text{ kbps}$$
Detalizētas QOA iezīmes
1. Minimalistiska specifikācija un īstenojums
Tradicionāli moderni kodeki prasa simtiem lapu tehnisko specifikāciju un tūkstošiem koda rindu, lai tos īstenotu. Pretstatā tam, visa QOA formāta specifikācija ietilpst vienas lapas PDF, un oficiālā atsauces implementācija (qoa.h) sastāv aptuveni no 400 rindām standarta C koda.
2. Laika domēna LMS prognozēšana
QOA izvairās no skaitļošanas intensīviem pārveidošanas algoritmiem. Tā vietā tas izmanto adaptīvu Mazākā Kvadrāta (LMS) prognozes filtru ar četriem vēsturiskajiem svariem katram kanālam. Novērtējot nākotnes paraugu vērtības un ierakstot tikai kvantizētās atlikumu atšķirības, QOA nodrošina caurspīdīgu perceptīvo audio kvalitāti bez smagas CPU slodzes.
3. Ļoti ātra dekodēšana
Tā kā QOA balstās tikai uz veselu skaitļu aritmētiku un vieglām operācijām, tas atkodē līdz $3\times$ ātrāk nekā Ogg Vorbis un būtiski pārspēj standarta MP3 atkodētājus. Tas pat atkodē ātrāk nekā Microsoft ADPCM, padarot to par ideālu risinājumu zemas jaudas iegultajai aparatūrai, mikrocontrolleriem un reāllaika spēļu dzinējiem.
4. Straumēšanai gatava segmentēta arhitektūra
QOA faili ir sadalīti pašpietiekamos ietvaros, kas satur līdz $5,120$ paraugiem katram kanālam ($256$ segmenti ar $20$ paraugiem). Katrs ietvars nes savus LMS filtra svarus un vēsturi, ļaujot uzreiz meklēt, atgūt no zaudētām pakotnēm bez sodām, un nodrošinot dinamisku tiešraides straumēšanu bez obligāta globālā indeksēšanas.
Galvenās QOA īpašības
| Īpašība | Specifikācija / Detaļas |
|---|---|
| Faila paplašinājums | .qoa |
| Maģiskie Baiti | qoaf (0x71, 0x6f, 0x61, 0x66) |
| Izstrādātājs / Radītājs | Dominic Szablewski (PhobosLab) |
| Saspiešanas veids | Ar zudumiem (laika domēna LMS prognozēšana) |
| Saspiešanas attiecība | Fiksēts $5:1$ attiecībā pret 16-bit PCM |
| Glabāšana par paraugu | Tieši $3.2\text{ biti par paraugu}$ |
| Bitātrums (44.1 kHz, Stereo) | $\approx 278\text{ kbps}$ ($282.24\text{ kbps}$ slodze) |
| Paraugu frekvences diapazons | $1\text{ Hz}$ līdz $16,777,215\text{ Hz}$ ($24\text{-bit}$ bez zīmes) |
| Atbalstītie kanāli | $1$ līdz $31$ audio kanāli (Mono, Stereo, 5.1, 7.1, utt.) |
| Galvenes pārklājums | 8 baitu faila galvene, 8 baitu kadra galvene |
| Licencēšana | MIT (Pirmkods) / CC0 (Specifikācija un logotips) |
Kā izveidot un kodēt QOA failus
Audio kodēšana QOA formātā ir vienkārša, pateicoties iepriekš sagatavotiem izstrādātāju bināriem un kopienas rīkkopām.
Metode 1: Izmantojot oficiālo qoaconv CLI
Primārais kodētājs tiek izplatīts tieši oficiālajā atsauču krātuvē.
- Klonējiet repozitoriju un izveidojiet bināro failu:
git clone https://github.com/phoboslab/qoa.git cd qoa make - Pārvērtiet nekompresētu WAV failu uz QOA:
./qoaconv input.wav output.qoa - (Pēc izvēles) Ja kompilēts ar
HAS_DRLIBS=true,qoaconvvar arī tieši pārkodēt no.flacun.mp3failiem.
Metode 2: Iekodēšana dzinējā (Godot Engine)
Sākot ar Godot 4.3, spēļu izstrādātāji var importēt nekompresētus .wav failus un izvēlēties QOA saspiešanu tieši no Godot Import dokā. Tas rada kompakti spēļu aktīvus, kas tiek dekodēti iebūvēti ar nepamanāmu CPU latentumu intensīvu spēles ainu laikā.
Metode 3: Pārlūkā esošie tīmekļa pārveidotāji
Vairāki tīmekļa balstīti WebAssembly rīki (piemēram, tie, kas izvietoti uz qoaformat.org un saistītās atvērtā koda demonstrācijas) ļauj lietotājiem vilkt un nomest standarta audio failus un lejupielādēt kodētu .qoa aktīvu lokāli, neveicot termināla komandas.
Kā atvērt un atskaņot QOA failus
Tā kā QOA ir viegls formāts, kas galvenokārt izveidots darbības laikā integrācijai, parastie patērētāju multimediju atskaņotāji var prasīt spraudņus vai īpašas versijas.
- Veltīts CLI atskaņotājs (
qoaplay): Oficiālais repozitorijs tiek kompilēts uzqoaplay, kas izmanto iebūvētas audio apakšsistēmas (ALSA uz Linux, CoreAudio uz macOS, WASAPI uz Windows), lai tieši atskaņotu.qoafailus:./qoaplay audio.qoa - Spēļu ietvari un dzinēji:
- Raylib: Dabisks atbalsts caur
raudiomoduli. - Godot Engine: Pilns dabisks atskaņošanas atbalsts (Godot 4.3+).
- Raylib: Dabisks atbalsts caur
- Multivides atskaņotāji un spraudņi:
- Qmmp: Uzlabots multivides atskaņotājs ar iebūvētiem QOA dekodēšanas moduļiem.
- OpenCubicPlayer: Klasisks sekotājs un audio failu atskaņotājs, kas atbalsta QOA straumes.
- Audacious / foobar2000: Atbalstīts caur atvērtā koda kopienas ievades spraudņiem.
- IDE un izstrādātāju rīki:
- VS Code: QOA Preview paplašinājums ļauj izstrādātājiem priekšskatīt un atskaņot
.qoaskaņas klipus tieši to avota struktūrā.
- VS Code: QOA Preview paplašinājums ļauj izstrādātājiem priekšskatīt un atskaņot
Biežāk uzdotie jautājumi (BUJ)
Ko QOA apzīmē?
QOA apzīmē Quite OK Audio, ātru, vienkāršu, atvērtā koda zaudējumu audio formātu.
Vai QOA audio ir bezzudumu vai ar zudumiem?
QOA ir zaudējumu audio saspiešanas formāts, bet tas saglabā gandrīz caurspīdīgu audio kvalitāti lielākajai daļai praktiskajiem lietojumiem.
Cik daudz saspiešanas nodrošina QOA?
QOA saspiež 16-bit nekompresētu audio ar nemainīgu attiecību $5:1$ (precīzi $3.2\text{ biti uz paraugu}$).
Vai QOA var aizstāt MP3 vai AAC vispārējai mūzikas straumēšanai?
Nē, QOA dod priekšroku ārkārtīgi ātrai, vieglai atkodēšanai, nevis maksimālai joslas platuma ietaupīšanai, padarot to piemērotāku spēlēm, mikrocontrolleriem un zemas latentuma lietojumiem, nevis augstas blīvuma tīmekļa straumēšanai.
Vai QOA ir licences vai patentu maksas?
Nē, QOA ir pilnīgi patentu brīvs un izlaists zem atļaujošas MIT licences, kamēr tā specifikācija un logotips pieder publiskajam domēnam (CC0).
Atsauču URL un oficiālie resursi
- Oficiālā vietne: https://qoaformat.org/
- Oficiālā specifikācija (PDF): https://qoaformat.org/qoa-specification.pdf
- GitHub krātuve: https://github.com/phoboslab/qoa
- Autora tehniskā padziļināta analīze: PhobosLab emuārs - QOA paziņojums un veiktspējas rādītāji