Android灵活实用的Android平台UVC摄像头引擎,无需任何系统权限即可轻松打开您的uvc摄像头(支持多路摄像头)。 您唯一应该做的就是确认您的 Android 设备必须支持 OTG 功能。 欢迎使用AUSBC3.0,欢迎star & fork & issues

 @ Example showing

Feature

  • 支持开启多路摄像头;
  • 支持在Android 4.4~11开启camera1、camera2和uvc camera;
  • 支持预览480p、720p、1080p等;
  • 支持使用 OpenGL ES 2.0 添加效果;
  • 支持抓图(.jpg)、视频(.mp4/.h264/yuv)和音频(pcm/mp3/aac)
  • 支持旋转相机视图;
  • 支持在屏幕外显示相机;
  • 支持录制媒体以及获取 h264/aac 流,您可以将其推送到您的媒体服务器;
  • 支持获取所有分辨率和usb设备等

Usages

AUSBC 3.0被kotlin重构,使用更简单,功能更丰富。 所以,我强烈建议您使用当前版本,让我们一起构建它。

  • 获取 AUSBC

 首先,将它添加到你的根目录build.gradlesettings.gradle

allprojects {repositories {google()jcenter()maven { url "https://jitpack.io" }}
}

 其次,在你的 app.gradle 中添加依赖,最新版本是 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SiVDEaQ7-1658640679873)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fafe2e67f10f40a287a32175a4ec87f9~tplv-k3u1fbpfcp-zoom-1.image)]:

dependencies {implementation 'com.github.jiangdongguo.AndroidUSBCamera:libausbc:latest_tag'
}
  • 简单使用

  至于如何正确使用这个库,只要让你的 Fragment 或 Activity 实现 CameraFragmentCameraActivity 即可。

class DemoFragment : CameraFragment() {private lateinit var mViewBinding: FragmentDemoBindingoverride fun initView() {}override fun getCameraView(): IAspectRatio {return AspectRatioTextureView(requireContext())}override fun initData() {}override fun getCameraViewContainer(): ViewGroup {return mViewBinding.cameraViewContainer}override fun getRootView(inflater: LayoutInflater, container: ViewGroup?): View {mViewBinding = FragmentDemoBinding.inflate(inflater, container, false)return mViewBinding.root}override fun getGravity(): Int = Gravity.TOP
}

 最重要的是你应该重写getRootView()/getCameraViewContainer()/
getCameraView() 至少表示fragment的根视图、纹理或表面视图以及它的容器。当然和CameraActivity一样,现在你可以看到uvc相机预览。

  • 高级用法

 如果你想要一些自定义配置,你可以这样做:

class DemoFragment : CameraFragment() {...override fun getCameraClient(): CameraClient? {return CameraClient.newBuilder(requireContext()).setEnableGLES(true)   // use opengl render .setRawImage(true)     // capture raw or filter image.setDefaultEffect(EffectBlackWhite(requireContext())) // default effect.setCameraStrategy(CameraUvcStrategy(requireContext())) // camera type.setCameraRequest(getCameraRequest()) // camera configurations.setDefaultRotateType(RotateType.ANGLE_0) // default camera rotate angle.openDebug(true) // is debug mode.build()}private fun getCameraRequest(): CameraRequest {return CameraRequest.CameraRequestBuilder().setFrontCamera(false) // only for camera1/camera2.setPreviewWidth(640)  // initial camera preview width.setPreviewHeight(480) // initial camera preview height.create()}
}

 毫无疑问CameraClient是这个库中的核心类,你可以使用默认的CameraClient对象来预览你的相机或自定义它。 通过使用CameraClient,您可以捕获jpg 图像或mp4 视频或mp3 音频文件并更新分辨率或不同的uvc 相机。 您甚至可以获取 H264/AAC/YUV 的流。 例如:

// capture jpg image
mCameraClient?.captureImage(callBack, savePath)// capture mp4 video
mCameraClient?.captureVideoStart(callBack, path, durationInSec)
mCameraClient?.captureVideoStop()// capture mp3 audio
mCameraClient?.captureAudioStart(callBack, path)
mCameraClient?.captureAudioStop()// play mic in real time
mCameraClient?.startPlayMic(callBack)
mCameraClient?.stopPlayMic()// rotate camera
// base on opening opengl es
mCameraClient?.setRotateType(type)// switch different camera
mCameraClient?.switchCamera(cameraId)// update resolution
mCameraClient?.updateResolution(width, height)// get all preview sizes
mCameraClient?.getAllPreviewSizes(aspectRatio)// acquire encode data(h264 or aac)
mCameraClient?.addEncodeDataCallBack(callBack)// acquire raw data(yuv)
mCameraClient?.addPreviewDataCallBack(callBack)

