Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
Prijevodi ove stranice:

Analiza FLAC formata

Matteo Samsa

Zbog nemogućnosti umetanja više slika u poglavlje “Analiza spektra audio formata” prilažem PDF verziju rada.

:racfor_wiki:datoteke_i_datotecni_sustavi:analiza_flac_formata_-_matteo_samsa.pdf

Sažetak

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Ovaj seminarski rad analizira format koji služi za sažimanje audio podataka bez gubitka podataka - FLAC. U radu je opisan proces kodiranja FLAC datoteka te definiran sam format te njegovi blokovi. Razmatrani su metapodaci koji se mogu nalaziti u FLAC formatu, nakon čega su uspoređene različite razine sažimanja. FLAC format je uspoređen s nekoliko drugih formata za audio podatke te su analizirani spektrogrami uz pomoć kojih se može zaključiti o kojem je audio formatu riječ.</font>

<font 12pt/Calibri,sans-serif;;inherit;;inherit>Ključne riječi: FLAC, audio, spektrogram</font>

Uvod

<font 11pt/Calibri,sans-serif;;inherit;;inherit>FLAC je najbrži audio kodek bez gubitka podataka (engl. lossless će biti korišten dalje u tekstu). FLAC je akronim od engleskih riječi „Free Lossless Audio Codec“, gdje se riječ „Free“ odnosi na to da su specifikacije formata u potpunosti javno objavljene i da se format smije koristiti u bilo koje svrhe te metode kodiranja i dekodiranja formata nisu patentirane. Također, izvorni kod je dostupan pod open-source licencom.</font>

Logo FLAC formata

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 1 Logo FLAC formata</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Prva verzija FLAC formata je izdana 20. srpnja 2001. godine, a 29. siječnja 2003. godine ga je preuzela neprofitna organizacija Xiph.org koja se fokusira uglavnom na Ogg familiju formata: Vorbis, Theora, Speex, i slični.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>FLAC format je sličan MP3 formatu po tome što ima mogućnost sažimanja audio datoteka, no on to radi bez gubitka podataka. Ta vrsta sažimanja je slična sažimanju ZIP datoteke, no FLAC ima puno veći faktor sažimanja jer je projektiran specifično za audio podatke.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Bitne značajke FLAC formata su:</font>

  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Lossless:kodiranje audio podataka pulsno-kodnom modulacijom (PCM) ne gube se nikakvi podaci, dekodirani podaci su identični onima koji su se početno kodirali.</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Brzina: FLAC je asimetričan tako da favorizira brzinu dekodiranja. Dekodiranje zahtijeva samo aritmetiku cijelih brojeva (engl. integer).</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Sklopovska podrška: FLAC format podržava većina modernih uređaja od pametnih telefona (android 3.1+), linija pa do radio uređaja u automobilima.</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Fleksibilni metapodaci: FLAC format podržava oznake (engl. tag), naslovne slike glazbenog albuma, tablice za pretraživanje (engl. seek table) i „cue tablice“.</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Mogućnost pretraživanja (engl. Seekable): zbog toga je FLAC pogodan i za korištenje u programima za uređivanje audio datoteka.</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Prenositi na zahtjev (engl. Streamable): svaki FLAC okvir sadrži dovoljno podataka za dekodiranje tog okvira. FLAC koristi kodove za sinkronizaciju i CRC-ove koji, uz okvire, omogućuju dekodiranje sa sredine toka s minimalnim kašnjenjem.</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Pogodan za arhiviranje: FLAC je lossless format te ako u budućnosti bude bilo potrebe za pretvaranjem podataka u drugi format svi podaci će biti sačuvani. Uz CRC-ove okvira i MD5 potpis, FLAC nudi i opciju provjere kodiranja tako da paralelno s procesom kodiranjem dekodira kodirani tok podataka i uspoređuje rezultat s originalnim podacima, prekidajući kodiranje u slučaju pogreške</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Pogodan za presnimavanje na CD: FLAC ima blok metapodataka namijenjen za „cue tablicu“ u kojoj se nalazi popis audio datoteka na CD-u s točnim početnim i krajnjim točkama, tako omogućujući identičnu replikaciju podataka s CD-a.</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Otporan na greške: zbog načina na koji su sastavljeni okviri FLAC formata, pogreške toka su ograničene tako da prave štetu samo okviru u kojem su se dogodile – desetak milisekundi.</font>

