aspose.info
PL

Czym jest format pliku audio QOA? Funkcje, architektura i jak go otworzyć

Zaktualizowano

Czym jest format pliku audio QOA? Funkcje, architektura i jak go otworzyć

W inżynierii dźwięku cyfrowego i tworzeniu gier, równoważenie rozmiaru pliku, opóźnienia odtwarzania i obciążenia CPU zawsze było wyzwaniem. Standardowe formaty, takie jak MP3, AAC i Ogg Vorbis, oferują wysokie współczynniki kompresji, ale wymagają skomplikowanych potoków dekodowania, intensywnych obliczeń zmiennoprzecinkowych i znacznych zużycia pamięci. Z drugiej strony, nieskompresowany PCM (.wav) zapewnia odtwarzanie bez opóźnień kosztem ogromnego zużycia dysku i wolnego dostarczania zasobów.

Format QOA (Quite OK Audio) wypełnia tę lukę. Stworzony przez Dominica Szablewskiego (twórcę szeroko chwalonego formatu obrazu QOI), QOA jest otwarto‑źródłowym, stratnym formatem audio, zaprojektowanym pod kątem błyskawicznego dekodowania, minimalnej złożoności i przewidywalnego zużycia pamięci.

Czym jest plik QOA?

Plik z rozszerzeniem .qoa przechowuje skompresowany dźwięk cyfrowy w formacie Quite OK Audio. Działa na danych audio modulowanych impulsowo-kodowo (PCM) o głębokości 16 bitów, przy częstotliwościach próbkowania od $1\text{ Hz}$ do $16,777,215\text{ Hz}$ i obsługuje do 31 kanałów audio.

W przeciwieństwie do kodeków psychoakustycznych, które opierają się na przekształceniach w dziedzinie częstotliwości (takich jak Zmodyfikowana Dyskretna Transformata Cosinusowa, MDCT), QOA działa całkowicie w dziedzinie czasu. Kompresuje dźwięk do stałego współczynnika dokładnie $3.2\text{ bits per sample}$, osiągając stały współczynnik kompresji $5:1$ w stosunku do surowego 16‑bitowego liniowego PCM.

Dla standardowego dźwięku w jakości CD (44,1 kHz, stereo) strumień QOA osiąga dokładną, stałą przepływność:

$$\text{Przepływność} = 44,100 \times 2 \times 3.2 = 282,240\text{ bitów/s} \approx 278\text{ kbps}$$

Szczegółowe funkcje QOA

1. Minimalistyczna specyfikacja i implementacja

Tradycyjne nowoczesne kodeki wymagają setek stron specyfikacji technicznych i tysięcy linii kodu do implementacji. Natomiast pełna specyfikacja formatu QOA mieści się w jednostronicowym PDF, a oficjalna implementacja referencyjna (qoa.h) składa się z około 400 linii standardowego kodu C.

2. Predykcja LMS w dziedzinie czasu

QOA unika obliczeniowo intensywnych algorytmów transformacji. Zamiast tego wykorzystuje adaptacyjny filtr predykcyjny Least Mean Squares (LMS) z czterema historycznymi wagami na kanał. Szacując przyszłe wartości próbek i zapisując jedynie kwantowane różnice resztkowe, QOA dostarcza przejrzystą percepcyjną jakość dźwięku bez dużego zużycia CPU.

3. Niezwykle szybkie dekodowanie

Ponieważ QOA opiera się wyłącznie na arytmetyce całkowitej i lekkich operacjach, dekoduje nawet $3\times$ szybciej niż Ogg Vorbis i znacząco przewyższa standardowe dekodery MP3. Dekoduje nawet szybciej niż Microsoft ADPCM, co czyni go idealnym dla niskoprądowych układów wbudowanych, mikrokontrolerów i silników gier w czasie rzeczywistym.

4. Architektura podzielona na fragmenty gotowa do strumieniowania

Pliki QOA są podzielone na samodzielne ramki zawierające do $5,120$ próbek na kanał ($256$ segmentów po $20$ próbek). Każda ramka niesie własne wagi filtru LMS i historię, co umożliwia natychmiastowe przewijanie, odzyskiwanie bez kar z utraconych pakietów oraz dynamiczne strumieniowanie w locie bez obowiązkowego globalnego indeksowania.

Kluczowe cechy QOA

CechaSpecyfikacja / Szczegół
Rozszerzenie pliku.qoa
Bajty Magiczneqoaf (0x71, 0x6f, 0x61, 0x66)
Programista / TwórcaDominic Szablewski (PhobosLab)
Typ kompresjiStratny (predykcja LMS w dziedzinie czasu)
Współczynnik kompresjiStały $5:1$ względem 16-bitowego PCM
Pamięć na próbkęDokładnie $3.2\text{ bits per sample}$
Przepustowość (44,1 kHz, Stereo)$\approx 278\text{ kbps}$ ($282.24\text{ kbps}$ ładunek)
Zakres częstotliwości próbkowania$1\text{ Hz}$ do $16,777,215\text{ Hz}$ ($24\text{-bit}$ bez znaku)
Obsługiwane kanały$1$ do $31$ kanały audio (Mono, Stereo, 5.1, 7.1, itp.)
Nadmiar nagłówkaNagłówek pliku 8‑bajtowy, nagłówek ramki 8‑bajtowy
LicencjonowanieMIT (Kod źródłowy) / CC0 (Specyfikacja i logo)

