一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法

文档序号:9814565阅读:1762来源:国知局
一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法
【技术领域】
[0001 ]本发明涉及通讯技术领域,尤其涉及一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法。
【背景技术】
[0002]多媒体终端基于android平台,在会议应用等场景中,需要使用外置的USB摄像头,以提高清晰程度,但市面上较多的都是支持USB2.0摄像头,采集的格式一般支持YUV/MJPEG格式,目前多媒体终端抽象层采用的是YUV格式,如果分辨率超过720P/1080P的时候,由于受USB带宽限制,通常帧率达不到15以上,这就在运动比较频繁的场景中,多媒体终端使得用户体验不够好。

【发明内容】

[0003]本发明要解决的技术问题,在于提供一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法,使得USB2.0摄像头不会在运动频率比较大的情况下,采集的视频出现模糊情况。
[0004]本发明是这样实现的:一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法,
[0005]所述USB2.0摄像头支持UVC驱动,通过V4L2接口设置采样视频的格式;
[0006]在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使andro i d终端的应用层在高分辨率情况下使用高帧率。
[0007]进一步的,所述方法进一步具体为:
[0008]打开摄像头抽象层时,通过1ctl函数向UVC驱动申请缓存buffer,并通过mmap函数将缓存buffer映射进用户空间;
[0009]USB2.0摄像头适配层里面的StartPrivew函数会设置视频格式的长和宽,在设置NV21格式时,则判断视频分辨率是否是720P/1080P,如果是720P/1080P,则视频格式转化成V4L2_PIX_FMT_MJPEG,否,则不进行操作;
[0010]线程类PreviewThread获取到一帧数据frame后,将视频的MJPEG格式数据存储在frame虚拟地址上;如果帧格式是V4L2_PIX_FMT_MJPEG,则进行MJPEG转化成NVl 2数据;
[0011]把转换解码出得的NV21数据拷贝到frame虚拟地址,并重新设置帧数据frame的格式为 V4L2_PIX_FMT_NV21。
[0012]进一步的,所述MJPEG转化成NV12数据能采用硬件加速进行转换解码,硬件加速流程如下:
[0013]首先USB2.0摄像头动态加载硬件加速库Iibrk_vpuap1.so ;
[0014]通过dlsym 函数,获取 MJPEG 解码函数 get_class_RkJpegDecoder;
[0015]根据获取到得解码函数,进行MJPEG转换解码成NV21格式;
[0016]如果不支持硬件加速时,则进行软件解码MJPEG。
[0017]本发明具有如下优点:本发明在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使android终端的应用层在高分辨率情况下使用高帧率;本发明能在USB2.0摄像头分辨率高的情况下,提高了帧率,提高用户的体验,USB2.0摄像头不会在运动频率比较大的情况下,采集的视频出现模糊情况。
【附图说明】
[0018]图1为本发明方法流程示意图。
【具体实施方式】
[0019]请参阅图1所示,本发明的一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法,
[0020]所述USB2.0摄像头支持UVC驱动,通过V4L2接口设置采样视频的格式;其中,USB2.0通常支持MJPEG压缩格式,通过MJPEG格式,MJPEG是一种视频压缩格式,每一帧图像分辨使用JPEG编码,占用带宽比原始的YUV格式小很多,所以即使720P (长1280,宽720) /1080P分辨率下,也是可以支持20/30帧;该USB2.0摄像头即插即用免驱动;
[0021]在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使android终端的应用层(APP应用程序)在高分辨率情况下使用高帧率。
[0022]其中,所述方法进一步具体为:
[0023]打开摄像头抽象层时,通过1ctl函数向UVC驱动申请缓存buffer,并通过mmap函数将缓存buffer映射进用户空间;
[0024]USB2.0摄像头适配层里面的StartPrivew函数会设置视频格式的长和宽,在设置NV21格式时,则判断视频分辨率是否是720P/1080P,如果是720P/1080P,则视频格式转化成V4L2_PIX_FMT_MJPEG(即通过 V4L2 接口 设置视频格式 VID10C_S_FMT 为 V4L2_PIX_FMT_MJPEG格式;),否,则不进行操作;这种做法保证android终端app应用默认还是NV21格式,无需改变上面应用程序。
[0025]线程类PreviewThread获取到一帧数据frame后,将视频的MJPEG格式数据存储在frame虚拟地址上;如果帧格式是V4L2_PIX_FMT_MJPEG,则进行MJPEG转化成NVl 2数据;
[0026]把转换解码出得的NV21数据拷贝到frame虚拟地址,并重新设置帧数据frame的格式为 V4L2_PIX_FMT_NV21。
[0027]另外,所述MJPEG转化成NV12数据能采用硬件加速进行转换解码,硬件加速流程如下:如RK3288芯片,支持硬件加速,
[0028]首先USB2.0摄像头动态加载硬件加速库I ibrk_vpuap1.so ;
[0029]通过dlsym 函数,获取 MJPEG 解码函数 get_class_RkJpegDecoder;
[0030]根据获取到得解码函数,进行MJPEG转换解码成NV21格式;
[0031 ] 如果不支持硬件加速时,则进行软件解码MJPEG。
[0032]总之,本发明在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使android终端的应用层在高分辨率情况下使用高帧率;本发明能在USB2.0摄像头分辨率高的情况下,提高了帧率,提高用户的体验,USB2.0摄像头不会在运动频率比较大的情况下,采集的视频出现模糊情况。
[0033]以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
【主权项】
1.一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法,其特征在于: 所述USB2.0摄像头支持UVC驱动,通过V4L2接口设置采样视频的格式; 在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使android终端的应用层在高分辨率情况下使用高帧率。2.根据权利要求1所述的一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法,其特征在于:所述方法进一步具体为: 打开摄像头抽象层时,通过1ctI函数向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转化成NVl 2数据; 把转换解码出得的NV21数据拷贝到frame虚拟地址,并重新设置帧数据frame的格式为V4L2_PIX_FMT_NV21。3.根据权利要求2所述的一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法,其特征在于: 所述MJPEG转化成NV12数据能采用硬件加速进行转换解码,硬件加速流程如下: 首先USB2.0摄像头动态加载硬件加速库librk_vpuap1.so ; 通过 dlsym 函数,获取 MJPEG 解码函数 get_class_RkJpegDecoder ; 根据获取到得解码函数,进行MJPEG转换解码成NV21格式; 如果不支持硬件加速时,则进行软件解码MJPEG。
【专利摘要】本发明提供一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法,所述USB2.0摄像头支持UVC驱动,通过V4L2接口设置采样视频的格式;在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使android终端的应用层在高分辨率情况下使用高帧率。本发明在USB2.0摄像头分辨率高的情况下,提高了帧率,提高用户的体验,USB2.0摄像头不会在运动频率比较大的情况下,采集的视频出现模糊情况。
【IPC分类】H04N5/232, H04N5/225
【公开号】CN105578008
【申请号】CN201510976747
【发明人】钟添华
【申请人】福建星网智慧科技股份有限公司
【公开日】2016年5月11日
【申请日】2015年12月23日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1