Formatul de comprimare flac, linuxoid

De atunci, când computerul a dobândit suficientă putere pentru a putea lucra cu date multimedia, aceasta a fost o lungă perioadă de timp, prin standarde computerizate, desigur. În acest timp, au fost elaborate multe formate, specificații și standarde diferite. Acestea diferă atât în ​​ceea ce privește desemnarea, cât și în ceea ce privește distribuția și licențierea. Condiționat, aceste formate pot fi împărțite în două grupe mari: formate care realizează codificarea audio fără pierderi și formate în care unele informații redundante sunt pierdute inițial pentru a se potrivi dimensiunii mai mici a fișierului rezultat.

Prin urmare, FLAC comprimă fișiere fără pierderi. Când datele sunt codate, nu există pierderi de informații, deci fișierul audio decodat este absolut identic cu cel original. Formatul este proiectat pentru comprimarea datelor audio (folosind faptul că datele audio au un ordin de mare de corelare între probe.), Dar lucrările algoritmul amintește zip și dezvoltatorii inițial nu au pus restricții privind tipul de date sursă, este teoretic posibil pentru a comprima și orice alte date, dar dimensiunea adevărului poate nu mult diferit de original. Formatul a fost conceput inițial ca fiind extensibil, astfel încât este posibil să adăugați funcții noi fără a pierde compatibilitatea înapoi. FLAC este un format de streaming, care se realizează prin împărțirea datelor într-o mulțime de blocuri, care pot avea mărimi diferite, deși codecurile disponibile utilizează numai blocuri de dimensiune constantă. Deoarece fiecare bloc este codificat separat, schimbarea dimensiunii blocului în timpul codării poate duce la obținerea unor lungimi diferite ale fișierelor de ieșire. Cu cât dimensiunea blocului este mai mică, cu atât sunt mai mari și crește cantitatea de informații aeriene. Mărimea blocului este determinat din eșantionul 16-65535, care acoperă dimensiunile optime pentru toate posibile audio (muzică, vorbire). În acest caz, fiecare bloc este complet independent de cel precedent. Pentru a determina eventualele erori în transferul de fișiere, se calculează un control de 16 biți pentru fiecare cadru (bloc codificat). pas de Integritate a confirmat în continuare MD5 semnătura datelor necomprimate care sunt stocate în antet și poate fi verificată în timpul redării, decodificare sau prin testare. În plus, codificatorul are un mod de funcționare în care datele codificate sunt decodificate în zbor și comparate cu originalul în prezența erorilor, lucrarea se oprește. Datele blocate sunt transferate în stadiul de predicție pentru un sub-bloc. Fiecare subbloc este codificat independent în subramură, iar ulterior sunt combinate într-un cadru. Deoarece fiecare canal este codificat separat, acest lucru înseamnă că un canal al cadrului stereo poate fi comprimat ca un sub-cadru constant, iar al doilea ca un sub-cadru LPC. Fiecare cadru are un antet constând dintr-un cod de sincronizare, informații cadru (dimensiunea blocului, rata de eșantionare, numărul de canale etc.) și o sumă de control pe opt biți. De asemenea, conținută în titlu sau numărul primului eșantion în cadru în raport cu fluxul total (pentru fluxuri cu mărimea blocului variabilă) sau numărul cadrului (pentru fluxuri cu o dimensiune a blocului constant). Aceasta permite o căutare rapidă și precisă. Acesta este urmat de subcadre codificate (unul pentru fiecare canal) și, în final, cadru, zero căptușit la o limită de octet. Fiecare subframe are propriul antet, care determină modul în care este decodificat. Deoarece canalele din stânga și dreapta, în cele mai multe cazuri cuprind o parte din aceleași informații, se utilizează metoda decorrelation inter-canal, care poate fi patru tipuri diferite, iar codificatorul selectează în mod individual pentru fiecare cadru:

  • Independent. Canalele stânga și dreapta sunt codificate independent.
  • Diferență. Canalele stângi și drepte sunt convertite în canalele medii și reziduale. Canalul mediu este valoarea medie a semnalelor stânga și dreapta, iar canalul rezidual este diferența dintre acestea (stânga minus dreapta).
  • Mâna stângă. Canalele stânga și reziduală sunt codificate.
  • Pravoostoronnee. Canalele drepte și cele reziduale sunt codificate.

Pentru predicție sunt utilizate patru metode diferite pentru modelarea semnalului de intrare (predictor linear LPC verbatim, constant, predictor liniar constant și predicție liniară FIR). Cum diferă acestea, uitați-vă pe site. În cele din urmă, două metode similare folosind codurile Rice sunt folosite pentru a codifica semnalul rezidual (eronat) din etapa de predicție (care trebuie de asemenea luate în considerare pentru a evita pierderile). Și aceste metode nu sunt o dogmă, puteți utiliza și propriile metode de codificare. Mai mult decât atât, FLAC permite o modificare a metodei de codare a reziduurilor de la un bloc la un bloc și chiar și într-un canal dintr-un bloc. Unul dintre obiectivele proiectului este cerințele hardware reduse pentru a asigura decodificarea în timp real, chiar și pe computerele mai vechi. În plus, există două puncte pe care dezvoltatorii nu vor și nu doresc să le pună în aplicare (deși dacă cineva se întâmplă, vă rugăm, dar compatibilitatea cu originalul nu este garantată în acest caz). Aceasta este compresie lossy și punerea în aplicare a protecției împotriva copierii sub orice formă.

