Gratis förlustfri ljud-codec | |
---|---|
Sorts | audio codec , ljudfilformat |
Utvecklaren | Josh Coalson, Xiph.Org Foundation |
Skrivet i | C [2] |
Operativ system | plattformsoberoende |
Första upplagan | 20 juli 2001 |
senaste versionen |
|
Läsbara filformat | Gratis förlustfri ljudkodek |
Genererade filformat | Gratis förlustfri ljudkodek |
Licens | GNU GPL ; BSD (delar) |
Hemsida | xiph.org/flac |
Mediafiler på Wikimedia Commons |
FLAC | |
---|---|
Förlängning | .flac |
MIME -typ | audio/xflac |
Utvecklaren | Xiph.Org [3] |
publiceras | 20 juli 2001 [4] |
Formattyp | audio |
Standard(er) | Specifikation |
Hemsida | xiph.org/flac |
Mediafiler på Wikimedia Commons |
FLAC ( engelsk Free Lossless Audio Codec ) är en gratis codec designad för att komprimera ljuddata utan förlust .
Till skillnad från ljudkodekar som ger förlustkomprimering ( MP3 , AAC , WMA , Ogg Vorbis , Opus ), tar FLAC, precis som alla andra förlustfria codec inte bort någon information från ljudströmmen och är lämplig både för att lyssna på musik på högkvalitativt ljud utrustning och och för att arkivera en ljudsamling.
Idag stöds FLAC-formatet av många ljudapplikationer, bärbara ljudspelare och specialiserade ljudsystem och har ett brett utbud av hårdvaruimplementationer [5]
Huvuddelarna av flödet är:
De första fyra byten identifierar FLAC-strömmen. Metadata som följer dem innehåller information om strömmen, följt av den komprimerade ljuddatan.
Från och med 03/10/2010 är följande blocktyper definierade i libflac-1.2.1: StreamInfo, Padding, Application, SeekTable, VorbisComment, CueSheet, Picture, Unknown. Metadatablock kan vara av vilken storlek som helst, det är inte svårt att lägga till nya block. Avkodaren hoppar över okända block av metadata.
STREAMINFO-blocket krävs. Den innehåller data som gör att avkodaren kan justera buffertar , samplingshastighet , antal kanaler, antal bitar per sampel och antal sampel. MD5 -signaturen för den okomprimerade ljuddatan skrivs också till blocket . Detta är användbart för att kontrollera hela strömmen efter att den har sänts.
Andra block är utformade för att reservera utrymme, lagra tabeller över sökpunkter, taggar , en lista med ljud-CD-layouter, samt data för specifika applikationer. Alternativ för att lägga till PADDING-block eller sökpunkter listas nedan. FLAC behöver inga uppslagspunkter, men de kan öka åtkomsthastigheten avsevärt och kan även användas för taggning i ljudredigerare.
En exakt beskrivning av byggblocksstrukturerna finns i format.h-filen i libflac-biblioteket, tillgänglig från formatwebbplatsen.
Metadata följs av komprimerade ljuddata. Metadata och ljuddata interfolieras inte. Liksom de flesta codecs delar FLAC ingångsströmmen i block och kodar dem oberoende. Blocket ramas in och läggs till strömmen. Grundkodaren använder block av konstant storlek för hela strömmen, men formatet tillåter block av olika längd i strömmen.
Blockstorleken är en mycket viktig parameter för kodning. Om den är för liten kommer det att finnas för många ramrubriker i strömmen, vilket kommer att minska komprimeringsnivån. Om storleken är stor, kommer kodaren inte att kunna välja en effektiv komprimeringsmodell. Att förstå modelleringsprocessen hjälper till att öka komprimeringsnivån för vissa typer av indata. Vanligtvis, när man använder linjär prediktion på ljuddata med en samplingshastighet på 44,1 kHz, ligger den optimala blockstorleken i intervallet 2-6 tusen sampel.
Om stereoljuddata matas in kan den gå igenom interkanalsdekorrelationsstadiet. Höger och vänster kanal omvandlas till medelvärde och skillnad enligt formlerna: medelvärde = (vänster + höger) / 2, skillnad = vänster - höger. Till skillnad från gemensam stereo som används i förlustfria kodare, resulterar denna process inte i förlust i förlustfri kodning. För ljud-CD-data resulterar detta vanligtvis i en betydande ökning av komprimeringsnivån.
I nästa steg försöker kodaren att approximera signalen med en sådan funktion att resultatet som erhålls efter att ha subtraherat det från originalet (kallat skillnaden, residual, fel) kan kodas med ett minimum antal bitar. Funktionsparametrar bör också registreras, så de bör inte ta mycket plats. FLAC använder två metoder för att generera approximationer:
För det första är konstant polynomprediktion (-l 0) betydligt snabbare men mindre exakt än LPC. Ju högre LPC-ordning, desto långsammare men bättre blir modellen. Men när ordern ökar kommer vinsten att bli mindre och mindre betydande. Vid någon tidpunkt (vanligtvis runt 9) börjar kodarens procedur för att bestämma den bästa ordningen misslyckas och storleken på de mottagna ramarna ökar. För att övervinna detta kan en uttömmande sökning användas, vilket kommer att leda till en betydande ökning av kodningstiden.
För det andra kan parametrarna för konstantprediktorer beskrivas med tre bitar, medan parametrarna för LPC-modellen beror på antalet bitar per sampel och LPC-ordningen. Detta innebär att storleken på ramhuvudet beror på vald metod och ordning och kan påverka den optimala blockstorleken.
När modellen är monterad subtraherar kodaren approximationen från originalet för att få en kvarvarande (felaktig) signal, som sedan kodas förlustfritt. Detta använder det faktum att skillnadssignalen vanligtvis har en Laplace-fördelning och det finns en uppsättning entropikoder, kallade Rice-koder, som gör att du effektivt och snabbt kan koda dessa signaler utan att använda en ordbok.
Riskodning består av att hitta en enda parameter som motsvarar fördelningen av signalen och sedan använda den för att komponera koder. När fördelningen ändras ändras även den optimala parametern, så det finns en metod som låter dig räkna om den vid behov. Resten kan delas upp i sammanhang eller avsnitt, var och en med sin egen Rice-parameter. FLAC låter dig specificera hur delning ska göras. Resten kan delas upp i 2n sektioner.
En ljudram föregås av en rubrik som börjar med en synkkod och innehåller den minsta information som en avkodare behöver för att spela upp strömmen. Block- eller provnumret och åttabitars kontrollsumman för själva rubriken skrivs också här. Synkroniseringskoden, ramhuvudet CRC och block-/provnumret möjliggör omtidning och sökning även i frånvaro av sökpunkter. I slutet av ramen skrivs dess 16-bitars kontrollsumma. Om den underliggande avkodaren upptäcker ett fel kommer ett tystnadsblock att genereras.
För att stödja grundläggande metadatatyper kan kärnavkodaren hoppa över ID3v1- och ID3v2-taggar så att de kan läggas till fritt. ID3v2-taggar måste placeras före "fLaC"-markören och ID3v1-taggar måste placeras i slutet av filen.
Det finns modifieringar av FLAC-kodaren: Förbättrad FLAC-kodare , Flake och FLACCL.
Den 29 januari 2003 meddelade Xiphophorus (nu kallad Xiph.Org Foundation) införandet av FLAC-formatet i deras produktlinje: Ogg Vorbis , Theora och Speex [6] .
Xiph.Org | |
---|---|
Projekt Ogg | |
Andra projekt |
|
se även |
|
Ljudkomprimering | |
---|---|
Codecs | |
Tal/röst | |
Förlust mindre |
|
Standarder och format | |
mediebehållare | |
---|---|
Video/ljud | |
Audio | |
musik |
|
Raster | |
Vektor | |
Komplex |