安卓获取摄像头帧率_一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法_2015109767475_说明书_专利查询_专利网_钻瓜专利网...

技术领域

本发明涉及通讯技术领域,尤其涉及一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法。

背景技术

多媒体终端基于android平台,在会议应用等场景中,需要使用外置的USB摄像头,以提高清晰程度,但市面上较多的都是支持USB2.0摄像头,采集的格式一般支持YUV/MJPEG格式,目前多媒体终端抽象层采用的是YUV格式,如果分辨率超过720P/1080P的时候,由于受USB带宽限制,通常帧率达不到15以上,这就在运动比较频繁的场景中,多媒体终端使得用户体验不够好。

发明内容

本发明要解决的技术问题,在于提供一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法,使得USB2.0摄像头不会在运动频率比较大的情况下,采集的视频出现模糊情况。

本发明是这样实现的:一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法,

所述USB2.0摄像头支持UVC驱动,通过V4L2接口设置采样视频的格式;

在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使android终端的应用层在高分辨率情况下使用高帧率。

进一步的,所述方法进一步具体为:

打开摄像头抽象层时,通过ioctl函数向UVC驱动申请缓存buffer,并通过mmap函数将缓存buffer映射进用户空间;

USB2.0摄像头适配层里面的StartPrivew函数会设置视频格式的长和宽,在设置NV21格式时,则判断视频分辨率是否是720P/1080P,如果是720P/1080P,则视频格式转化成V4L2_PIX_FMT_MJPEG,否,则不进行操作;

线程类PreviewThread获取到一帧数据frame后,将视频的MJPEG格式数据存储在frame虚拟地址上;如果帧格式是V4L2_PIX_FMT_MJPEG,则进行MJPEG转化成NV12数据;

把转换解码出得的NV21数据拷贝到frame虚拟地址,并重新设置帧数据frame的格式为V4L2_PIX_FMT_NV21。

进一步的,所述MJPEG转化成NV12数据能采用硬件加速进行转换解码,硬件加速流程如下:

首先USB2.0摄像头动态加载硬件加速库librk_vpuapi.so;

通过dlsym函数,获取MJPEG解码函数get_class_RkJpegDecoder;

根据获取到得解码函数,进行MJPEG转换解码成NV21格式;

如果不支持硬件加速时,则进行软件解码MJPEG。

本发明具有如下优点:本发明在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使android终端的应用层在高分辨率情况下使用高帧率;本发明能在USB2.0摄像头分辨率高的情况下,提高了帧率,提高用户的体验,USB2.0摄像头不会在运动频率比较大的情况下,采集的视频出现模糊情况。

附图说明

图1为本发明方法流程示意图。

具体实施方式

请参阅图1所示,本发明的一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法,

所述USB2.0摄像头支持UVC驱动,通过V4L2接口设置采样视频的格式;其中,USB2.0通常支持MJPEG压缩格式,通过MJPEG格式,MJPEG是一种视频压缩格式,每一帧图像分辨使用JPEG编码,占用带宽比原始的YUV格式小很多,所以即使720P(长1280,宽720)/1080P分辨率下,也是可以支持20/30帧;该USB2.0摄像头即插即用免驱动;

在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使android终端的应用层(APP应用程序)在高分辨率情况下使用高帧率。

其中,所述方法进一步具体为:

打开摄像头抽象层时,通过ioctl函数向UVC驱动申请缓存buffer,并通过mmap函数将缓存buffer映射进用户空间;

USB2.0摄像头适配层里面的StartPrivew函数会设置视频格式的长和宽,在设置NV21格式时,则判断视频分辨率是否是720P/1080P,如果是720P/1080P,则视频格式转化成V4L2_PIX_FMT_MJPEG(即通过V4L2接口设置视频格式VIDIOC_S_FMT为V4L2_PIX_FMT_MJPEG格式;),否,则不进行操作;这种做法保证android终端app应用默认还是NV21格式,无需改变上面应用程序。

线程类PreviewThread获取到一帧数据frame后,将视频的MJPEG格式数据存储在frame虚拟地址上;如果帧格式是V4L2_PIX_FMT_MJPEG,则进行MJPEG转化成NV12数据;

把转换解码出得的NV21数据拷贝到frame虚拟地址,并重新设置帧数据frame的格式为V4L2_PIX_FMT_NV21。

另外,所述MJPEG转化成NV12数据能采用硬件加速进行转换解码,硬件加速流程如下:如RK3288芯片,支持硬件加速,

首先USB2.0摄像头动态加载硬件加速库librk_vpuapi.so;

通过dlsym函数,获取MJPEG解码函数get_class_RkJpegDecoder;

根据获取到得解码函数,进行MJPEG转换解码成NV21格式;

如果不支持硬件加速时,则进行软件解码MJPEG。

总之,本发明在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使android终端的应用层在高分辨率情况下使用高帧率;本发明能在USB2.0摄像头分辨率高的情况下,提高了帧率,提高用户的体验,USB2.0摄像头不会在运动频率比较大的情况下,采集的视频出现模糊情况。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值