项目介绍
报ndk-build命令出错,将ndk路径由系统默认路径改为单独下载的/Users/mac02/Library/Android/android-ndk-r16b
相机open时错误,libuvccamera/src/main/jni/Application.mk 中打开NDK_TOOLCHAIN_VERSION := 4.9的注释,显式明确使用gcc编译,因为ndkr11版本之后gcc最高支持到4.9且默认clang编译。
去除所有moudle的layout xml文件中SimpleUVCCameraTextureView的background属性,因为此属性会导致xml解析inflate失败应用闪退。
修改项目使用的主题修改为AppCompat类的,不然会导致闪退。
settings.gradle中注释掉了部分moudle提高编译速度,项目根目录的build.gradle的仓库源改为了阿里镜像的提高速度。
使用说明an
android studio3.2 gradle4.6导入即可使用
现在有8个样例可供使用。
1)USBCameraTest0
这是最简单的项目,只显示如何使用SurfaceView来启动/停止预览。
2)USBCameraTest
这是最简单的项目,只显示如何启动/停止预览。这与USBCameraTest0几乎相同,但是使用自定义的TextureView来显示相机图像而不是使用SurfaceView。
3)USBCameraTest2
这是一个示例项目,演示如何使用MediaCodec编码器将UVC相机(无音频)的视频记录为.MP4文件。此示例需要API> = 18,因为MediaMuxer仅支持API> = 18。
4)USBCameraTest3
这是一个示范项目,演示如何将音频(来自内部麦克风)的视频(来自UVC相机)录制为.MP4文件。这也显示了几种捕捉静止图像的方式。此示例可能最适用于您的定制应用程序的基础项目。
5)USBCameraTest4
本示例显示了访问UVC相机并将视频图像保存到后台服务的方式。这是最复杂的示例之一,因为这需要使用AIDL的IPC。
6)USBCameraTest5
这与USBCameraTest3几乎相同,但使用IFrameCallback接口保存视频图像,而不是使用来自MediaCodec编码器的输入Surface。
在大多数情况下,您不应使用IFrameCallback来保存图像,因为IFrameCallback比使用Surface要慢很多。但是,如果您想获取视频帧数据并自行处理它们或将它们作为字节缓冲区传递给其他外部库,则IFrameCallback将非常有用。
7)USBCameraTest6
这显示了如何将视频图像分割为多个Surface。你可以在这个应用程序中看到视频图像并排观看。这个例子还展示了如何使用EGL来渲染图像。如果您想在添加视觉效果/滤镜效果后显示视频图像,则此示例可能会对您有所帮助。
8)USBCameraTest7
这显示了如何使用两个摄像头并显示来自每个摄像头的视频图像。这仍然是实验性的,可能有一些问题。
9)usbCameraTest8这显示了如何设置/获取uvc控件。目前这只支持亮度和对比度。