FLAC
FLAC (inglizcha: Free Lossless Audio Codec) - bu hech qanday yo'qotishlarsiz audio ma'lumotlarini siqish uchun mo'ljallangan bepul audio kodek hisoblanadi.
FLAC - audiokodek | |
FLAC 1.4.0 versiyasining ekran tasviri | |
Muallif | Xiph.Org Foundation |
---|---|
Ishlab chiquvchi | Josh Coalson |
tashkil topdi: | 20-iyul, 2001 |
So‘nggi versiyasi | |
Platforma | Kross-platforma |
Format(lar)i | Free Lossless Audio Codec |
Janr | Audiokodek |
Litsenziya | GNU GPL; BSD(Parts) |
Vebsayt: | Xiph.org/flac |
Dasturlash tili: | C |
Audio ma'lumotlarini yo'qotishlar bilan siquvchi audio kodeklardan (MP3, AAC, WMA, Ogg Vorbis, Opus) farqli o'laroq, FLAC, audio oqimdan hech qanday ma'lumotlarni olib tashlamaydi, ma'lumotlar yo'qolmaydi va yuqori sifatli audio ma'lumotlarni saqlab beradi.
Bugungi kunda FLAC formati ko'plab audio ilovalar, portativ audio playerlar va ixtisoslashtirilgan audio tizimlar tomonidan qo'llab-quvvatlanadi va turli xil apparatlarda qo'llash mumkin[1].
Format ma'lumotlari
tahrirAudio oqim
tahrirUshbu formatning asosiy qismlari quyidagilardan iborat:
- To'rt baytdan iborat "
fLaC
" qatori - STREAMINFO metadata bloki
- Boshqa ixtiyoriy metadata bloklari
- Audiofreymlar
Birinchi to'rt bayt FLAC oqimini aniqlaydi. Keyingi baytlar metadata oqim haqidagi ma'lumotlarni, keyingilari esa siqilgan audio ma'lumotlarini o'z ichiga oladi.
Metadata
tahrir03/10/2010 holatiga ko'ra, libflac-1.2.1 quyidagi blok turlarini belgilaydi: StreamInfo, Padding, Application, SeekTable, VorbisComment, CueSheet, Picture, Unknown. Metadata bloklari har qanday hajmda bo'lishi mumkin, yangi bloklarni qo'shish qiyin emas. Dekoder metama'lumotlarning noma'lum bloklarini o'tkazib yuboradi.
STREAMINFO bloki bo'lishi shart. U dekoderga buferlarni, namuna tezligini, kanallar sonini, namunadagi bitlar sonini va namunalar sonini sozlash imkonini beruvchi ma'lumotlarni o'z ichiga oladi. Siqilmagan audio ma'lumotlarning MD5 imzosi ham blokga yoziladi. Bu oqim uzatilgandan keyin butun oqimni tekshirish uchun foydalidir.
Boshqa bloklar bo'sh joyni zaxiralash, qidirish nuqtalari jadvallarini, teglarni, audio CD maketlari ro'yxatini, shuningdek, ma'lum ilovalar uchun ma'lumotlarni saqlash uchun mo'ljallangan. PADDING bloklari yoki qidirish nuqtalarini qo'shish variantlari quyida keltirilgan. FLAC qidiruv nuqtalariga muhtoj emas, lekin ular kirish tezligini sezilarli darajada oshirishi mumkin va audio muharrirlarda teglash uchun ham ishlatilishi mumkin.
Audio ma'lumotlar
tahrirMetadatadan keyin siqilgan audio ma'lumotlar keladi. Metadata va audio ma'lumotlar aralashmaydi. Ko'pgina kodeklar singari, FLAC kirish oqimini bloklarga ajratadi va ularni mustaqil ravishda kodlaydi. Blok ramkaga o'ralgan va oqimga qo'shilgan. Asosiy enkoder butun oqim uchun doimiy o'lchamdagi bloklardan foydalanadi, ammo format oqimdagi turli uzunlikdagi bloklarga ruxsat beradi.
Bloklarga bo'linishi
tahrirBlok hajmi kodlash uchun juda muhim parametrdir. Agar u juda kichik bo'lsa, u holda oqimda juda ko'p ramka sarlavhalari bo'ladi, bu esa siqilish darajasini pasaytiradi. Agar o'lcham katta bo'lsa, u holda enkoder samarali siqish modelini tanlay olmaydi. Modellashtirish jarayonini tushunish kirishning ayrim turlari uchun siqilish darajasini oshirishga yordam beradi. Odatda, namuna olish tezligi 44,1 kHz bo'lgan audio ma'lumotlarga chiziqli bashorat qilishda optimal blok hajmi 2-6 ming blok oralig'ida joylashgan. namunalar.
Kanallararo dekorrelyatsiya
tahrirAgar stereo audio ma'lumotlar kiritilsa, u kanallararo dekorrelyatsiya bosqichidan o'tishi mumkin. O'ng va chap kanallar formulalar bo'yicha o'rtacha va farqga aylantiriladi: o'rtacha = (chap + o'ng) / 2, farq = chap - o'ng. Yo'qotilgan enkoderlarda ishlatiladigan qo'shma stereodan farqli o'laroq, bu jarayon yo'qotishsiz kodlashning buzilishiga olib kelmaydi. Audio CD ma'lumotlari uchun bu odatda siqilish darajasining sezilarli darajada oshishiga olib keladi.
Modellashtirish
tahrirKeyingi bosqichda enkoder signalni shunday funksiya bilan yaqinlashtirishga harakat qiladiki, uni asl nusxadan ayirish natijasida olingan natija (farq, qoldiq, xato deb ataladi) minimal bitlar soni bilan kodlanishi mumkin. Funksiya parametrlari ham yozilishi kerak, shuning uchun ular ko'p joy egallamasligi kerak. FLAC taxminiy ma'lumotlarni yaratish uchun ikkita usuldan foydalanadi:
- signalga oddiy polinom moslashtirish
- umumiy chiziqli bashorat qiluvchi kodlash (LPC).
Birinchidan, doimiy polinom bashorati (-l 0) LPC (Low Pin Count)dan sezilarli darajada tezroq, ammo aniqroq emas. LPC soni qanchalik yuqori bo'lsa, model shunchalik sekinroq, lekin yaxshiroq bo'ladi. Biroq, buyurtma ortib borayotganligi sababli, daromad kamroq va kamroq ahamiyatga ega bo'ladi. Bir nuqtada (odatda 9 atrofida) kodlovchining eng yaxshi tartibni aniqlash tartibi muvaffaqiyatsizlikka uchraydi va qabul qilingan kadrlar hajmi ortadi. Buni bartaraf etish uchun to'liq qidiruvdan foydalanish mumkin, bu kodlash vaqtini sezilarli darajada oshirishga olib keladi.
Ikkinchidan, doimiy bashorat qiluvchilar uchun parametrlar uchta bit bilan tavsiflanishi mumkin, LPC modeli uchun parametrlar esa namunadagi bitlar soniga va LPC tartibiga bog'liq. Bu shuni anglatadiki, ramka sarlavhasining o'lchami tanlangan usul va tartibga bog'liq va optimal blok hajmiga ta'sir qilishi mumkin.
Qoldiq kodlash
tahrirModel o'rnatilganda, kodlovchi qoldiq (noto'g'ri) signalni olish uchun asl nusxadan taxminiylikni olib tashlaydi, keyin esa yo'qotishsiz kodlanadi. Bunda farq signali odatda Laplas taqsimotiga ega ekanligi va Rays kodlari deb ataladigan entropiya kodlari toʻplami mavjudligidan foydalaniladi, bu esa lugʻatdan foydalanmasdan ushbu signallarni samarali va tez kodlash imkonini beradi.
Guruchni kodlash signalning taqsimlanishiga mos keladigan bitta parametrni topish va undan keyin kodlarni yaratish uchun foydalanishdan iborat. Tarqatish o'zgarganda, optimal parametr ham o'zgaradi, shuning uchun kerak bo'lganda uni qayta hisoblash imkonini beruvchi usul mavjud. Qolganlarni kontekstlarga yoki bo'limlarga bo'lish mumkin, ularning har biri o'z Rays parametriga ega bo'ladi. FLAC bo'linish qanday amalga oshirilishi kerakligini belgilashga imkon beradi. Qolganlarini 2n bo'limga bo'lish mumkin.
Ramkalanishi
tahrirAudio kadrdan oldin sinxronlash kodi bilan boshlanadigan sarlavha mavjud va oqimni ijro etish uchun dekoder uchun zarur bo'lgan minimal ma'lumotlarni o'z ichiga oladi. Blok yoki namuna raqami va sarlavhaning sakkiz bitli nazorat summasi ham bu yerda yoziladi. Sinxronizatsiya kodi, ramka sarlavhasi CRC va blok/namuna raqami qidiruv nuqtalari bo'lmagan taqdirda ham vaqtni qayta o'tkazish va qidirish imkonini beradi. Kadr oxirida uning o'n olti bitli nazorat summasi yoziladi. Agar asosiy dekoder xatolikni aniqlasa, jim blok hosil bo'ladi.
Turli xil
tahrirAsosiy metadata turlarini qo'llab-quvvatlash uchun asosiy dekoder ID3v1 va ID3v2 teglarini o'tkazib yuborishi mumkin, shuning uchun ularni erkin qo'shish mumkin. ID3v2 teglari "fLaC" belgisidan oldin, ID3v1 teglari esa fayl oxirida joylashtirilishi kerak.
FLAC enkoderining modifikatsiyalari mavjud: FLAC kodlovchi yaxshilangan, Flake va FLACCL.
2003-yil 29-yanvar Xifofor (hozir Xiph deb ataladi. Org Foundation) o'z mahsulot qatoriga FLAC formatini kiritishni e'lon qildi: Ogg Vorbis, Theora va Speex[2].
Eslatmalar
tahrir- ↑ „Links“. FLAC. 28-yanvar 2017-yilda asl nusxadan arxivlangan. Qaraldi: 6-oktabr 2015-yil.
- ↑ „FLAC Joins Xiph!“ (inglizcha). 2007-yil 30-iyunda asl nusxadan arxivlangan. Qaraldi: 30-oktabr 2008-yil.
Havolalar
tahrir- „FLAC“ (ru). 2012-yil 12-fevralda asl nusxadan arxivlangan. Qaraldi: 26-iyul 2011-yil.
- „Xiph.Org: QuickTime Components“ (inglizcha). 2012-yil 10-fevralda asl nusxadan arxivlangan. Qaraldi: 30-oktabr 2008-yil.