实际生活中经常遇到要使用一个摄像头做多个事情的情况,但在开发中,一个摄像头只能被一个应用程序所占有,当一个应用程序在使用摄像头时,其他所有应用程序都无法在使用这个摄像头。怎么解决这个问题呢?其实可以采用虚拟摄像头技术。
从网上找的虚拟摄像头技术一个比较容易理解的框架图。

根据这个图很容易理解就是需要实现一个camera proxy,来实现把真实摄像头的数据时时放入虚拟摄像头。
以rk3288 android5.1来实现这个举例。
一、首先要实现/dev/videox虚拟设备描述符的创建。
通过v4l2loopback可以方便的实现这一步处理。
二、采用v4l2tools里面的v4l2copy可以实现把真实摄像头数据时时放入虚拟摄像头。(v4l2copy要稍微修改下)
但v4l2tools的v4l2copy只能实现从摄像头读取什么格式的视频,然后把这个格式的数据原样放入到虚拟摄像头。
不能实现视频的转码编码。比如当真实摄像头输出为mjpg 720p时,虚拟摄像头输出的数据也只能是mjpg 720p。<

本文介绍了如何在Android设备上实现虚拟摄像头技术,以解决一个摄像头被单一应用占用的问题。通过v4l2loopback创建虚拟设备描述符,v4l2copy进行数据传输,并利用rk3288的Mpp模块进行硬件编解码,实现实时转换不同格式的视频数据。虽然使用了硬件加速,但在将数据推送到rtsp服务器时仍存在2-3s的延迟。
最低0.47元/天 解锁文章
3931

被折叠的 条评论
为什么被折叠?