Deci, cu caracteristicile puțin gândite, acum să mergem să practicăm. Toate exemplele pe care le citez pentru platforma Linux, dar pentru utilizatorii interesați de alte sisteme de operare, veți găsi toate linkurile necesare pe site. Livrarea FLAC include:

• libFLAC. o bibliotecă pentru codoare și decodoare de bază și o interfață de metadate;

• libFLAC ++. o shell shell pentru libFLAC;

• libOggFLAC și libOggFLAC ++. pachete de encodere și decodoare libFLAC și libFLAC ++. respectiv, pentru a accesa fluxurile FLAC în containerul Ogg;

• flac. un utilitar de linie de comandă care comprimă și decomprima fișierele .flac;

• metaflac. un utilitar de linie de comandă pentru editarea metadatelor în fișiere .flac;

În plus, totul din kit include plug-in-uri pentru diferiți jucători și biblioteci pentru a lucra cu codificări și etichete de identificare.

În primul rând, suntem interesați de utilitate FLAC, cele mai multe dintre setările implicite ale codorului de bază optimizate pentru CD-audio (de exemplu, 44,1 kHz, 2 canale, 16 biți pe eșantion), deși, desigur, toate acestea, desigur, poate fi modificată prin selectarea opțiunii corespunzătoare.

În cel mai simplu caz, pentru a codifica un fișier wav în flac, este suficient să introduceți o comandă fără parametri, indicând numai fișierul de intrare.
[sergej @ grinder sunet] $ flac test.wav

Ca rezultat, un fișier cu același nume, dar cu extensia .flac, este creat în directorul curent. Acordați atenție liniei de opțiuni care arată opțiunile de codificare utilizate cu adevărat. Puteți obține un scurt ajutor prin tastarea pur și simplu a unui flac, unul mai detaliat cu opțiunea suplimentară - help. Nivelul implicit de comprimare este 5, care poate fi modificat adăugând - # (unde # cifre de la 0 (mai rapid) la 8 (mai bun)).

[sergej @ grinder sunet] $ flac -8 test.wav

Numele fișierului de ieșire poate fi specificat explicit utilizând opțiunea -o. Pentru a decoda fișierul flac, utilizați comutatorul -d.

[sergej @ grinder sunet] $ flac -d test.flac

Metaflac utilitar vă permite să manipulați metadatele fișierului, să verificați suma de control, blocul și dimensiunea cadrului (maxim și minim), să lucrați cu etichete în formatul Ogg Vorbis.

[Sergej @ polizor flac] $ metaflac -show-md5sum -show-min-framesize -show-sample rate -show-totale-probe test.flac

01762464f61bdf7ef35f268cf6f6e80a # suma MD5

12723732 # numărul total de eșantioane

Acesta este modul în care puteți copia eticheta din fișierul ogg și o puteți lipi.

[sergej @ grinder flac] $ vorbiscomment -l -raw file.ogg | metaflac -import-vc-de la = - -no-utf8-convert file.flac

Format Dimensiunea fișierului de ieșire primită, rata de codare Mb.

Mp3 (LAME 128 kb / s) 4,4 2 min

Ogg cf. 112 kb / s 3,9 4,08min

FLAC 28,6 0,48 min

În plus, am încercat, cum aș putea compara calitatea fișierului audio rezultat. Desigur, eu recunosc că o astfel de testare poartă un element de subiectivitate, și în conformitate cu normele ar trebui să fie cât mai mare număr posibil de participanți la „blind“, în caz contrar testarea au fost deja „conștient“ deficiențelor constatate. Deci, aceasta este toata opinia mea personala, si nu am realizat, daca experimentam cinstit cristal clar. Scopurile sunt complet diferite. Deci, indiferent de bun Șchiopul codec, MP3 se bazează chiar și în comparație cu Ogg Vorbis, un sentiment că nedodali putere și profunzime, chiar și dimensiunea finală pentru a obține un pic mai Ogg, dar a câștigat în rata de codificare în urmă aproape sa dublat. Apropo, am o cutie cu 300 Celeron la bord și sub Windows cu utilitarele grafice pentru codarea aceluiași fișier durează aproximativ 50% mai mult timp. Ogg Vorbis a plăcut bine, chiar ar spune un sunet excelent și chiar și cu un bitrate atât de scăzut, nu există aproape nici o diferență acustică în tăierea urechilor. Dar, așa cum FLAC wav distinge de originalul nu poate fi, dar după cum se poate vedea primul volum durează exact de două ori mai mic (din nou, în mod implicit, amintiți-vă). Deci, pentru cei care doresc un sunet autentic și, în același timp, există o dorință de a economisi spațiu pe disc și FLAC este doar ceea ce medicul comandat. Ce este acolo să-l asculți? După cum am spus, plug-in-urile sunt disponibile pentru mulți jucători. a.

Asta e tot. Viva OpenSource!