Jak tworzyć i kodować pliki QOA

Kodowanie dźwięku do QOA jest proste dzięki gotowym binariom deweloperskim i łańcuchom narzędzi społeczności.

Metoda 1: Użycie oficjalnego qoaconv CLI

Główny enkoder jest dystrybuowany bezpośrednio w oficjalnym repozytorium referencyjnym.

  1. Sklonuj repozytorium i zbuduj plik binarny:
    git clone https://github.com/phoboslab/qoa.git
    cd qoa
    make
    
  2. Konwertuj nieskompresowany plik WAV do QOA:
    ./qoaconv input.wav output.qoa
    
  3. (Opcjonalnie) Jeśli skompilowano z HAS_DRLIBS=true, qoaconv może również bezpośrednio transkodować pliki .flac i .mp3.

Metoda 2: Kodowanie w silniku (Godot Engine)

Od wersji Godot 4.3 programiści gier mogą importować nieskompresowane pliki .wav i wybierać kompresję QOA bezpośrednio w dokumencie importu Godota. To tworzy kompaktowe zasoby gry, które są dekodowane natywnie z pomijalnym opóźnieniem CPU podczas intensywnych scen rozgrywki.

Metoda 3: Konwertery internetowe w przeglądarce

Kilka internetowych narzędzi WebAssembly (takich jak te hostowane na qoaformat.org i powiązane otwarte demonstracje) umożliwia użytkownikom przeciąganie i upuszczanie standardowych plików audio oraz pobieranie zakodowanego zasobu .qoa lokalnie bez uruchamiania poleceń terminala.

Jak otwierać i odtwarzać pliki QOA

Ponieważ QOA jest lekkim formatem zaprojektowanym głównie do integracji w czasie wykonywania, tradycyjne odtwarzacze multimedialne mogą wymagać wtyczek lub dedykowanych wersji.

  • Dedykowany odtwarzacz CLI (qoaplay): Oficjalne repozytorium kompiluje się do qoaplay, który używa natywnych podsystemów audio (ALSA w Linuksie, CoreAudio w macOS, WASAPI w Windows) do bezpośredniego odtwarzania plików .qoa:
    ./qoaplay audio.qoa
    
  • Frameworki i silniki gier:
    • Raylib: Natywne wsparcie poprzez moduł raudio.
    • Godot Engine: Pełne natywne wsparcie odtwarzania (Godot 4.3+).
  • Odtwarzacze multimedialne i wtyczki:
    • Qmmp: Zaawansowany odtwarzacz multimedialny z natywnymi modułami dekodowania QOA.
    • OpenCubicPlayer: Klasyczny tracker i odtwarzacz plików audio obsługujący strumienie QOA.
    • Audacious / foobar2000: Wspierane poprzez otwartoźródłowe wtyczki wejściowe społeczności.
  • IDE i narzędzia programistyczne:
    • VS Code: Rozszerzenie QOA Preview umożliwia programistom podgląd i odtwarzanie klipów dźwiękowych .qoa bezpośrednio w drzewie źródłowym.

Najczęściej zadawane pytania (FAQ)

Co oznacza skrót QOA?

QOA oznacza Quite OK Audio, szybki, prosty, otwarto‑źródłowy format stratny audio.

Czy audio QOA jest bezstratne czy stratne?

QOA jest formatem stratnym kompresji audio, ale utrzymuje prawie przezroczystą jakość dźwięku w większości praktycznych zastosowań.

Jaką kompresję zapewnia QOA?

QOA kompresuje 16‑bitowe nieskompresowane audio ze stałym współczynnikiem $5:1$ (dokładnie $3.2\text{ bity na próbkę}$).

Czy QOA może zastąpić MP3 lub AAC w ogólnym strumieniowaniu muzyki?

Nie, QOA priorytetyzuje ultraszybkie, lekkie dekodowanie ponad maksymalne oszczędności przepustowości, co sprawia, że jest lepiej dopasowane do gier, mikrokontrolerów i aplikacji o niskiej latencji niż wysokogęstościowe strumieniowanie w sieci.

Czy QOA ma opłaty licencyjne lub patenty?

Nie, QOA jest całkowicie wolne od patentów i wydane na liberalnej licencji MIT, podczas gdy jego specyfikacja i logo należą do domeny publicznej (CC0).

Adresy URL i oficjalne zasoby