<font 11.0pt/inherit;;inherit;;inherit>Kroz cijeli seminar će biti analizirana pjesma Motherboard grupe Daft Punk, to je 10. pjesma po redu na albumu Random Access Memories iz 2013. godine.</font>

Kodiranje FLAC formata

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Kodiranje se izvodi u četiri koraka.</font>

Rastavljanje podataka na blokove (engl. Blocking)

<font 11pt/Calibri,sans-serif;;inherit;;inherit>U FLAC formatu razlikujemo blokove i okvire, blokovi se odnose na nekodirane audio podatke (engl. raw) koji služe kao ulaz u enkoder, dok se okviri odnose na kodirane podatke.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Blok je jedan ili više audio uzoraka u više kanala. Uz blokove imamo i podblokove (engl. subblock) koji sadrže jedan ili više audio uzoraka u jednom kanalu. Blok sadrži po jedan podblok po kanalu, a svi podblokovi imaju jednak broj uzoraka. Veličina bloka je broj uzoraka u bilo kojem podbloku nekog bloka.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Okvir (engl. frame) se sastoji od zaglavlja okvira i jednog ili više podokvira (engl. subframe), dok podokvir sadrži zaglavlje podokvira s informacijom o kodiranju i jedan ili više kodirani uzorak iz jednog kanala. Svi podokviri koji se nalaze u nekom okviru će sadržati isti broj uzoraka.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Veličina bloka nije predodređena nego se s obzirom na frekvenciju uzorkovanja, karakteristike spektra kroz vrijeme i slične parametre određuje optimalna veličina bloka. Iako FLAC podržava promjenjivu veličinu blokova u jednom toku podataka, no današnji enkoder koristi konstantnu veličinu bloka.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Veličina bloka ima veliki utjecaj na faktor sažimanja. Ako je blok premalen, datoteka će imati veliki broj okvira te će više bitova biti utrošeno na zapisivanje zaglavlja okvira. S druge strane, ako je blok prevelik, karakteristike signala mogu previše varirati te enkoder neće biti u stanju pronaći dobar prediktor (engl. predictor). Kako bi se pojednostavilo projektiranje enkodera i dekodera, FLAC ima određenu minimalnu veličinu bloka od 16 uzoraka i maksimalnu veličinu od 65535 uzorka.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Blokovi se prenose u korak predviđanja podblok po podblok. Svaki podblok se zasebno kodira u podokvir, i onda se podokviri konkateniraju u okvir. S obzirom da se svaki kanal zasebno kodira, moguće je da jedan kanal bude kodiran kao konstantni podokvir, a drugi kao linearno prediktivno kodirani (LPC, engl. Linear predictive code) podokvir.</font>

Dekorelacija kanala

<font 11pt/Calibri,sans-serif;;inherit;;inherit>U stereo tokovima, često postoji korelacija između lijevog i desnog kanala koja se može iskoristiti. Enkoder tada može iz okvira u okvir birati najbolji način kodiranja:</font>

  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Nezavisni (engl. independent): lijevi i desni kanali se nezavisno kodiraju</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Srednji-strana (engl. mid-side): enkoder stvara srednji (engl. mid) kanal iz prosjeka lijevog i desnog kanala dok iz njihove razlike, lijevi minus desni, stvara kanal sa strane (engl. side).</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Lijevi-strana (engl. left-side): kodiraju se lijevi kanal i kanal sa strane.</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Desni-strana (engl. right-side): kodiraju se desni kanal i kanal sa strane.</font>

Predviđanje

