SDV Media: ใช้กล้อง

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: อินพุต/เอาต์พุต

ลองดูตัวอย่างโค้ดต่อไปนี้

กำหนดค่าอุปกรณ์วิดีโอ Loopback

สำหรับการทดสอบ SDV Media มีv4l2loopbackโมดูลเคอร์เนลที่ใช้เลียนแบบกล้องวิดีโอภายใน VM ของแขกได้ทั้งหมด โดยค่าเริ่มต้น ฟีเจอร์นี้จะ เริ่มต้นอุปกรณ์กล้องเสมือนเครื่องเดียว หากต้องการเพิ่ม ให้ส่งพารามิเตอร์การกำหนดค่า ไปยังโมดูลผ่านบรรทัดคำสั่งของเคอร์เนล เช่น หากต้องการ เริ่มต้นใช้งานอุปกรณ์ 4 เครื่อง ให้เพิ่มข้อมูลต่อไปนี้

v4l2loopback.devices=4

หากต้องการดูรายการตัวเลือกโมดูลทั้งหมดที่ใช้ได้ โปรดดูREADME ของ v4l2loopback หรือแหล่งที่มาของโมดูลในที่เก็บเคอร์เนล Android