ฉันใช้สิ่งต่าง ๆ เช่นนั้น:
avconv -f x11grab -s 1024x768 -r 24 -i 0:0 -deadline realtime -b 5000000 -minrate 200000 -maxrate 40000000 recording-filename-000.webm
ที่ไหน:
-f x11grab
- บังคับใช้การจับภาพหน้าจอ "รูปแบบ" ของอินพุต
-s 1024x768
คือความละเอียดของไฟล์อินพุต (พื้นที่การจับภาพ aka) ตัวอย่างเช่นเท่ากับความละเอียดของเดสก์ท็อป หากเล็กกว่านั้นพื้นที่การบันทึกจะอยู่ที่ด้านซ้ายและด้านบน ฉันใช้พื้นที่การบันทึก 1024x768 ในตัวอย่างนี้
-r 24
- อัตราเฟรม โดยทั่วไป 23 ถึง 30 FPS ใช้โดยภาพยนตร์จริงเพื่อให้ภาพที่บันทึกราบรื่น อย่างไรก็ตามสำหรับภาพหน้าจออาจลดลงเพื่อให้ได้ภาพที่ดีขึ้นที่บิตเรตที่ต่ำกว่า ฉันใช้ 24 เพื่อจับภาพหน้าจอเกม
-i 0:0
เป็นคำใบ้ที่ใช้แสดง 0: 0 เป็นแหล่งข้อมูล (อุปกรณ์อยู่ในรูปแบบ xorg) หากคุณมีเพียง 1 มอนิเตอร์และการตั้งค่า Xorg ที่เป็นค่าเริ่มต้น 0: 0 จะโอเคเกือบทุกครั้ง
-deadline realtime
- เป็นคำใบ้สำหรับ libvpx เราต้องการบันทึกสด เราต้องการประสิทธิภาพแบบเรียลไทม์ ดังนั้น libvpx จะทำดีที่สุดในการเข้ารหัส VP8 ในแบบเรียลไทม์ ในการทำเช่นนั้นจะค่อนข้างมีคุณภาพสำหรับความเร็ว ที่คุณภาพบิตเรตที่กำหนดจะเลวร้ายยิ่งกว่าที่ควรจะเป็นแบบไม่เรียลไทม์ แต่ความเร็วในการเข้ารหัสจะพุ่งสูงขึ้น ดังนั้นในฮาร์ดแวร์ของฉันมันสามารถกระทืบ 1024x768 @ 24FPS, ฉากที่รุนแรง, โดยไม่ต้องวางเฟรมใด ๆ (แนะนำให้ใช้ CPU ที่ทรงพลัง) ในตัวอย่างนี้ฉันต้องการจับภาพสดคุณภาพดีที่ FPS ที่ดีและพื้นที่การจับที่ค่อนข้างใหญ่ ดังนั้นการใช้ CPU โดยตัวแปลงสัญญาณอาจเป็นปัญหา นั่นเป็นเหตุผลที่คำแนะนำนี้จำเป็นจริงๆสำหรับผลลัพธ์ที่ดี
-b 5000000
- บิตเรตเป้าหมายในหน่วยบิต / วินาที ฉันใช้ 5Mbits เพื่อให้ได้ภาพที่ดีในฉากที่ค่อนข้างเข้ม ตัวแปลงสัญญาณจะพยายามให้บิตเรตความเร็วเฉลี่ยของวิดีโอใกล้เคียงกับค่านี้ ค่านี้ยิ่งต่ำคุณภาพยิ่งแย่ลงและมีขนาดเล็กลง คุณสามารถทดลองสักเล็กน้อยเพื่อให้เข้าใจว่าบิตเรตนั้นดีสำหรับการใช้งานเฉพาะแบบใด บริการแบ่งปันวิดีโอจะเปลี่ยนวิดีโอหากคุณทำเกินกำหนด หากคุณกำลังจะใช้เซิร์ฟเวอร์ของตัวเองมันก็ขึ้นอยู่กับคุณที่จะดูแลการรับส่งข้อมูล หากคุณเปิดเครื่องช็อตคุณภาพของภาพจะไม่ดี อย่าลังเลที่จะเปลี่ยนค่าเพื่อรับแนวคิดที่ดีที่สุดสำหรับคุณ 5Mbits ถูกออกแบบมาเพื่อการถ่ายภาพที่น่าประทับใจในเกมที่คุณไม่สามารถเห็นภาพที่ถูกบีบอัดได้อย่างน่าพอใจ สำหรับการจับภาพนิ่งแอปพลิเคชั่นนั้นโดยทั่วไปคุณจะต้องการน้อยกว่านั้น
-minrate
200000 - เป็นบิตเรตขั้นต่ำที่อนุญาตสำหรับตัวแปลงสัญญาณ ขึ้นอยู่กับลักษณะของสิ่งที่คุณต้องการจับภาพบางครั้งคุณอาจต้องการบังคับให้บิตเรตขั้นต่ำเพื่อให้ได้ภาพที่ดูสมเหตุสมผลไม่ว่าจะเกิดอะไรขึ้น บางครั้งฮิวริสติกของตัวแปลงสัญญาณสามารถลดบิตเรตที่ต่ำกว่าค่าที่คุณอาจต้องการให้ภาพที่ไม่ดีในบางฉาก ตัวเลือกนี้อนุญาตให้บังคับให้ตัวแปลงสัญญาณรักษาอัตราบิตต่ำสุดแม้ว่าตัวแปลงสัญญาณคิดว่าฉากง่ายและบิตเรตอาจลดลง ค่าสูงของพารามิเตอร์นี้อาจเพิ่มขนาดไฟล์โดยการป้องกันตัวแปลงสัญญาณจากการใช้บิตเรตที่ต่ำกว่า
-maxrate 40000000
- ค่านี้ควบคุมอัตราบิตสูงสุดต่อเนื่องในฉากที่มีความเข้ม ฉันใช้ค่าที่สูงมากเพื่อให้ตัวแปลงสัญญาณสูงกว่าค่าเฉลี่ยที่ต้องการหากพิจารณาว่าความเร็วสูงเป็นสิ่งจำเป็นเพื่อรักษาคุณภาพในบางฉาก เพื่อให้ได้ภาพที่ดูดีในทุกสภาวะมันเป็นที่พึงปรารถนาที่จะตั้งค่านี้ให้สูงพอ (40Mbits คือความเร็วเหมือน BlueRay และจะทำเคล็ดลับ) ในทางตรงกันข้ามหากคุณกำลังจะสตรีมด้วยเซิร์ฟเวอร์ของคุณเองคุณจะต้องลดค่านี้ในราคาของคุณภาพของภาพในฉากที่รุนแรง เซิร์ฟเวอร์อื่นอาจล้มเหลวในการรับมือกับบิตเรตที่ต้องการและไม่สามารถส่งได้ในแบบเรียลไทม์แก่ผู้ใช้ จากนั้นผู้เล่นจะเผชิญกับบัฟเฟอร์ต่ำกว่า (ซึ่งเป็นที่น่ารำคาญ) บริการแบ่งปันวิดีโอจะดูแลตัวเองและมักจะแปลงวิดีโอเพื่อลดพารามิเตอร์ด้วยคุณภาพของภาพ
recording-filename-000.webm
- เป็นชื่อไฟล์ของเอาต์พุต หากคุณใช้. webm extension ffmpeg / avconv นั้นฉลาดพอที่จะเข้าใจว่าคุณต้องการ WEBM มันง่ายมาก - avconv คาดเดารูปแบบที่ต้องการจากชื่อไฟล์ ดังนั้นไฟล์. WEBM ก็คือ WEBM ข้างใน
นั่นคือ - คำสั่งนี้ทำการบันทึกหน้าจอโดยตรงไปยังไฟล์ webm ไม่จำเป็นต้องมีการแปลงเพิ่มและlibvpx
บอกเป็นนัยให้เร็วที่สุดเท่าที่จะทำได้ ไม่มีเสียงเนื่องจากไม่มีข้อกำหนดสำหรับอินพุตเสียง อาจหรือไม่เป็นสิ่งที่คุณต้องการ สำหรับเสียงคุณต้องระบุแหล่งอินพุตสำหรับสตรีมเสียงเช่นกัน
ป.ล. นี้อาจดูเหมือน overcomplicated เล็กน้อย แต่ในตอนท้ายของวันคุณสามารถคิดออกว่าขนาดหนึ่งไม่พอดีทั้งหมด ดังนั้นเพื่อให้ได้ภาพที่ดูดีในทุกสถานการณ์คุณอาจต้องการใช้มือจับโคเดกบางตัวและต้องการปรับมัน Ffmpeg ให้คุณจัดการทั้งหมดที่คุณอาจต้องการและมากกว่านั้น มันเป็นอาวุธหนักของการแปลงและเข้ารหัสวิดีโอ ดังนั้นตัวอย่างนี้เป็นจุดเริ่มต้นที่ดีสำหรับผู้ที่ต้องการทำการเข้ารหัสขั้นสูงไม่มากก็น้อยและพร้อมที่จะทดลองสักเล็กน้อยเพื่อให้ได้ผลลัพธ์ที่ดูดี