<font 11pt/Calibri,sans-serif;;inherit;;inherit>FLAC koristi četiri metode modeliranja ulaznog signala</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Doslovni prediktor (engl. verbatim): koristi se prediktor nultog reda. Predviđeni signal je nula, odnosno signal pogreške je originalni signal te nema sažimanja. To je osnovica prema kojoj se ostali prediktori mjere. Ako se na ulaz enkodera dovedu slučajni podaci, najvjerojatnije će se doslovni prediktor koristiti za svaki podblok. Kodirani podaci će se razlikovati od linearnog prediktora nultog reda jer su rezidualno kodirani.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Konstantni prediktor: Koristi se kada je podblok čisti DC signal, odnosno, signal konstantne vrijednosti za cijelo trajanje podbloka.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Konstantni linearni prediktor: FLAC koristi efikasne konstantne linearne prediktore kao i slični formati, no uz prediktore nultog do trećeg reda koji se koriste u formatu „shorten“ dodaje još i prediktor četvrtog reda. S obzirom da su prediktori konstante, potrebno je pohraniti samo red prediktora u sažeti tok. Signal pogreške se tada prosljeđuje rezidualnom enkoderu.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>FIR linearni prediktor: Za točnije modeliranje signala, FLAC podržava linearni FIR prediktor do 32 reda, no to usporava proces kodiranja. Enkoder koristi Levinson-Durbin metodu za izračun LPC koeficijenta iz koeficijenata autokorelacije. Koeficijenti se kvantiziraju prije rezidualnog kodiranja. FLAC dopušta da kvantizirani koeficijenti budu različiti u svakom podokviru. Enkoder procjenjuje optimalnu potrebnu preciznost s obzirom na veličinu bloka i dinamički opseg početnog signala.</font>

Rezidualno kodiranje (engl. Residual coding)

<font 11pt/Calibri,sans-serif;;inherit;;inherit>FLAC definira dvije metode kodiranja signala pogreške iz faze predviđanja. Signal pogreške se kodira koristeći Rice kodove na jedan od sljedeća dva načina</font>

  1. <font 11pt/Calibri,sans-serif;;inherit;;inherit>Enkoder procjenjuje jedan Rice parametar s obzirom na varijancu signala pogreške i kodira cijeli signal Rice kodovima prema tom parametru.</font>
  2. <font 11pt/Calibri,sans-serif;;inherit;;inherit>Signal pogreške se podijeli na nekoliko dijelova jednakih veličina te se za svaki dio kodira sa svojim Rice parametrom koji se temelji na srednjoj vrijednosti tog dijela.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>FLAC format ima rezervirana polja i za druge metode kodiranja, na primjer, Huffman kodiranje, LOCO-I i purcrunch.</font>

Format

<font 11pt/Calibri,sans-serif;;inherit;;inherit>FLAC u sebi ne sadrži informaciju o verziji formata, ali sadrži rezerviranog prostora na nekim mjestima. Buduće verzije formata moći će koristiti ta rezervirana mjesta bez da utječu na format starijih tokova. Stariji dekoderi mogu prekinuti proces dekodiranja ili preskočiti dio informacija ako je datoteka kodirana novijim metodama. Osim rezerviranog prostora, definirana su i mjesta u koje se ne smije upisivati uzorke jer služe za osiguravanje robusnosti sinkronizacijskog mehanizma.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Svi brojevi koji se koriste u FLAC toku su cijeli (engl. integer) – ne koriste se brojevi s pomičnim zarezom. Također, koristi se big-endian kodiranje i osim nekoliko iznimaka svi su brojevi bez predznaka (engl. unsigned).</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Na početku svakog FLAC toka nalazi se oznaka „fLaC“, odnosno u heksadekadskom sustavu 66 4C 61 43. Nakon toga se nalazi blok obaveznih metapodataka koji se naziva STREAMINFO blok, zatim ostali metapodaci te tek onda audio okviri.</font>

