技术领域

本发明涉及通讯技术领域,尤其涉及一种基于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摄像头不会在运动频率比较大的情况下,采集的视频出现模糊情况。

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

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

  1. 安卓获取摄像头帧率_一种基于android终端提高USB2.0摄像头高分辨率高帧率的方法...

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

  2. gis快速接地开关_一种基于扫描电镜和能谱仪的GIS放电异物来源分析方法

    扫描电镜(SEM)及其附带的能谱仪(EDS)可以用来进行金属的组织形貌观察和微区成分分析.扫描电镜具有景深大.图像立体等优点,图像放大倍数范围为8~300000倍,试验人员可以通过调节扫描电镜的相关参 ...

  3. python椭圆形骨料_一种基于python再生混凝土三维随机球形骨料模型的构建方法与流程...

    本发明涉及建筑技术领域,尤其涉一种基于python再生混凝土三维随机球形骨料模型的构建方法. 背景技术: 再生混凝土是指利用再生粗骨料部分或者全部代替天然骨料配置而成的混凝土,再生混凝土技术的开发和利 ...

  4. 云管边端架构图_一种基于“云-管-边-端”架构的智能配电系统的制作方法

    本发明属于监控领域,特别涉及一种适用于低压配电房.配电室的基于"云-管-边-端"架构的智能配电系统. 背景技术: 2019年,国网配电专业工作会议提出了"大力推进配电物联 ...

  5. 基于zynq的千兆网udp项目_一种基于ZYNQ的四路万兆以太网安全交换机的制作方法...

    本实用新型涉及网络安全.网络通信技术领域,尤其是一种基于ZYNQ的四路万兆以太网安全交换机,适用于大中型企业的交换网络. 背景技术: 随着互联网的高速发展,传统的以太网交换机在功能和性能上已不能满足要 ...

  6. 浅析一种基于Android、iOS平台的移动端银行卡识别方法,简化移动支付中卡号绑定过程

    近些年来,我国经济飞速发展,科技实力日益突飞猛进.手机移动端的使用给人们的生活带来了许多便利.日常生活中,移动端支付的方式越来越流行.手机端进行支付往往需要绑定银行卡.目前,在众多需要录入银行卡信息才 ...

  7. android 行车记录仪分析,基于Android架构行车记录仪的异常掉电可播放视频方法与流程...

    本发明涉及摄录像视频技术领域,特别涉及一种基于Android架构行车记录仪的异常掉电可播放视频方法. 背景技术: 随着车联网概念的兴起和技术的积累,越来越多的智能设备被接入到车辆上.行车记录仪作为非常 ...

  8. 人物关系 人脸识别_一种基于人脸识别系统的人物关系挖掘系统及方法与流程...

    本发明涉及人脸识别技术领域,具体涉及一种基于人脸识别技术进行人物关系挖掘的系统及其方法. 背景技术: 人脸识别作为生物身份识别的典型技术,由于不需要被检测个体的主动配合,近年来在人机交互,安防,身份认 ...

  9. android多个摄像头,一种基于Android多应用共享摄像头的系统及方法与流程

    本发明涉及一种基于Android多应用共享摄像头的系统及方法,属于计算机领域. 背景技术: 在一些特殊的应用场景.例如后台一直在录像,这时摄像头会被录像应用一直占有,其他的应用无法再打开摄像头.如果其 ...

最新文章

  1. adc参考电压是直流交流_无位置传感器无刷直流电机换相误差校正的新方法
  2. AI能写出靠谱医学报告了,CVPR2021收录 | 腾讯医典出品
  3. Timer定时器Demo
  4. 移动云亮相 2021 IDC 年度盛典 共话变革与赋能
  5. Wireshark验证TCP三次握手四次挥手
  6. thymeleaf条件表达式
  7. MySQL 代码开发注意事项----开发高性能的sql
  8. 五分钟搞定单片机keil5 运行破解安装教程
  9. SAP MM 发货到成本中心场景下的批次确定
  10. ble HCI 流控机制
  11. ADSL家庭宽带用户提高迅雷下载速度的几个实用方法
  12. 运行maven项目报错 :The forked VM terminated without saying properly goodbye. VM crash or System.exit calle
  13. JavaScript设计模式(2)—— 多种继承方式的实现及原理
  14. IHS Markit:苹果16英寸MacBook Pro将采用英特尔第9代处理器
  15. 2019年Android GMS 认证 boot logo 最新要求
  16. Linux丢包问题排查思路
  17. 打造百亿量级、亿级日活SDK的十大关键要点
  18. TalkingData:未来10年是大数据价值变现的阶段
  19. cannot import name ContextVar
  20. Python 实现 周志华 《机器学习》 BP算法

热门文章

  1. 配置服务器代理【setupProxy】代理http-proxy-middleware
  2. 经典华容道游戏(含bfs求解)
  3. 39、HumanNeRF
  4. 范畴论:1.2 类型和函数
  5. 手把手教你搭建一个Minecraft 服务器
  6. 路漫漫其修远兮,吾将上下而求索---我的五年工作总结
  7. 基于 Ceph 的 Kubernetes 数据持久化
  8. (附源码)php学生考勤管理系统-计算机毕设080900
  9. Python求出0-100之间的素数
  10. [转贴]E680新手宝典