SDV Media امکان استفاده از دوربینهای ویدئویی را از طریق رابط برنامهنویسی کاربردی لینوکس V4L2 فراهم میکند. استفاده مستقیم از رابطهای برنامهنویسی کاربردی V4L2 امکانپذیر است، اما توسعهدهندگان برنامهها تشویق میشوند از کتابخانههای کمکی فضای کاربری استفاده کنند. برای مثال:
- جعبه
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 ویدیو برای لینوکس: ورودی/خروجی مراجعه کنید.
به این نمونه کدها توجه کنید:
- زنگ: مثال
libv4l-rsstream_capture_mmap، - C/C++: کلاس AAOS
VideoCaptureیا مثال ضبط ویدیو در هسته لینوکس .
پیکربندی دستگاههای loopback ویدیویی
برای آزمایش، SDV Media یک ماژول هسته v4l2loopback ارائه میدهد که میتواند برای شبیهسازی کامل دوربینهای ویدئویی در ماشین مجازی مهمان استفاده شود. به طور پیشفرض، یک دستگاه دوربین مجازی را راهاندازی اولیه میکند. برای افزودن موارد بیشتر، پارامترهای پیکربندی را از طریق خط فرمان هسته به ماژول ارسال کنید. به عنوان مثال، برای راهاندازی ۴ دستگاه، موارد زیر را اضافه کنید:
v4l2loopback.devices=4
برای مشاهده لیست کامل گزینههای ماژول موجود، به فایل README مربوط به v4l2loopback یا منابع ماژول در مخزن هسته اندروید مراجعه کنید.