AUSBC3.0, 震撼来袭!(UVC Camera,支持开启多路摄像头)
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.gradle 或settings.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 实现 CameraFragment 或 CameraActivity 即可。
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)
对于更高级的功能,您甚至可以为您的相机添加一些滤镜。这个库提供了一些默认滤镜,如 EffectBlackWhite、EffectSoul 和 EffectZoom 等 将来会添加过滤器。当然,您也可以通过扩展 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,支持开启多路摄像头)相关推荐
- 震撼来袭!(USB Camera,支持同时开启多路摄像头,支持旋转、镜像)
[醍醐灌顶]我研究的ANDROID UVC CAMERA 技术,太实战了,经多款不同类型设备测试,运行稳定,具备通用性. Android灵活实用的Android平台UVC摄像头实例,无需任何系统权限即 ...
- Linux学习之ROS的uvc camera(笔记本的摄像头)
相机相当于机器人的眼睛.从相机获得的图像对于识别机器人周围的环境非常有用. 例如,利用相机图像的对象识别和脸部识别:使用两台相机(立体相机)从两个不同图像 之间的差异获得的距离值:利用距离值生成3维地 ...
- Kn Script V6.3.0 震撼来袭!原名QQ可能想认识的人引流脚本
世界上最美好的不过景致,是那些最初的心动不为人知 Kn Script原名是可能想认识的人,出于其他原因,今日正式改为Kn Script #Kn Script可以说是我更新最多的程序之一,虽然之前也有讲 ...
- 音乐无界限,听见好时光—网易云音乐Linux版震撼来袭!
为了带来更好的音乐体验,实现对音乐高品质的追求,经过网易云音乐与深度科技团队长达半年多的联合开发,大家期待已久的网易云音乐正式登陆 Linux 平台! 网易云音乐是一款专注于发现与分享的音乐产品,依托 ...
- 震撼来袭!葡萄城商业智能报表软件Wyn Enterprise V5.0发布会前瞻,3大亮点抢先看
围绕数据分析与智能化技术的不断迭代创新,实现由传统BI向新型BI的转变! 我们都知道,随着信息化覆盖的场景越来越多,企业的数据变得更精细.更全面,并且由客户驱动,实时互动,不断迭代,紧密相连.现阶段, ...
- [Android6.0][MTK6737] UVC Camera (MJPEG) 移植
Hardware:MT6737 DeviceOS:Android6.0 Kernel: Linux3.18 HostOS: Ubuntu16.04 基础知识 USB video class(又称为US ...
- Android 双目 单usb,【android9.0】无法打开usb uvc camera
背景:android9.0系统的开发板,接入双目摄像头,仅能打开其中一路摄像头,另一路打不开 关键log: 从串口打印看,usb驱动有正确识别到usb hub以及两路usb camera设备 [ 45 ...
- ROS 中的camera支持
简介 在ros中有很多的camera包了,提供了非常好的camera支持.针对我的kinetic 可以搜素一下看看. $ apt-cache search camera | grep ros-kine ...
- uvc camera MTK平台调试总结
USB video class(又称为USB video device class or UVC)就是USB device class视频产品在不需要安装任何的驱动程序下即插即用,包括摄像头.数字摄影 ...
最新文章
- R语言卡方分布函数Binomial Distribution(dchisq, pchisq, qchisq rchisq)实战
- 依赖注入框架Autofac学习笔记
- Ubuntu 下安装adobe flash player
- Transformer论文解读
- 解决Pycharm里远程调试缺乏DISPLAY环境变量的TkAgg报错
- python接口自动化4-绕过验证码登录(cookie) (转载)
- APP开发流程,移动应用开发流程
- WPS Office JS宏实现文件和数据的上传及下载
- Lcb小粉书隐私政策
- 【C++】队列优先队列详解——deque.queue.priority_queue
- 【SmartSvn】分支合并问题
- GIS:不同基准面坐标系转换
- (80)FPGA减法器设计(全减法器)
- pion ice项目源码分析
- 第五人格服务器维护中请稍后登录,第五人格:国际服维护重大故障,刚开精华二,却登录不了游戏...
- 自动控制原理02 数学模型
- 计算机应用基础前言,大学计算机基础
- 说文解字:SEO如何赢在起跑线上
- Ubuntu安装VNC,配置多用户vnc连接Ubuntu,开机自启vnc命令
- 为什么需要计算机语言?高级语言有哪些特点?
热门文章
- 替代3DJ6和3DG6的场效应管和三极管
- matplotlib.widgets简单上手
- face to face
- IDEA 2019注册码(激活码)
- python爬虫实现音乐下载
- uni-app 微信小程序接入高德SDK
- Mysql Data types in summary.
- C#中的EXCEL的查找操作
- mysql charindex 不存在_mysql – 分隔逗号分隔字符串 – FUNCTION db.CHARINDEX不存在
- java swing 下拉复选框_Java Swing JCheckBox复选框的实现方法