تتيح SDV Media استخدام كاميرات الفيديو من خلال Linux V4L2 API. من الممكن استخدام V4L2 APIs مباشرةً، ولكن ننصح مطوّري التطبيقات بـ استخدام مكتبات مساعِدة لمساحة المستخدم. على سبيل المثال:
أوضاع المخزن المؤقت المتوافقة
يعتبر المشرفون على V4L2 في المصدر وضع المخزن المؤقت USERPTR وضعًا مهجورًا، لذا لا تتوافق SDV Media معه. يمكنك بدلاً من ذلك استخدام وضع MMAP أو DMABUF.
استخدام الكاميرات
سيظهر كل جهاز فيديو (الكاميرات وأجهزة الترميز وأجهزة فك الترميز) يعرضه برنامج Hypervisor كجهاز منفصل باسم /dev/videoN (مع قيمة رقمية لـ N).
يمكن للتطبيقات استخدام VIDIOC_QUERYCAP ioctl للاطّلاع على إمكانات أجهزة
الفيديو. تُبلغ أجهزة الكاميرا عن دعم لـ V4L2_CAP_VIDEO_CAPTURE
أو V4L2_CAP_VIDEO_CAPTURE_MPLANE.
للاطّلاع على تفاصيل عملية التقاط الفيديو، يُرجى مراجعة Video for Linux API: Input/Output.
إليك نماذج من التعليمات البرمجية:
- Rust: مثال
stream_capture_mmapفيlibv4l-rs - C/C++: فئة
VideoCaptureAAOS أو مثال التقاط الفيديو في Linux kernel.
ضبط أجهزة الفيديو ذات الحلقة المغلقة
لأغراض الاختبار، توفّر SDV Media وحدة v4l2loopback في kernel، والتي يمكن استخدامها لمحاكاة كاميرات الفيديو بالكامل داخل الجهاز الظاهري للضيف. تُنشئ هذه الوحدة تلقائيًا جهاز كاميرا افتراضيًا واحدًا. لإضافة المزيد، يُرجى تمرير مَعلمات الضبط إلى الوحدة من خلال سطر أوامر kernel. على سبيل المثال، لإعداد 4 أجهزة، يُرجى إضافة:
v4l2loopback.devices=4
للاطّلاع على قائمة كاملة بخيارات الوحدات المتاحة، يُرجى مراجعة ملف v4l2loopback README أو مصادر الوحدة في مستودع Android kernel.