 对于更高级的功能,您甚至可以为您的相机添加一些滤镜。这个库提供了一些默认滤镜,如 EffectBlackWhiteEffectSoulEffectZoom 等 将来会添加过滤器。当然,您也可以通过扩展 AbstractEffect 来实现自己的过滤器。 例如:

// First, extending AbstractEffect
class EffectBlackWhite(ctx: Context) : AbstractEffect(ctx) {override fun getId(): Int = IDoverride fun getClassifyId(): Int = CameraEffect.CLASSIFY_ID_FILTERoverride fun getVertexSourceId(): Int = R.raw.base_vertexoverride fun getFragmentSourceId(): Int = R.raw.effect_blackw_fragmentcompanion object {const val ID = 100}
}// Second, adding or updating or removing filter
mCameraClient?.addRenderEffect(effect)
mCameraClient?.removeRenderEffect(effect)
mCameraClient?.updateRenderEffect(classifyId, effect)
  • 开启多路摄像头

 如果你想打开多路摄像头,你可以让你的Fragment或者Activity扩展MultiCameraFragment或者MultiCameraActivity。就这样做吧,更多细节请查阅DemoMultiCameraFragment

class DemoMultiCameraFragment : MultiCameraFragment(), ICameraStateCallBack {override fun onCameraAttached(camera: MultiCameraClient.Camera) {// a camera be attached}override fun onCameraDetached(camera: MultiCameraClient.Camera) {// a camera be detached}override fun onCameraConnected(camera: MultiCameraClient.Camera) {// a camera be connectedcamera.openCamera(textureView, getCameraRequest())camera.setCameraStateCallBack(this)}override fun onCameraDisConnected(camera: MultiCameraClient.Camera) {// a camera be disconnected}override fun onCameraState(self: MultiCameraClient.Camera,code: ICameraStateCallBack.State,msg: String?) {// a camera be opened or closed or error}override fun getRootView(inflater: LayoutInflater, container: ViewGroup?): View {return rootView}
}
  • 在线调试

 如果您想在线调试项目或修改某些内容,您应该执行以下步骤:

首先,修改 Settings.gradle 文件并使其成为模块。

include ':app'// For debug online
include ':libausbc'
include ':libuvc'
include ':libpush'
include ':libnative'
include ':libuvccommon'

其次,让 app.gradle 依赖于 ':libausbc'

dependencies {// For debug onlineimplementation project(':libausbc')// demo//implementation 'com.github.jiangdongguo.AndroidUSBCamera:libausbc:3.1.7'
}

@ 中文文档

Demo

  • download by Scanning code

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P6cSHC5m-1658640679874)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fdc8e416780b44039eff446f15389d58~tplv-k3u1fbpfcp-watermark.image?)]

  • download by opening url

 AUSBC3.2.0.apk

问答

1.相机预览黑屏?

首先,检查 targetSdk 版本。 如果 targetSdk>=28,您应该授予应用 android.permission.CAMERA 权限,此解决方案将照常解决。 但是,如果它不起作用,则必须将 targetSdk 设置为低于 28,因为这是自定义系统问题。 否则,如果您已经获得了 uvc 摄像头权限授予对话框,请向我发送一封电子邮件,其中包含您在位置 Android/data/com.jiangdg.ausbc/files 的日志。

主页和帮助

1。 JUEJIN

2. CSDN(更新停止)

 如果您有任何问题或有趣的想法,请发给我。
 当然,你也可以发邮件给我[765067602@qq.com]。

 所以,别忘了从位置Android/data/com.jiangdg.ausbc/files发送日志,并通过执行收集logcat信息command adb shell logcat -v threadtime > usbcamera.log

Github主页

https://github.com/jiangdongguo/AndroidUSBCamera

