โหมดการควบคุมอัตราการส่งข้อมูล (Rate Control)
1. การควบคุมอัตราบิต (Rate Control)
หน้าเว็บเน้นย้ำ 2 โหมดหลักที่ต้องเลือกใช้ตามจุดประสงค์
Constant Rate Factor (CRF) - เน้นคุณภาพ:
หลักการ: เลือกคุณภาพที่ต้องการ แล้วให้ Encoder จัดการ Bitrate เองตามความยากง่ายของภาพ
ค่าที่ควรทราบ: สเกลคือ 0-51
0: Lossless (ชัดเท่าต้นฉบับแต่ไฟล์ใหญ่มาก)
17–18: Visually Lossless (ทางสายตาดูไม่ออกว่าต่างจากต้นฉบับ)
23: ค่าเริ่มต้น
28: คุณภาพยังดีอยู่แต่ไฟล์จะเล็กกว่า 23 มาก
สูตรคำนวณ: ถ้าเพิ่มค่า CRF ไป +6 ขนาดไฟล์จะลดลงประมาณครึ่งหนึ่ง ในทางกลับกันถ้าลด -6 ขนาดไฟล์จะใหญ่ขึ้นประมาณเท่าตัว
Two-Pass - เน้นขนาดไฟล์:
หลักการ: ต้องรันคำสั่ง 2 รอบ รอบแรกเพื่อวิเคราะห์วิดีโอ (สร้าง Log file) รอบที่สองเพื่อ Encode จริงให้ได้ขนาดไฟล์ตามที่คำนวณไว้เป๊ะๆ
วิธีคำนวณ Bitrate: (ขนาดไฟล์ที่ต้องการในหน่วย MiB * 8388.608) / ความยาววิดีโอเป็นวินาที = Bitrate รวม
2. การเลือก Preset และ Tune (หัวใจของ x264)
Presets (ความเร็ว vs ประสิทธิภาพ): ไล่จากเร็วสุดไปช้าสุด:
ultrafast,superfast,veryfast,faster,fast,medium(Default),slow,slower,veryslow,placeboสิ่งที่ควรรู้: ยิ่งใช้ Preset ช้าลง (เช่น
slowหรือslower) ตัว Encoder จะวิเคราะห์ภาพได้ละเอียดขึ้น ทำให้ได้คุณภาพวิดีโอดีขึ้นในขณะที่ขนาดไฟล์เท่าเดิม หรือได้ไฟล์เล็กลงในขณะที่คุณภาพเท่าเดิม
Tune (ปรับแต่งตามเนื้อหา):
ใช้ตัวเลือก -tune เพื่อเปลี่ยนการตั้งค่าตามรายละเอียดของข้อมูลป้อนเข้าของคุณได้ การตั้งค่าปัจจุบันได้แก่film: สำหรับหนังทั่วไป (รักษาความละเอียดของภาพ)animation: สำหรับการ์ตูน (ใช้ deblocking มากขึ้นและ reference frames เยอะขึ้น)grain: สำหรับหนังเก่าที่มี Noise/Grain เยอะ (รักษาความขลังของเนื้อฟิล์ม)stillimage: สำหรับภาพนิ่งหรือสไลด์โชว์zerolatency: สำหรับงานถ่ายทอดสดที่ต้องการความหน่วงต่ำที่สุด
3. ข้อมูลเชิงลึกด้าน Compatibility (การนำไปเปิดเล่น)
Profiles: ปกติ x264 จะเลือกให้เองอัตโนมัติ แต่ถ้าต้องส่งไฟล์ไปเล่นในอุปกรณ์เก่ามากๆ อาจต้องระบุ:
-profile:v baseline: สำหรับมือถือรุ่นเก่ามาก-profile:v main: มาตรฐานทั่วไป-profile:v high: อุปกรณ์สมัยใหม่ (แนะนำตัวนี้ถ้าไม่ได้ระบุอะไร)
Pixel Format: หาก Encode แล้วเปิดใน QuickTime หรือโปรแกรมเล่นวิดีโอทั่วไปไม่ได้ ให้เพิ่ม
-pix_fmt yuv420pเข้าไปเสมอ เพราะอุปกรณ์ส่วนใหญ่รองรับแค่มาตรฐาน 4:2:0
4. ฟีเจอร์เสริมที่น่าสนใจ
Faststart for Web: การใส่
-movflags +faststartจะช่วยย้ายข้อมูล Header ไปไว้ส่วนหน้าของไฟล์ ทำให้วิดีโอบนเว็บกดปุ๊บเล่นปั๊บได้เลย (ไม่ต้องรอโหลดเสร็จทั้งไฟล์)Hardware Acceleration: หน้าเว็บมีการเอ่ยถึงการใช้การ์ดจอช่วย (เช่น
h264_nvencของ Nvidia หรือ h264_qsv ของ Intel QuickSync) ซึ่งจะทำงานได้เร็วมาก แต่คุณภาพต่อบิตอาจจะไม่กริบเท่าการใช้ CPU (libx264) รันเพียวๆ
ตัวอย่างคำสั่งแบบจัดเต็ม:
ffmpeg -i input.mp4 -c:v libx264 -preset slower -crf 20 -tune film -pix_fmt yuv420p -movflags +faststart -c:a aac -b:a 192k output.mp4
ที่มา
.jpg)
.jpg)