Pocetak FLAC datoteke u hex editoru

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 2 Početak FLAC datoteke u HxD programu</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>FLAC podržava do 128 vrsta blokova metapodataka, no samo je sljedećih sedam definirano:</font>

  1. <font 11pt/Calibri,sans-serif;;inherit;;inherit>STREAMINFO: Ovaj blok sadrži informacije o cijelom toku kao što su frekvencija uzorkovanja, broj kanala, ukupan broj uzoraka i slično. Uvijek mora biti prvi blok metapodataka u toku. Nakon njega se mogu, ali ne moraju nalaziti drugi blokovi metapodataka, ako dekoder ne „razumije“ neke metapodatke tada ih preskoči.</font>
  2. <font 11pt/Calibri,sans-serif;;inherit;;inherit>APPLICATION: ovaj blok koriste aplikacije trećih strana. Jedini obavezni blok je 32-bitni identifikator koji se dodjeljuje aplikacijama koje ga zatraže. Ostatak bloka definiraju registrirane aplikacije.</font>
  3. <font 11pt/Calibri,sans-serif;;inherit;;inherit>PADDING: ovaj blok omogućava proizvoljan broj nula, te ne sadrži informacije. Ovaj blok je koristan kada je unaprijed poznato da će se metapodaci uređivati nakon kodiranja. Korisnik tada može pri kodiranju rezervirati PADDING blok potrebne veličine kako bi se naknadno mogli dodavati metapodaci. Dodani metapodaci će prepisati PADDING blok umjesto da se podaci moraju ubacivati na točno mjesto u datoteci što bi zahtijevalo prepisivanje cijele datoteke.</font>
  4. <font 11pt/Calibri,sans-serif;;inherit;;inherit>SEEKTABLE: ovo je neobavezan blok u koji se pohranjuju točke za pretragu (engl. seek). Moguće je kretati se kroz cijeli FLAC tok i bez tablice za pretraživanje, ali će kašnjenje biti nepredvidivo s obzirom da se brzina podataka (engl. bitrate) razlikuje kroz tok. Dodavajući točke za pretragu to kašnjenje se može znatno smanjiti. Svaka točka zauzima 18 bajtova. U toku se smije nalaziti samo jedan SEEKTABLE blok, no on može sadržavati bilo koji broj točaka za pretragu. Postoji i posebno definirana točka koja služi za rezervaciju prostora (engl. placeholder) za točke koje će biti dodane u budućnosti.</font>
  5. <font 11pt/Calibri,sans-serif;;inherit;;inherit>VORBIS_COMMENT: ovaj blok služi za pohranu podataka u parovima ime_podatka=vrijednost koji su kodirani koristeći UTF-8. Ovaj blok se temelji na specifikaciji Vorbis komentara, ali ne sadrži zaglavlje. Također, ovo je jedini službeno podržani način upisivanja oznaka (engl. tag) u FLAC format. U toku se smije nalaziti samo jedan VORBIS_COMMENT blok. U nekoj literaturi se Vorbis komentari nazivaju FLAC oznake.</font>

