SDV Media ช่วยให้ใช้กล้องวิดีโอผ่าน Linux V4L2 API ได้ คุณใช้ V4L2 API ได้โดยตรง แต่เราขอแนะนำให้นักพัฒนาแอปพลิเคชันใช้ไลบรารีตัวช่วยในพื้นที่ผู้ใช้ เช่น
libv4l-rsสำหรับ Rust (แนะนำ)libv4l2สำหรับ C++ โดยค่าเริ่มต้น SDV Media จะไม่ได้จัดเตรียมไลบรารีนี้ไว้ให้
โหมดบัฟเฟอร์ที่รองรับ
โหมดบัฟเฟอร์ USERPTR ถือว่าเลิกใช้งานแล้วโดยผู้ดูแล V4L2 ต้นทาง และ SDV Media จึงไม่รองรับโหมดนี้ ให้ใช้โหมด MMAP หรือ DMABUF แทน
ใช้กล้อง
อุปกรณ์วิดีโอแต่ละเครื่อง (กล้อง ตัวเข้ารหัส และตัวถอดรหัส) ที่ไฮเปอร์ไวเซอร์แสดง
จะปรากฏเป็นอุปกรณ์แยกต่างหากชื่อ /dev/videoN (มีค่าตัวเลขเป็น
N)
แอปพลิเคชันสามารถใช้ VIDIOC_QUERYCAP ioctl เพื่อค้นหาความสามารถของ
อุปกรณ์วิดีโอได้ อุปกรณ์กล้องรายงานการรองรับสำหรับ V4L2_CAP_VIDEO_CAPTURE
หรือ V4L2_CAP_VIDEO_CAPTURE_MPLANE
ดูรายละเอียดขั้นตอนการจับภาพวิดีโอได้ที่ API สำหรับวิดีโอใน Linux: อินพุต/เอาต์พุต
ลองดูตัวอย่างโค้ดต่อไปนี้
- Rust:
libv4l-rsstream_capture_mmapตัวอย่าง - C/C++: คลาส AAOS
VideoCaptureหรือตัวอย่างการจับภาพวิดีโอของเคอร์เนล Linux
กำหนดค่าอุปกรณ์วิดีโอ Loopback
สำหรับการทดสอบ SDV Media มีv4l2loopbackโมดูลเคอร์เนลที่ใช้เลียนแบบกล้องวิดีโอภายใน VM ของแขกได้ทั้งหมด โดยค่าเริ่มต้น ฟีเจอร์นี้จะ
เริ่มต้นอุปกรณ์กล้องเสมือนเครื่องเดียว หากต้องการเพิ่ม ให้ส่งพารามิเตอร์การกำหนดค่า
ไปยังโมดูลผ่านบรรทัดคำสั่งของเคอร์เนล เช่น หากต้องการ
เริ่มต้นใช้งานอุปกรณ์ 4 เครื่อง ให้เพิ่มข้อมูลต่อไปนี้
v4l2loopback.devices=4
หากต้องการดูรายการตัวเลือกโมดูลทั้งหมดที่ใช้ได้ โปรดดูREADME ของ v4l2loopback หรือแหล่งที่มาของโมดูลในที่เก็บเคอร์เนล Android