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

技术编号:13200130 阅读:264 留言:0更新日期:2016-05-12 09:56
本发明专利技术提供一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法,所述USB2.0摄像头支持UVC驱动,通过V4L2接口设置采样视频的格式;在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使android终端的应用层在高分辨率情况下使用高帧率。本发明专利技术在USB2.0摄像头分辨率高的情况下,提高了帧率,提高用户的体验,USB2.0摄像头不会在运动频率比较大的情况下,采集的视频出现模糊情况。

【技术实现步骤摘要】

本专利技术涉及通讯
,尤其涉及。
技术介绍
多媒体终端基于android平台,在会议应用等场景中,需要使用外置的USB摄像头,以提高清晰程度,但市面上较多的都是支持USB2.0摄像头,采集的格式一般支持YUV/MJPEG格式,目前多媒体终端抽象层采用的是YUV格式,如果分辨率超过720P/1080P的时候,由于受USB带宽限制,通常帧率达不到15以上,这就在运动比较频繁的场景中,多媒体终端使得用户体验不够好。
技术实现思路
本专利技术要解决的技术问题,在于提供,使得USB2.0摄像头不会在运动频率比较大的情况下,采集的视频出现模糊情况。本专利技术是这样实现的:,所述USB2.0摄像头支持UVC驱动,通过V4L2接口设置采样视频的格式;在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使andro i d终端的应用层在高分辨率情况下使用高帧率。进一步的,所述方法进一步具体为:打开摄像头抽象层时,通过1ctl函数向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。进一步的,所述MJPEG转化成NV12数据能采用硬件加速进行转换解码,硬件加速流程如下:首先USB2.0摄像头动态加载硬件加速库Iibrk_vpuap1.so ;通过dlsym 函数,获取 MJPEG 解码函数 get_class_RkJpegDecoder;根据获取到得解码函数,进行MJPEG转换解码成NV21格式;如果不支持硬件加速时,则进行软件解码MJPEG。本专利技术具有如下优点:本专利技术在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使android终端的应用层在高分辨率情况下使用高帧率;本专利技术能在USB2.0摄像头分辨率高的情况下,提高了帧率,提高用户的体验,USB2.0摄像头不会在运动频率比较大的情况下,采集的视频出现模糊情况。【附图说明】图1为本专利技术方法流程示意图。【具体实施方式】请参阅图1所示,本专利技术的,所述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应用程序)在高分辨率情况下使用高帧率。其中,所述方法进一步具体为:打开摄像头抽象层时,通过1ctl函数向UVC驱动申请缓存buffer,并通过mmap函数将缓存buffer映射进用户空间;USB2.0摄像头适配层里面的StartPrivew函数会设置视频格式的长和宽,在设置NV21格式时,则判断视频分辨率是否是720P/1080P,如果是720P/1080P,则视频格式转化成V4L2_PIX_FMT_MJPEG(即通过 V4L2 接口 设置视频格式 VID10C_S_FMT 为 V4L2_PIX_FMT_MJPEG格式;),否,则不进行操作;这种做法保证android终端app应用默认还是NV21格式,无需改变上面应用程序。线程类PreviewThread获取到一帧数据frame后,将视频的MJPEG格式数据存储在frame虚拟地址上;如果帧格式是V4L2_PIX_FMT_MJPEG,则进行MJPEG转化成NVl 2数据;把转换解码出得的NV21数据拷贝到frame虚拟地址,并重新设置帧数据frame的格式为 V4L2_PIX_FMT_NV21。另外,所述MJPEG转化成NV12数据能采用硬件加速进行转换解码,硬件加速流程如下:如RK3288芯片,支持硬件加速,首先USB2.0摄像头动态加载硬件加速库I ibrk_vpuap1.so ;通过dlsym 函数,获取 MJPEG 解码函数 get_class_RkJpegDecoder;根据获取到得解码函数,进行MJPEG转换解码成NV21格式; 如果不支持硬件加速时,则进行软件解码MJPEG。总之,本专利技术在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使android终端的应用层在高分辨率情况下使用高帧率;本专利技术能在USB2.0摄像头分辨率高的情况下,提高了帧率,提高用户的体验,USB2.0摄像头不会在运动频率比较大的情况下,采集的视频出现模糊情况。以上所述仅为本专利技术的较佳实施例,凡依本专利技术申请专利范围所做的均等变化与修饰,皆应属本专利技术的涵盖范围。【主权项】1.,其特征在于: 所述USB2.0摄像头支持UVC驱动,通过V4L2接口设置采样视频的格式; 在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使android终端的应用层在高分辨率情况下使用高帧率。2.根据权利要求1所述的,其特征在于:所述方法进一步具体为: 打开摄像头抽象层时,通过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所述的,其特征在于: 所述MJPEG转化成NV12数据能采用硬件加速进行转换解码,硬件加速流程如下: 首先USB2.0摄像头本文档来自技高网...

【技术保护点】
一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法,其特征在于:所述USB2.0摄像头支持UVC驱动,通过V4L2接口设置采样视频的格式;在采集的视频分辨率是720P/1080P时,摄像头抽象层采用MJPEG格式,从摄像头抽象层收到MJPEG流后,将MJPEG流实时转成NV21格式,使android终端的应用层在高分辨率情况下使用高帧率。

【技术特征摘要】

【专利技术属性】
技术研发人员:钟添华
申请(专利权)人:福建星网智慧科技股份有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1