FLAC เป็นซอฟต์แวร์โอเพ่นซอร์สที่สามารถลดปริมาณพื้นที่จัดเก็บข้อมูลที่จำเป็นในการจัดเก็บสัญญาณเสียงดิจิทัลโดยไม่จำเป็นต้องลบข้อมูลในการดำเนินการดังกล่าว
ไฟล์ที่อ่านและผลิตโดยซอฟต์แวร์นี้เรียกว่าไฟล์ FLAC เนื่องจากไฟล์เหล่านี้ (ซึ่งเป็นไปตามรูปแบบ FLAC) สามารถอ่านและเขียนโดยซอฟต์แวร์อื่นได้เช่นกัน ซอฟต์แวร์นี้จึงมักเรียกว่าการใช้งานอ้างอิง FLAC
FLAC ได้รับการพัฒนาโดยอาสาสมัคร หากคุณต้องการช่วยเหลือ โปรดดูข้อมูลเพิ่มเติมที่ CONTRIBUTING.md
FLAC ประกอบด้วย
flac
โปรแกรมบรรทัดคำสั่งสำหรับการเข้ารหัสและถอดรหัสไฟล์metaflac
โปรแกรมบรรทัดคำสั่งสำหรับการดูและแก้ไขข้อมูลเมตา FLACไลบรารี (libFLAC, libFLAC++) ได้รับอนุญาตภายใต้ใบอนุญาตแบบ BSD ของ Xiph.org (ดู COPYING.Xiph) โปรแกรมและปลั๊กอินอื่นๆ ทั้งหมดได้รับอนุญาตภายใต้สัญญาอนุญาตสาธารณะทั่วไปของ GNU (ดู COPYING.GPL) เอกสารนี้ได้รับอนุญาตภายใต้ GNU Free Documentation License (ดู COPYING.FDL)
สำหรับเอกสารประกอบของเครื่องมือบรรทัดคำสั่ง flac
และ metaflac
โปรดดูไดเร็กทอรี man ซึ่งมีไฟล์ flac.md และ metaflac.md
เอกสาร API อยู่ในรูปแบบ html และสร้างขึ้นโดย Doxygen สามารถพบได้ในไดเร็กทอรี doc/html/api รวมอยู่ใน release tarball และต้องสร้างด้วย Doxygen เมื่อแหล่งที่มาถูกนำมาจาก git โดยตรง
ตัวอย่างไดเร็กทอรีมีซอร์สโค้ดตัวอย่างเกี่ยวกับการใช้ libFLAC และ libFLAC++
เอกสารที่เกี่ยวข้องกับรูปแบบ FLAC (ซึ่งสามารถใช้เพื่อสร้างซอฟต์แวร์การอ่านและเขียนซอฟต์แวร์ FLAC อิสระจาก libFLAC) ได้รวมอยู่ในรุ่นก่อนหน้านี้ แต่ขณะนี้สามารถพบได้ที่ https://datatracker.ietf.org/doc/draft-ietf -cellar-flac/ นอกจากนี้ ชุดของไฟล์สำหรับการทดสอบความสอดคล้องที่เรียกว่า testbench ตัวถอดรหัส FLAC สามารถพบได้ที่https://github.com/ietf-wg-cellar/flac-test-files
หากคุณมีคำถามเกี่ยวกับ FLAC ที่เอกสารนี้ไม่สามารถตอบสนองได้ โปรดส่งมาที่เครื่องมือติดตามต่อไปนี้ เพื่อปรับปรุงเอกสารนี้:
https://github.com/xiph/flac/issues
ส่วนประกอบทั้งหมดของโครงการ FLAC สามารถสร้างได้ด้วยคอมไพเลอร์ที่หลากหลาย (รวมถึง GCC, Clang, Visual Studio, Intel C++ Compiler) บนสถาปัตยกรรมจำนวนมาก (รวมถึง x86, x86_64, ARMv7, ARMv8 และ PowerPC) สำหรับระบบปฏิบัติการที่แตกต่างกันมากมาย
เมื่อต้องการทำเช่นนี้ FLAC มีระบบสร้างสองระบบ: ระบบหนึ่งใช้เครื่องมืออัตโนมัติของ GNU และอีกระบบหนึ่งมี CMake ตัวเลือกการกำหนดค่าทั้งสองแตกต่างกันเล็กน้อย แต่ควรถือว่าเทียบเท่าในกรณีการใช้งานส่วนใหญ่
FLAC ใช้เพื่อจัดเตรียมไฟล์สำหรับการสร้างด้วย Visual Studio โดยเฉพาะ แต่ไฟล์เหล่านี้ถูกลบออกเพื่อสนับสนุนการใช้ CMake
CMake เป็นระบบสร้างข้ามแพลตฟอร์ม FLAC สามารถสร้างขึ้นบน Windows, Linux, Mac OS X โดยใช้ CMake
คุณสามารถใช้ CLI หรือ GUI ของ CMake ได้ เราขอแนะนำให้คุณมีโฟลเดอร์บิลด์แยกต่างหากนอกพื้นที่เก็บข้อมูลเพื่อไม่ให้ไฟล์ที่สร้างขึ้นเสียหาย อย่างไรก็ตาม เป็นไปได้ที่จะทำสิ่งที่เรียกว่า in-tree build ในกรณีนั้น /path/to/flac-build ในตัวอย่างต่อไปนี้จะเท่ากับ /path/to/flac-source
ไปที่โฟลเดอร์ build ของคุณและเรียกใช้สิ่งนี้:
/path/to/flac-build$ cmake /path/to/flac-source
หรือเช่นในเชลล์ Windows
C:pathtoflac-build> cmake pathtoflac-source
(โดยมีเงื่อนไขว่า cmake อยู่ในตัวแปร %PATH% ของคุณ)
ซึ่งจะสร้างสคริปต์บิลด์สำหรับระบบบิลด์เริ่มต้น (เช่น Makefiles สำหรับ UNIX) หลังจากนั้นคุณเริ่ม build ด้วยคำสั่งดังนี้:
/path/to/flac-build$ make
และหลังจากนั้น คุณสามารถรันการทดสอบหรือติดตั้งไลบรารีและส่วนหัวที่สร้างขึ้นได้
/path/to/flac-build$ make test
/path/to/flac-build$ make install
หากคุณต้องการใช้ระบบบิลด์อื่นที่ไม่ใช่ค่าเริ่มต้น ให้เพิ่มแฟล็ก -G ลงใน cmake เช่น:
/path/to/flac-build$ cmake /path/to/flac-source -GNinja
/path/to/flac-build$ ninja
หรือ:
/path/to/flac-build$ cmake /path/to/flac-source -GXcode
ใช้ cmake --help เพื่อดูรายการตัวสร้างที่มีอยู่
ตามค่าเริ่มต้น CMake จะค้นหา OGG หาก CMake ไม่พบ คุณสามารถช่วย CMake ได้โดยระบุเส้นทางที่แน่นอน:
/path/to/flac-build$ cmake /path/to/flac-source -DOGG_ROOT=/path/to/ogg
หากคุณต้องการให้ CMake สร้าง OGG ควบคู่ไปกับ FLAC คุณสามารถวางแหล่งที่มา ogg ได้โดยตรงในไดเรกทอรีต้นทาง flac เป็นไดเรกทอรีย่อยที่มีชื่อ ogg ตัวอย่างเช่น:
/path/to/flac-source/ogg
หากคุณไม่ต้องการสร้าง flac ด้วยการรองรับ OGG คุณสามารถบอก CMake ว่าอย่ามองหา OGG:
/path/to/flac-build$ cmake /path/to/flac-source -DWITH_OGG=OFF
ตัวเลือกอื่นๆ ของ FLAC (เช่น การสร้าง C++ lib หรือเอกสาร) ก็สามารถใส่ cmake ผ่านแฟล็ก -D ได้เช่นกัน หากคุณต้องการทราบว่ามีตัวเลือกใดบ้าง ให้ใช้ -LH:
/path/to/flac-build$ cmake /path/to/flac-source -LH
มีแนวโน้มว่าคุณต้องการใช้ CMake GUI หากคุณใช้ Visual Studio เพื่อสร้าง FLAC โดยพื้นฐานแล้วมันเป็นกระบวนการเดียวกับการสร้างโดยใช้ CLI
เปิด cmake-gui ในหน้าต่าง ให้เลือกไดเร็กทอรีต้นทาง (รูทของที่เก็บ), ไดเร็กทอรี build (ไดเร็กทอรีอื่น ๆ นอกที่เก็บ) จากนั้นกดปุ่ม "กำหนดค่า" CMake จะถามคุณว่าคุณต้องการระบบบิลด์ใด เลือกเวอร์ชันของ Visual Studio ที่คุณมีในระบบของคุณ เลือกว่าคุณต้องการสร้างสำหรับ Win32 หรือ x64 กดตกลง
หลังจาก CMake เสร็จสิ้น คุณสามารถเปลี่ยนการกำหนดค่าตามที่คุณต้องการ และหากคุณเปลี่ยนแปลงสิ่งใด ให้เรียกใช้ Configure อีกครั้ง ด้วยปุ่ม "สร้าง" CMake จะสร้างไฟล์ Visual Studio ซึ่งสามารถเปิดได้จาก Visual Studio ด้วยปุ่ม "เปิดโครงการ" CMake จะเปิดตัว Visual Studio และเปิดโซลูชันที่สร้างขึ้น คุณสามารถใช้ไฟล์โครงการได้ตามปกติ แต่โปรดจำไว้ว่าไฟล์เหล่านี้สร้างขึ้นโดย CMake นั่นหมายความว่าการเปลี่ยนแปลงของคุณ (เช่น ค่าสถานะการคอมไพล์เพิ่มเติม) จะหายไปเมื่อคุณเรียกใช้ CMake ในครั้งต่อไป
CMake ค้นหา OGG บนระบบของคุณตามค่าเริ่มต้นและส่งกลับข้อผิดพลาดหากไม่พบ หากคุณต้องการสร้าง OGG ควบคู่ไปกับ FLAC คุณสามารถดาวน์โหลดซอร์ส OGG และแตกไฟล์เหล่านั้นในไดเร็กทอรีย่อยของไดเร็กทอรีต้นทาง FLAC ด้วยชื่อ ogg (เช่น /path/to/flac-source/ogg) ก่อนที่จะรัน CMake หากคุณไม่ต้องการสร้าง FLAC ด้วยการสนับสนุน OGG ให้ยกเลิกการเลือกช่องที่อยู่ถัดจากการตั้งค่าสถานะ WITH_OGG ในรายการตัวแปรในหน้าต่าง cmake-gui แล้วเรียกใช้ "กำหนดค่า" อีกครั้ง
หาก CMake ล้มเหลวในการค้นหาคอมไพเลอร์ MSVC การเรียกใช้ cmake-gui จากพรอมต์คำสั่งของ MS Developer น่าจะช่วยได้
FLAC ใช้ autoconf และ libtool สำหรับการกำหนดค่าและสร้าง หากต้องการกำหนดค่าบิลด์ ให้เปิดบรรทัดคำสั่ง/เทอร์มินัลแล้วรัน ./configure
คุณสามารถระบุตัวเลือกให้กับคำสั่งนี้ได้ ซึ่งแสดงรายการโดยการรัน ./configure --help
ในกรณีที่ไม่มีสคริปต์กำหนดค่า (เช่น เมื่อสร้างจาก git และไม่ได้มาจาก tarball รุ่น) สามารถสร้างได้โดยการรัน ./autogen.sh
สิ่งนี้อาจต้องใช้แพ็คเกจการพัฒนา libtool
หลังจากคอนฟิกูเรชัน ให้บิวด์ด้วย make
ตรวจสอบบิลด์ด้วย make check
และติดตั้งด้วย make install
การติดตั้งอาจต้องมีสิทธิ์ของผู้ดูแลระบบ เช่น sudo make install
ขั้นตอน 'ตรวจสอบ' เป็นทางเลือก ละเว้นเพื่อข้ามการทดสอบทั้งหมด ซึ่งอาจใช้เวลาประมาณหนึ่งชั่วโมงจึงจะเสร็จสิ้น แม้ว่ามันจะหยุดด้วยข้อความที่ชัดเจนเกี่ยวกับความล้มเหลวใดๆ ก็ตาม แต่มันก็พิมพ์ข้อมูลออกมามากมาย ดังนั้นคุณอาจต้องการบันทึกผลลัพธ์ไปยังไฟล์หากคุณประสบปัญหา นอกจากนี้ อย่าเรียกใช้ 'make check' ในฐานะ root เพราะจะทำให้การทดสอบบางอย่างสับสน
สรุป:
./configure
make && make check
sudo make install
libFLAC มีขนาดใหญ่ขึ้นเมื่อเวลาผ่านไปเนื่องจากมีการรวมฟังก์ชันการทำงานไว้มากขึ้น แต่ฟังก์ชันส่วนใหญ่อาจไม่จำเป็นสำหรับการใช้งานแบบฝังตัวโดยเฉพาะ ส่วนที่ไม่ได้ใช้อาจถูกตัดแต่งโดยการแก้ไข configuration.ac และ src/libFLAC/Makefile.am อย่างง่ายๆ กราฟการขึ้นต่อกันต่อไปนี้แสดงให้เห็นว่าโมดูลใดที่อาจถูกตัดแต่งโดยไม่ทำลายสิ่งต่าง ๆ เพิ่มเติม:
metadata.h
stream_decoder.h
format.h
stream_encoder.h
stream_decoder.h
format.h
stream_decoder.h
format.h
กล่าวอีกนัยหนึ่ง สำหรับแอปพลิเคชันการถอดรหัสล้วนๆ สามารถลบทั้งตัวเข้ารหัสสตรีมและอินเทอร์เฟซการแก้ไขข้อมูลเมตาได้อย่างปลอดภัย โปรดทราบว่านี่เป็นเรื่องเฉพาะสำหรับการสร้างไลบรารีสำหรับการใช้งานแบบฝัง เครื่องมือบรรทัดคำสั่งไม่ได้จัดให้มีการแบ่งส่วนดังกล่าว และต้องมีการสร้าง libFLAC ที่สมบูรณ์จึงจะทำงานได้
มีส่วนที่เกี่ยวข้องกับการใช้งานแบบฝังในเอกสารประกอบ libFLAC API HTML (ดู doc/html/api/index.html)
นอกจากนี้ ยังมีหลายตำแหน่งในโค้ด libFLAC ที่มีความคิดเห็นที่มีเครื่องหมาย "OPT:" โดยที่ #define สามารถเปลี่ยนแปลงได้เพื่อเปิดใช้งานโค้ดที่อาจเร็วกว่าบนแพลตฟอร์มเฉพาะ การทดลองกับสิ่งเหล่านี้จะทำให้ได้ไบนารี่เร็วขึ้น