يمكن استخدام V4L2 لقراءة الصوت والفيديو من نفس الجهاز؟

StackOverflow https://stackoverflow.com/questions/917060

  •  06-09-2019
  •  | 
  •  

سؤال

لدي بطاقة التقاط تلتقط فيديو SDI مع صوت مضمن. لدي رمز مصدر لسائق Linux، الذي أحاول تحسينه لإضافة دعم Video4linux2. تعتمد التغييرات الخاصة بي على مثال VIVI.

المشكلة التي أتيت ضدها هي أن كل مثال يمكنني العثور على التعامل مع الفيديو أو الصوت فقط فقط. حتى على جانب العميل، يبدو أن كل شيء يفترض أن V4L هو مجرد فيديو، مثل libavdevice ffmpeg.

هل أحتاج إلى إنشاء برنامج تشغيلي جهازين منفصلين وجهاز V4L2 وجهاز ALSA؟ يبدو أن هذا يجعل مهمة الحفاظ على الصوت والفيديو في مزامنة أكثر صعوبة.

أفضل أن أذهب بطريقة ما لكل مخزن مؤقت يتم تمريرها بين برنامج التشغيل وتطبيق التطبيق (من خلال واجهة MMAP الخاصة ب V4L2) إطارا، بالإضافة إلى بعض الصوت الذي يطابق (فيما يتعلق بالوقت) مع هذا الإطار.

أو ربما يحتوي كل مخزن مؤقت على العلم الذي يشير إلى ما إذا كان إطار فيديو، أو قطعة من الصوت. ثم يمكن استخدام الطوابع الزمنية على المخازن المؤقتة لمزامنة الأمور.

لكنني لا أرى طريقة للقيام بذلك باستخدام V4L2 API SPEC، ولا أرى أي أمثلة على تطبيقات تطبيقات V4L2 (GSTRAMER، FFMPEG، TRANSCODE، إلخ) قراءة كل من الصوت والفيديو من جهاز واحد.

هل كانت مفيدة؟

المحلول

بشكل عام، يظهر جزء التقاط الصوت من الجهاز كجهاز منفصل. عادة ما يكون جهازا بدنيا مختلفا (مشاركة بطاقة بقيمة)، مما يجعل المنطقي. لست متأكدا من مقدار المساعدة الموجودة، ولكنها كيف كل هذا البرنامج وأنا على دراية بالأعمال ...

نصائح أخرى

هناك بعض الحقول الغريبة أو المحجوزة في المخازن المؤقتة V4L2 التي يمكن استخدامها لتمرير الصوت أو البيانات الأخرى من برنامج التشغيل إلى تطبيق الاتصال عبر المؤشرات إلى المخازن المؤقتة MMAPed.

قمت بتعديل برنامج تشغيل BT8X8 لاستخدام هذا النهج لتمرير البيانات من بطاقة A / D متزامنة إلى الفيديو على Ubuntu 6.06.

عملت موافق، لكن جهد الحفاظ على سائقي المعدل تسبب لي في التخلي عن هذا النهج.

إذا كنت لا تزال مهتما، فقد أحفر التفاصيل.

إذا كنت تريد تشغيل برنامج التشغيل الخاص بك مع Gstreamer وما إلى ذلك. جهاز صوتي منفصل عموما هو ما هو متوقع.

يعد معظم صوت بطاقة التقاط V4L2 الرخيصة فقط يمر التناظرية من خلال عنصر تحكم مستوى الصوت الذي يتطلب الخزاط لالتقاط الصوت عبر إدخال خط بطاقة الصوت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top