VORBIS_COMMENT blok

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 3 VORBIS_COMMENT blok vidljiv je i „normalno“ čitljiv. Slika iz HxD programa.</font>

  1. <font 11pt/Calibri,sans-serif;;inherit;;inherit>CUESHEET: ovaj blok služi za pohranu informacija koje se mogu koristiti u cue tablici. Od posebne je važnosti pri pohrani i kopiranju CD-DA diskova jer sadrži podatke o točnim lokacijama audio datoteka na disku.</font>
  2. <font 11pt/Calibri,sans-serif;;inherit;;inherit>PICTURE: ovaj blok služi za pohranu slike koja se povezuje s određenom audio datotekom, najčešće se radi o naslovnoj slici glazbenog albuma. Moguće je imati više od jednog PICTURE bloka. Blok je tipa MIME, dok je opis kodiran s UTF-8 kao u ID3v2 te podržava povezivanje vanjskih slika putem URL-a. U bloku se nalaze i podaci o rezoluciji slike, dubini boje (engl. color depth), i veličini palete.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Audio podaci se sastoje od jednog ili više okvira. Svaki se okvir sastoji od zaglavlja koje sadrži kod za sinkronizaciju, informacije o okviru kao što su veličina bloka, frekvencija uzorkovanja, broj kanala i slično te 8-bitni CRC. U zaglavlju okvira se također nalazi ili broj uzorka prvog uzorka u okviru, ako je riječ o promjenjivoj veličini bloka u toku, ili broj okvira, ako je riječ o konstantnoj veličini bloka u toku. To omogućuje brzo pretraživanje (engl. seeking). Nakon zaglavlja okvira nalaze se podokviri, po jedan za svaki kanal, te se nakon njih dodaju nule do veličine koja je djeljiva s 8, odnosno na bajtove.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>S obzirom da je moguće da dekoder započne dekodiranje sa sredine toka, postoji metoda za određivanje početka okvira. Svaki okvir započinje s 14-bitnim kodom za sinkronizaciju koji se ne pojavljuje nigdje drugdje u zaglavlju okvira, no moguće je da se pojavi u zaglavlju podokvira pa se koriste još dvije metode potvrde točne sinkronizacije. Najprije se provjerava ako ostatak okvira ne sadrži nevažeće podatke te zatim dekoder generira 8-bitni CRC zaglavlja okvira te ga uspoređuje s CRC-om koji je pohranjen na kraju zaglavlja okvira. S obzirom da dekoder može započeti dekodiranje iz proizvoljnog okvira u toku, svaki okvir mora sadržavati osnovne informacije o toku jer je moguće da dekoder nema pristup STREAMINFO bloku metapodataka koji se nalazi na početku toka. Uzimajući u obzir da je zaglavlje okvira dodatna ponovljena informacija (engl. overhead), ono direktno utječe na faktor sažimanja. Da bi veličina zaglavlja okvira smanjila FLAC koristi pregledne tablice (engl. lookup table) za najkorištenije podatke.</font>

Metapodaci u exiftool programu

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 4 Metapodaci koji se mogu pronaći u datoteci koristeći exiftool program.</font>

Sažimanje podataka bez gubitka (engl. lossless)

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Za sažimanje FLAC datoteka koristi se libFLAC, knjižnicu referentnih enkodera i dekodera, i sučelje za metapodatke. libFLAC ima 9 razina sažimanja koje se kreću od level-0 koji je najbrži, ali sažeta datoteka zauzima i najviše prostora (oko 70% nesažete datoteke), pa do level-8 koji je najsporiji, ali je veličina sažete datoteke najmanja (oko 60% nesažete datoteke). Sažete datoteke, bez obzira na razinu sažimanja, uvijek sadrže sve informacije kao i nesažeta datoteka te za njih kažemo da su lossless. Iako se pri procesu sažimanja može primijetiti da za bolje sažimanje treba više vremena, dekodiranje datoteka traje približno jednako bez obzira na razinu sažimanja.</font>

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Tablica 1 Usporedba veličina datoteka s obzirom na razinu sažimanja</font>


<font 11pt/Calibri,sans-serif;;black;;inherit>Format</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>Veličina [KB]</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>Postotak nesažete datoteke [%]</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>Nesažeto</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>59228</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>100</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>Level-0</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>36064</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>60.89</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>Level-1</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>35650</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>60.19</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>Level-2</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>35480</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>59.90</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>Level-3</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>35061</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>59.20</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>Level-4</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>34657</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>58.51</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>Level-5</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>34586</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>58.39</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>Level-6</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>34535</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>58.31</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>Level-7</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>34419</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>58.11</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>Level-8</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>34407</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>58.09</font>

