การเข้ารหัสพื้นฐาน
ข้อมูลพื้นฐานเกี่ยวกับการบีบอัดวิดีโอ
ส่วนนี้ครอบคลุมตัวเลือกพื้นฐานของการเข้ารหัส VP9 ซึ่งรวมถึงขนาดเฟรม การควบคุมอัตราบิตพื้นฐาน และคุณภาพ
หากเพิ่งเริ่มใช้การบีบอัดวิดีโอ คุณอาจต้องการดูวิดีโอนี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับความจําเป็นในการบีบอัดวิดีโอและวิธีการทํางาน
การเข้ารหัสที่เรียบง่าย
คําสั่ง FFmpeg ต่อไปนี้จะแปลงไฟล์อินพุตเป็นวิดีโอ VP9 ที่มีเสียง Opus นี่คือการเข้ารหัสที่ง่ายที่สุดที่เป็นไปได้ซึ่งใช้การตั้งค่าเริ่มต้น
ffmpeg -i tears_of_steel_1080p.webm -c:v libvpx-vp9 -c:a libopus output.webm
การเข้ารหัส FFmpeg นี้ใช้พารามิเตอร์บรรทัดคําสั่งต่อไปนี้
FFmpeg | |
---|---|
-i <filename> |
ระบุชื่อไฟล์อินพุต |
-c:v libvpx-vp9 |
บอกให้ FFmpeg สร้างวิดีโอ VP9 |
-c:a libopus |
บอกให้ FFmpeg สร้างเสียง Opus |
output.webm |
ระบุชื่อไฟล์เอาต์พุต |
FFmpeg อนุมานประเภทของไฟล์ที่จะสร้างจากชื่อไฟล์เอาต์พุตที่คุณใช้ ในตัวอย่างนี้ FFmpeg จะแสดงไฟล์ WebM เนื่องจากเราขอ output.webm
ความละเอียด
วิดีโอทุกรายการมีขนาดเฟรม (ระบุความกว้างและความสูงของพิกเซล) พารามิเตอร์บรรทัดคําสั่ง FFmpeg ต่อไปนี้สามารถใช้เพื่อควบคุมขนาดเฟรมของเอาต์พุตวิดีโอสําหรับการเข้ารหัส VP9
FFmpeg | |
---|---|
-vf scale=<width>x<height> |
ความกว้างและความสูงของเฟรม |
เช่น คําสั่ง FFmpeg ต่อไปนี้จะแสดงวิดีโอ VP9 WebM ขนาด 640x480
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
-c:v libvpx-vp9 -c:a libopus output.webm
ความละเอียดที่เล็กลงจะมีคุณภาพต่ํากว่า แต่ความละเอียดที่กว้างกว่าจะต้องใช้แบนด์วิดท์สูงกว่า ต้องการความสามารถในการประมวลผลมากกว่า อาจถอดรหัสได้ และอาจไม่รองรับในอุปกรณ์รุ่นเก่า สําหรับ VP9 ขนาด 640x480 ถือเป็นความละเอียดที่ปลอดภัยสําหรับอุปกรณ์เคลื่อนที่และโทรศัพท์มือถือหลากหลายประเภท
อัตราบิต (อัตราบิต)
VP9 รองรับโหมดอัตราบิตต่างๆ หลายโหมด ดังนี้
โหมด | |
---|---|
ค่าคงที่ (Q) | ช่วยให้คุณระบุค่าตัวระบุเสียงคงที่ อัตราบิตจะแตกต่างกันไป |
คุณภาพจํากัด (CQ) | ช่วยให้คุณกําหนดระดับคุณภาพสูงสุดได้ คุณภาพอาจแตกต่างกันไปตามพารามิเตอร์อัตราบิต |
อัตราบิตแปรผัน (VBR) | รักษาสมดุลระหว่างคุณภาพและอัตราบิตในช่วงเวลาต่างๆ ภายในข้อจํากัดเกี่ยวกับอัตราบิต |
อัตราบิตคงที่ (CBR) | พยายามรักษาอัตราบิตให้ค่อนข้างคงที่ในขณะที่คุณภาพแตกต่างกันไป |
เราขอแนะนําให้ใช้โหมด CQ สําหรับวิดีโอตามไฟล์ (ต่างจากสตรีมมิงแบบสด) พารามิเตอร์บรรทัดคําสั่ง FFmpeg ต่อไปนี้จะใช้สําหรับโหมด CQ
FFmpeg | |
---|---|
-b:v <arg> |
ตั้งค่าอัตราบิตเป้าหมาย (เช่น 500,000) |
-minrate <arg> -maxrate <arg> |
ตั้งค่าอัตราบิตต่ําสุดและสูงสุด |
-crf <arg> |
ตั้งระดับคุณภาพสูงสุด ค่าที่ใช้ได้คือ 0-63 และตัวเลขต่ํากว่าจะมีคุณภาพสูงกว่า |
เช่น คําสั่ง FFmpeg ต่อไปนี้จะสร้างไฟล์วิดีโอขนาดกลาง 640x480 โดยใช้โหมด CQ โดยมีอัตราบิตเฉลี่ย 750kbps และคุณภาพสูงสุดจํากัดอยู่ที่ 33 รายการ
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
-b:v 750k -crf 33 -c:v libvpx-vp9 -c:a libopus output.webm
อัตราบิตจะแตกต่างกันไปขึ้นอยู่กับคุณภาพที่คุณต้องการ และความละเอียดของวิดีโอ ดูคําแนะนําแบบเต็มสําหรับอัตราบิตในความละเอียดต่างๆ ได้ที่นี่
การตั้งค่าคุณภาพและความเร็ว
การบีบอัดวิดีโอเป็นการแลกเปลี่ยนระหว่างคุณภาพของเอาต์พุตกับระยะเวลาในการสร้างเอาต์พุต โดยทั่วไปแล้ว คุณจะได้รับคุณภาพที่สูงขึ้นโดยอนุญาตให้เข้ารหัสได้มากขึ้น แต่เวลาที่ต้องใช้เพื่อให้ได้คุณภาพสูงสุดเป็นไปในทางปฏิบัติไม่ได้
VP9 มีการตั้งค่าหลายอย่างเพื่อสร้างความสมดุลระหว่างคุณภาพและความเร็ว ดังนี้
การตั้งค่าคุณภาพจะสั่งให้โปรแกรมเปลี่ยนไฟล์ดําเนินการตามวิธีการบีบอัดวิดีโอ โดยโหมดที่ใช้ได้คือแบบที่ดีที่สุด ดี แบบเรียลไทม์
การตั้งค่าชุดข้อความช่วยให้โปรแกรมเปลี่ยนไฟล์ใช้ชุดข้อความ CPU หลายรายการเพื่อเข้ารหัสวิดีโอได้ การตั้งค่าเหล่านี้อาจลดคุณภาพลงเล็กน้อย แต่จะช่วยเพิ่มความเร็วในการเข้ารหัสและถอดรหัสได้อย่างมาก
การตั้งค่า 2 ประเภทนี้ได้รับการควบคุมโดยพารามิเตอร์บรรทัดคําสั่งหลายชนิด ดังนี้
FFmpeg | |
---|---|
-threads |
ระบุจํานวนชุดข้อความที่จะใช้ในระหว่างการเข้ารหัส |
-quality |
อาจตั้งค่าเป็น good , best หรือ realtime |
-speed |
พารามิเตอร์นี้มีความหมายต่างกันไปโดยขึ้นอยู่กับการตั้งค่าคุณภาพเป็น good หรือ realtime การตั้งค่าความเร็ว 0-4 จะมีผลกับ VoD ใน good และ best โดยมี 0 คุณภาพสูงสุดและ 4 ต่ําสุด ค่าที่ใช้ได้ Realtime รายการคือ 5-8 เนื่องจากตัวเลขต่ํากว่าหมายถึงคุณภาพสูงกว่า |
-tile-columns |
การแบ่งชิ้นส่วนจะแบ่งวิดีโอออกเป็นส่วนสี่เหลี่ยมผืนผ้าซึ่งรองรับการเข้ารหัสและการเข้ารหัสแบบชุดข้อความหลายรายการ จํานวนไทล์จะเป็นเลข 2 เสมอ 0 =1 การ์ด, 1 =2, 2 =4, 3 =8, 4 =16, 5 =32 |
คําสั่ง FFmpeg ต่อไปนี้จะสร้างไฟล์ขนาด 640x480 ที่ตั้งค่าคุณภาพเป็น 'good' และตั้งค่าความเร็วเป็น 0 (คุณภาพสูง)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
-b:v 750k -quality good -speed 0 -crf 33 -c:v libvpx-vp9 -c:a libopus \
output.webm
ตัวเลือกสําหรับการตั้งค่าคุณภาพและความเร็วอาจแตกต่างกันไปตามความละเอียดและพลังงานในการประมวลผลที่ใช้ได้ ดูคําแนะนําทั้งชุดได้ในส่วนถัดไป