Ingyenes veszteségmentes audiokodek | |
---|---|
Típusú | audio kodek , hangfájl formátum |
Fejlesztő | Josh Coalson, a Xiph.Org Alapítvány |
Beírva | C [2] |
Operációs rendszer | platformközi |
Első kiadás | 2001. július 20 |
legújabb verzió |
|
Olvasható fájlformátumok | Ingyenes veszteségmentes audiokodek |
Generált fájlformátumok | Ingyenes veszteségmentes audiokodek |
Engedély | GNU GPL ; BSD (alkatrészek) |
Weboldal | xiph.org/flac |
Médiafájlok a Wikimedia Commons oldalon |
FLAC | |
---|---|
Kiterjesztés | .flac |
MIME típusú | audio/xflac |
Fejlesztő | Xiph.Org [3] |
közzétett | 2001. július 20. [4] |
Formátum típusa | hang- |
Szabvány(ok) | Leírás |
Weboldal | xiph.org/flac |
Médiafájlok a Wikimedia Commons oldalon |
A FLAC ( angolul Free Lossless Audio Codec ) egy ingyenes kodek , amelyet az audio adatok veszteség nélküli tömörítésére terveztek .
Ellentétben a veszteséges tömörítést biztosító audiokodekekkel ( MP3 , AAC , WMA , Ogg Vorbis , Opus ), a FLAC, mint bármely más veszteségmentes kodek, nem távolít el semmilyen információt a hangfolyamból, és kiváló minőségű zenehallgatásra is alkalmas. berendezésekhez és hanggyűjtemény archiválásához.
Manapság a FLAC formátumot számos audioalkalmazás, hordozható audiolejátszó és speciális audiorendszer támogatja, és sokféle hardvermegvalósítással rendelkezik [5]
Az áramlás fő részei a következők:
Az első négy bájt a FLAC adatfolyamot azonosítja. Az őket követő metaadatok a folyamról tartalmaznak információkat, majd a tömörített hangadatokat.
2010. 10. 03-tól a következő blokktípusok vannak meghatározva a libflac-1.2.1-ben: StreamInfo, Padding, Application, SeekTable, VorbisComment, CueSheet, Picture, Unknown. A metaadatblokkok bármilyen méretűek lehetnek, nem nehéz új blokkokat hozzáadni. A dekóder kihagyja a metaadat ismeretlen blokkjait.
A STREAMINFO blokk szükséges. Olyan adatokat tartalmaz, amelyek lehetővé teszik a dekódoló számára a pufferek , a mintavételezési sebesség , a csatornák számának, a mintánkénti bitek és a minták számának beállítását. A tömörítetlen hangadatok MD5 aláírása is a blokkba kerül . Ez hasznos a teljes adatfolyam ellenőrzéséhez az átvitel után.
Más blokkok helyfoglalásra, keresési pontok táblázatainak, címkék , audio CD-elrendezések listájának, valamint konkrét alkalmazásokhoz szükséges adatok tárolására szolgálnak. Az alábbiakban felsoroljuk a PADDING blokkok vagy keresési pontok hozzáadásának lehetőségeit. A FLAC-nak nincs szüksége keresési pontokra, de jelentősen megnövelhetik a hozzáférési sebességet, és hangszerkesztőkben is használhatók címkézésre.
Az építőelem-struktúrák pontos leírása a libflac könyvtár format.h fájljában található, amely a format oldalról érhető el.
A metaadatokat a tömörített hangadatok követik. A metaadatok és a hangadatok nincsenek átlapolva. A legtöbb kodekhez hasonlóan a FLAC is blokkokra osztja a bemeneti adatfolyamot, és egymástól függetlenül kódolja azokat. A blokk keretbe kerül, és hozzáadódik az adatfolyamhoz. Az alap kódoló állandó méretű blokkokat használ a teljes adatfolyamhoz, de a formátum lehetővé teszi különböző hosszúságú blokkok használatát az adatfolyamban.
A blokk mérete nagyon fontos paraméter a kódolásnál. Ha túl kicsi, akkor túl sok keretfejléc lesz az adatfolyamban, ami csökkenti a tömörítési szintet. Ha a méret nagy, akkor a kódoló nem tud hatékony tömörítési modellt választani. A modellezési folyamat megértése segít bizonyos típusú bemenetek tömörítési szintjének növelésében. Jellemzően, ha 44,1 kHz-es mintavételezési frekvenciájú audioadatokon lineáris előrejelzést használunk, az optimális blokkméret 2-6 ezer minta tartományban van.
Ha sztereó audio adatot adnak be, akkor az átmehet a csatornák közötti dekorációs szakaszon. A jobb és bal csatornákat a következő képletek alapján konvertáljuk át átlagra és különbségre: átlag = (bal + jobb) / 2, különbség = bal - jobb. A veszteséges kódolókban használt közös sztereóval ellentétben ez a folyamat nem okoz veszteséget a veszteségmentes kódolásban. Audio CD-adatok esetén ez általában a tömörítési szint jelentős növekedését eredményezi.
A következő lépésben a kódoló egy olyan funkcióval próbálja közelíteni a jelet, hogy az eredetiből való kivonás után kapott eredményt (különbségnek, maradéknak, hibának nevezzük) minimális bitszámmal kódolható legyen. A funkció paramétereit is rögzíteni kell, így nem foglalhatnak sok helyet. A FLAC két módszert használ a közelítések generálására:
Először is, a konstans polinom előrejelzés (-l 0) lényegesen gyorsabb, de kevésbé pontos, mint az LPC. Minél magasabb az LPC sorrend, annál lassabb, de jobb lesz a modell. A sorrend növekedésével azonban a nyereség egyre kevésbé lesz jelentős. Egy bizonyos ponton (általában 9 körül) a kódoló eljárása a legjobb sorrend meghatározására meghiúsul, és a fogadott keretek mérete megnő. Ennek kiküszöbölésére kimerítő keresés használható, ami jelentősen megnöveli a kódolási időt.
Másodszor, a konstans prediktorok paraméterei három bittel írhatók le, míg az LPC modell paraméterei a mintánkénti bitek számától és az LPC sorrendtől függenek. Ez azt jelenti, hogy a keretfejléc mérete a választott módszertől és sorrendtől függ, és befolyásolhatja az optimális blokkméretet.
A modell beillesztésekor a kódoló kivonja a közelítést az eredetiből, hogy maradék (hibás) jelet kapjon, amelyet azután veszteségmentesen kódol. Ez azt a tényt használja fel, hogy a különbségjel általában Laplace-eloszlású , és van egy sor entrópiakód, úgynevezett Rice-kód, amely lehetővé teszi ezeknek a jeleknek a hatékony és gyors kódolását szótár használata nélkül.
A rizskódolás abból áll, hogy egyetlen paramétert keresünk, amely megfelel a jel eloszlásának, majd ezt használja a kódok összeállításához. Az eloszlás megváltozásakor az optimális paraméter is megváltozik, így van egy módszer, amely lehetővé teszi, hogy szükség esetén újraszámítsuk. A maradék kontextusokra vagy szakaszokra bontható, mindegyik saját Rice paraméterrel. A FLAC lehetővé teszi a felosztás módjának megadását. A többi 2n részre osztható.
Az audio keretet egy fejléc előzi meg, amely szinkronkóddal kezdődik, és tartalmazza a dekódernek az adatfolyam lejátszásához szükséges minimális információt. Ide írjuk a blokk- vagy mintaszámot és magának a fejlécnek a nyolcbites ellenőrző összegét is. A szinkronkód, a keretfejléc CRC és a blokk/mintaszám lehetővé teszi az újraindítást és a keresést még keresési pontok hiányában is. A keret végére a tizenhat bites ellenőrző összeg kerül felírásra. Ha a mögöttes dekóder hibát észlel, akkor némítási blokk jön létre.
Az alapvető metaadattípusok támogatása érdekében a központi dekóder képes kihagyni az ID3v1 és ID3v2 címkéket , így szabadon hozzáadhatók. Az ID3v2 címkéket az "fLaC" marker elé, az ID3v1 címkéket pedig a fájl végére kell helyezni.
A FLAC kódolónak vannak módosításai: továbbfejlesztett FLAC kódoló , Flake és FLACCL.
2003. január 29-én a Xiphophorus (jelenleg Xiph.Org Foundation néven) bejelentette a FLAC formátum felvételét a termékcsaládjába: Ogg Vorbis , Theora és Speex [6] .
Xiph.Org | |
---|---|
Project Ogg | |
Egyéb projektek |
|
Lásd még |
|
Hangtömörítés | |
---|---|
Kodekek | |
Beszéd/hang |
|
Veszteségmentes |
|
Szabványok és formátumok | |
médiatárolók | |
---|---|
Videó/Hang | |
Hang | |
Zene |
|
Raszter | |
Vektor | |
Összetett |