Usporedba audio formata

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Audio formati se dijele na tri skupine:</font>

  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Nesažeti lossless formati (engl. uncompressed lossless)</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Sažeti lossless formati (engl. compressed lossless)</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Sažeti formati s gubitcima (compressed lossy)</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Brzina prijenosa podataka (engl. bitrate) je definirana kao broj bitova koji se prenesu u jedinici vremena. Kada je riječ o audio datotekama brzina prijenosa podataka se iskazuje u kilobitima po sekundi – kbps. Pri usporedbi dviju audio datoteka, datoteka s većom brzinom prijenosa podataka će biti bolje kvalitete.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Nesažeti lossless formati sadržavaju sve informacije originalne snimke audio signala. S obzirom da se tišini pridjeljuje isti broj bitova kao i zvuku, nesažete lossless datoteke su velike. Primjeri ove vrste formata su:</font>

  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Waveform Audio File Format – WAV</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Audio Interchange File Format – AIFF</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Sažeti lossless formati također sadržavaju sve informacije originalne snimke audio signala no u ovom slučaju se tišini pridaje vrlo malo bitova po sekundi i zvuk se sažima što rezultira u datoteci koja je gotovo upola manja od nesažete datoteke. S obzirom da i nesažeti i sažeti lossless formati sadrže sve informacije originalne snimke, moguće je transkodirati iz jednog u drugi i obrnuto bez gubitka podataka. Primjeri sažetih lossless formata su:</font>

  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Free Lossless Audio Codec – FLAC</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Apple Lossless Audio Codec – ALAC</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Monkey's Audio – APE</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Lossy formati su uvijek sažeti. S obzirom da se sažimanjem nepovratno gubi dio podataka, lossy datoteke su uvijek manje od sažetih i nesažetih lossless datoteka. Najčešće se uklanjaju podaci koji odgovaraju višim frekvencijama koje ljudi ne mogu čuti. Lossy formati se ne smiju (iako je to moguće) transkodirati u bilo koji format, bilo da je lossless, neki drugi lossy format ili čak isti lossy format. Ako se lossy transkodira u lossless, nova datoteka će sadržavati samo podatke koji su se nalazili u lossy formatu, a ne podatke originalne snimke, dok ako se lossy transkodira u lossy biti će izgubljeno još više podataka originalne snimke.</font>

  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Primjeri lossy formata su:</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>MPEG Layer 3 Audio – MP3</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Advanced Audio Encoding – AAC</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Windows Media Audio – WMA</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Dolby Digital Audio Codec 3 – AC3</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>DTS Coherent Acoustic Codec – DTS</font>

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Tablica 2 Usporedba veličina datoteka različitih audio formata</font>


<font 11pt/Calibri,sans-serif;;black;;inherit>Format</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>Veličina [KB]</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>WAV</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>59190</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>FLAC level-5</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>34586</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>MP3 320 (CBR)</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>13684</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>MP3 256 (CBR)</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>11014</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>MP3 192 (CBR)</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>8345</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>MP3 128 (CBR)</font>

<font 11pt/Calibri,sans-serif;;black;;inherit>5675</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Transparentnost (engl. Transparency) je termin koji se koristi za opisivanje kvalitete audio zapisa lossy formata. Audio zapis se smatra transparentnim ako prosječni slušatelj ne može razlikovati lossy i lossless datoteku istog audio zapisa samo slušajući oba zapisa bez da zna koji je koji. Za većinu ljudi, MP3 192kbps (CBR) se smatra transparentnim. CBR (engl. Constant BitRate) znači da je brzina prijenosa konstantna kroz cijelu datoteku.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Transkodirati datoteku znači konvertirati je iz jednog u drugi format. Kod transkodiranja audio formata razlikujemo dobro i loše transkodiranje.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Dobro transkodiranje je ono tijekom čijeg se procesa datoteka nikada ne konvertira u lossy format ili je datoteka samo u zadnjem koraku konvertira u lossy format. Primjeri dobrih transkodiranja:</font>

  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Nesažeti lossless → sažeti lossless</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Sažeti lossless → nesažeti lossless</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Sažeti lossless → sažeti lossless</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Nesažeti lossless → lossy</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Sažeti lossless →lossy</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Loše transkodiranje je ono tijekom kojega je datoteka konvertirana jedan ili više puta u lossy format ili je datoteka konvertirana iz lossy u lossless format. Primjeri loših transkodiranja:</font>

  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Lossy format više brzine prijenosa podataka → lossy format niže brzine prijenosa podataka</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Lossy format iste brzine prijenosa podataka → lossy format iste brzine prijenosa podataka</font>
  • <font 11pt/Calibri,sans-serif;;inherit;;inherit>Lossy format → lossless format</font>