AUSBC3.0, 震撼来袭!(UVC Camera,支持开启多路摄像头)相关推荐

  1. 震撼来袭!(USB Camera,支持同时开启多路摄像头,支持旋转、镜像)

    [醍醐灌顶]我研究的ANDROID UVC CAMERA 技术,太实战了,经多款不同类型设备测试,运行稳定,具备通用性. Android灵活实用的Android平台UVC摄像头实例,无需任何系统权限即 ...

  2. Linux学习之ROS的uvc camera(笔记本的摄像头)

    相机相当于机器人的眼睛.从相机获得的图像对于识别机器人周围的环境非常有用. 例如,利用相机图像的对象识别和脸部识别:使用两台相机(立体相机)从两个不同图像 之间的差异获得的距离值:利用距离值生成3维地 ...

  3. Kn Script V6.3.0 震撼来袭!原名QQ可能想认识的人引流脚本

    世界上最美好的不过景致,是那些最初的心动不为人知 Kn Script原名是可能想认识的人,出于其他原因,今日正式改为Kn Script #Kn Script可以说是我更新最多的程序之一,虽然之前也有讲 ...

  4. 音乐无界限,听见好时光—网易云音乐Linux版震撼来袭!

    为了带来更好的音乐体验,实现对音乐高品质的追求,经过网易云音乐与深度科技团队长达半年多的联合开发,大家期待已久的网易云音乐正式登陆 Linux 平台! 网易云音乐是一款专注于发现与分享的音乐产品,依托 ...

  5. 震撼来袭!葡萄城商业智能报表软件Wyn Enterprise V5.0发布会前瞻,3大亮点抢先看

    围绕数据分析与智能化技术的不断迭代创新,实现由传统BI向新型BI的转变! 我们都知道,随着信息化覆盖的场景越来越多,企业的数据变得更精细.更全面,并且由客户驱动,实时互动,不断迭代,紧密相连.现阶段, ...

  6. [Android6.0][MTK6737] UVC Camera (MJPEG) 移植

    Hardware:MT6737 DeviceOS:Android6.0 Kernel: Linux3.18 HostOS: Ubuntu16.04 基础知识 USB video class(又称为US ...

  7. Android 双目 单usb,【android9.0】无法打开usb uvc camera

    背景:android9.0系统的开发板,接入双目摄像头,仅能打开其中一路摄像头,另一路打不开 关键log: 从串口打印看,usb驱动有正确识别到usb hub以及两路usb camera设备 [ 45 ...

  8. ROS 中的camera支持

    简介 在ros中有很多的camera包了,提供了非常好的camera支持.针对我的kinetic 可以搜素一下看看. $ apt-cache search camera | grep ros-kine ...

  9. uvc camera MTK平台调试总结

    USB video class(又称为USB video device class or UVC)就是USB device class视频产品在不需要安装任何的驱动程序下即插即用,包括摄像头.数字摄影 ...

最新文章

  1. R语言卡方分布函数Binomial Distribution(dchisq, pchisq, qchisq rchisq)实战
  2. 依赖注入框架Autofac学习笔记
  3. Ubuntu 下安装adobe flash player
  4. Transformer论文解读
  5. 解决Pycharm里远程调试缺乏DISPLAY环境变量的TkAgg报错
  6. python接口自动化4-绕过验证码登录(cookie) (转载)
  7. APP开发流程,移动应用开发流程
  8. WPS Office JS宏实现文件和数据的上传及下载
  9. Lcb小粉书隐私政策
  10. 【C++】队列优先队列详解——deque.queue.priority_queue
  11. 【SmartSvn】分支合并问题
  12. GIS:不同基准面坐标系转换
  13. (80)FPGA减法器设计(全减法器)
  14. pion ice项目源码分析
  15. 第五人格服务器维护中请稍后登录,第五人格:国际服维护重大故障,刚开精华二,却登录不了游戏...
  16. 自动控制原理02 数学模型
  17. 计算机应用基础前言,大学计算机基础
  18. 说文解字:SEO如何赢在起跑线上
  19. Ubuntu安装VNC,配置多用户vnc连接Ubuntu,开机自启vnc命令
  20. 为什么需要计算机语言?高级语言有哪些特点?

热门文章

  1. 替代3DJ6和3DG6的场效应管和三极管
  2. matplotlib.widgets简单上手
  3. face to face
  4. IDEA 2019注册码(激活码)
  5. python爬虫实现音乐下载
  6. uni-app 微信小程序接入高德SDK
  7. Mysql Data types in summary.
  8. C#中的EXCEL的查找操作
  9. mysql charindex 不存在_mysql – 分隔逗号分隔字符串 – FUNCTION db.CHARINDEX不存在
  10. java swing 下拉复选框_Java Swing JCheckBox复选框的实现方法