Analiza spektra audio formata

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Spektar audio signala je način prikaza podataka o frekvencijama tog signala. Analizirajući spektre audio signala moguće je zaključiti radi li se o lossless ili lossy formatu te ako je lossy je moguće zaključiti i točan format i brzinu prijenosa podataka s obzirom da različiti formati imaju različite gornje granične frekvencije. Spektrogram je prikaz frekvencija signala u vremenu.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Za transkodiranje je korišten program dBpoweramp koji za MP3 transkodiranje ima implementiran LAME enkoder. Spektrogrami i spektri su analizirani pomoću programa Audacity.</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Na slikama 5. i 6. nalaze se spektrogram i spektar FLAC datoteke. S obzirom da je datoteka uzorkovana frekvencijom 44.1 kHz, prema Nyquistovom teoremu se filtriraju podaci niskopropusnim filtrom granične frekvencije 22050 Hz, te to vidimo i na grafovima. Ponekad lossless podaci mogu imati graničnu frekvenciju od 21.5 kHz ili postepeno smanjenje amplitude (engl. fade out) od 19 kHz prema višim frekvencijama.</font>

Spektrogram FLAC datoteke<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 5 Spektrogram FLAC datoteke</font>

Spektar FLAC datoteke

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 6 Spektar FLAC datoteke</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Na slikama 7. i 8. nalaze se spektrogram i spektar WAV datoteke, uspoređujući te grafove s grafovima na slikama 5. i 6. ne primjećujemo nikakve razlike jer su oba formata lossless i sadrže sve informacije o zapisu.</font>

Spektrogram WAV<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 7 Spektrogram WAV datoteke</font>

:racfor_wiki:datoteke_i_datotecni_sustavi:flac8spektarwavdatoteke.png

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 8 Spektar WAV datoteke</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Na slikama 9. i 10. se nalaze spektrogram i spektar MP3 320 kbps (CBR) datoteke, uspoređujući ih sa grafovima lossless formata možemo odmah uočiti da je granična frekvencija pomaknuta na 20.5 kHz. Uz to kod MP3 formata može se primijetiti i „stepenica“ na 16 kHz, iznad koje se uklanjaju i tiši zvukovi radi uštede memorijskog prostora.</font>

:racfor_wiki:datoteke_i_datotecni_sustavi:flac9spektrogrammp3320.png

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 9 Spektrogram MP3 320 kbps (CBR) datoteke</font>

:racfor_wiki:datoteke_i_datotecni_sustavi:flac10spektarmp3320.png

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 10 Spektar MP3 320 kbps (CBR) datoteke</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Na slikama 11. i 12. se nalaze spektrogram i spektar MP3 192 kbps (CBR) datoteke. Pri ovoj brzini prijenosa podataka primjećujemo da je granična frekvencija 19.5 kHz, te je „stepenica“ na 16 kHz još izraženija nego na slikama 9. i 10.</font>

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 11 Spektrogram MP3 192 kbps (CBR) datoteke</font>

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 12 Spektar MP3 192 kbps (CBR) datoteke</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Na slikama 13. i 14. nalaze se spektrogram i spektar FLAC datoteke koja je dobivena transkodiranjem iz datoteke čiji su grafovi na slikama 11. i 12. Ova datoteka ima ekstenziju .flac i zauzima 32.3 MB, dok je MP3 192 kbps (CBR) datoteka zauzimala 8.14 MB, ali iz grafova vidimo da ovo nije lossless datoteka i da ima karakterističnu „stepenicu“ na 16 kHz od MP3 formata i da joj je granična frekvencija 19.5 kHz iako je uzorkovana s 44.1 kHz te možemo zaključiti da je ovo loše transkodiranje.</font>

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 13 Spektrogram FLAC datoteke koja je dobivena transkodiranjem iz formata MP3 192 kbps (CBR)</font>

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 14 Spektar FLAC datoteke koja je dobivena transkodiranjem iz formata MP3 192 kbps (CBR)</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Na slici 15. nalazi se dio metapodataka datoteke čiji je zapis ponovno uzorkovan dvostrukom frekvencijom (engl. upsample), odnosno frekvencijom 88.2 kHz. Na slikama 16. i 17. primjećujemo da je granična frekvencija samo 22050 Hz, a ne 44100 Hz kako bi trebala biti da je originalni zapis bio uzorkovan frekvencijom uzorkovanja od 88.2 kHz.</font>

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 15 Metapodaci iz exiftoola – primijetiti Sample Rate:88200</font>

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 16 Spektrogram FLAC datoteke ponovno uzorkovanog zapisa dvostrukom frekvencijom</font>

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 17 Spektar FLAC datoteke ponovno uzorkovanog zapisa dvostrukom frekvencijom</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Na slikama 18. i 19. nalaze se spektrogram i spektar skladbe Fur Elise Ludwiga Van Beethovena. Na prvi pogled moglo bi se doći do pogrešnog zaključka da ovo nije lossless datoteka, iako ona to jest što možemo primijetiti prema tihom bijelom šumu na visokim frekvencijama (plave točkice). Ovakav izgled spektrograma i spektra je normalan za klasičnu glazbu zbog frekvencija koje reproduciraju klasična glazbala.</font>

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 18 Spektrogram FLAC datoteke skladbe Fur Elise</font>

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 19 Spektar FLAC datoteke skladbe Fur Elise</font>

<font 11pt/Calibri,sans-serif;;inherit;;inherit>Na slici 20. se nalazi spektrogram FLAC datoteke pjesme The Razors Edge grupe ACDC iz 1990. godine. Na slici možemo primijetiti liniju iznad 15 kHz, no u ovom slučaju iznad te linije nema brisanja tihih zvukova kao što smo mogli primijetiti na spektrogramu MP3 datoteka. Na slici 21. je pobliže prikazana ta linija te uočavamo da se nalazi oko frekvencije 15625 Hz. Nekada su se u studijima za snimanje nalazili CRT monitori koji su „zujali“ upravo na toj frekvenciji. To nije oznaka lošeg transkodiranja niti lossy signala.</font>

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 20 Spektrogram FLAC datoteke pjesme The Razors Edge grupe ACDC iz 1990. godine</font>

<font 9pt/Calibri,sans-serif;;#44546a;;inherit>Slika 21 Približeni spektrogram FLAC datoteke pjesme The Razors Edge grupe ACDC iz 1990. godine oko frekvencije 15625 Hz</font>

Zaključak

FLAC je lossless format koji, iako je sažet, sadržava sve podatke originalne snimke audio signala. Uz to, može sadržavati i razne metapodatke što ga čini izvrsnim formatom za arhiviranje audio datoteka. Iako proces kodiranja ovisno o faktoru sažimanja može biti relativno spor, dekodiranje datoteke je brzo te gotovo da ne ovisi o razini sažimanja. Analizom spektra moguće je prepoznati radi li se o „pravoj“ FLAC datoteci koja sadrži sve podatke originalne snimke ili o lošem transkodiranju te u kojem je formatu ta datoteka bila prije.

Izvori

<font 11pt/Calibri,sans-serif;;inherit;;inherit>[1] Službena stranica FLAC formata:</font>https://xiph.org/flac/

[2] Teorija za pripremu za intervju za privatni tracker za audio torrente:https://opentrackers.org/whatinterviewprep.com/index.html

[3] Pjesma „10 – Motherboard.flac“ s albuma Daft Punk - Random Access Memories (2013)

[4] Skladba „13 Für Elise.flac“ s albuma Ludwig van Beethoven - 25 Beethoven Favorites (1996)

[5] Pjesma „04 - The Razors Edge.flac“ s albuma ACDC - The Razors Edge (1990)

racfor_wiki/datoteke_i_datotecni_sustavi/analiza_flac_formata.txt · Zadnja izmjena: 2023/06/19 18:17 (vanjsko uređivanje)
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0