Universal UVCCamera library,supporting recording, pushing, etc
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
蒋东国 6a13e49365 Create README.md 7 years ago
.gradle Initial commit 7 years ago
.idea tijiao 7 years ago
app 支持边推流,边本地录制 7 years ago
build/generated tijiao 7 years ago
gradle/wrapper Initial commit 7 years ago
libusbcamera 支持边推流,边本地录制 7 years ago
AndroidUSBCamera.iml Initial commit 7 years ago
README.md Create README.md 7 years ago
build.gradle Initial commit 7 years ago
gradle.properties Initial commit 7 years ago
gradlew Initial commit 7 years ago
gradlew.bat Initial commit 7 years ago
local.properties xuigai 7 years ago
settings.gradle Initial commit 7 years ago

README.md

AndroidUSBCamera开源项目

##AndroidUSBCamera基于saki4510t/UVCCamera开发,该项目对USB Camera(UVC设备)的使用和视频数据采集进行了高度封装,能够 帮助开发者通过几个简单的API实现USB Camera设备的检测、连接、预览和视频数据采集。主要功能包括:USB Camera实时预览;本地录制mp4格式视频;png格式图片 抓拍;实时获取编码后的音视频数据流。

##如何使用AndroidUSBCamera项目 ###1.添加依赖到本地工程 To get a Git project into your build: 第一步 添加JitPack仓库到工程gradle Step 1. Add the JitPack repository to your build file Add it in your root build.gradle at the end of repositories: allprojects { repositories { ... maven { url 'https://jitpack.io' } } } 第二步 添加依赖到app Module的gradle Step 2. Add the dependency dependencies { compile 'com.github.jiangdongguo:AndroidUSBCamera:v1.0.0' }
###2.初始化引擎,注册USB设备事件监听器 Init AndroidUSBCamera engine,register the USB device event listener ` USBCameraManager mUSBManager = USBCameraManager.getInstance(); // mTextureView为UVCCameraTextureView实例,继承于TextureView // 用于渲染图像,需要在xml文件中定义 CameraViewInterface mUVCCameraView = (CameraViewInterface) mTextureView; // 初始化引擎,注册事件监听器 mUSBManager.init(this, mUVCCameraView, new USBCameraManager.OnMyDevConnectListener() { // 插入USB设备 @Override public void onAttachDev(UsbDevice device) { if(mUSBManager == null || mUSBManager.getUsbDeviceCount() == 0){ showShortMsg("未检测到USB摄像头设备"); return; } // 请求打开摄像头 if(! isRequest){ isRequest = true; if(mUSBManager != null){ mUSBManager.requestPermission(0); } } }

    // 拔出USB设备
    @Override
    public void onDettachDev(UsbDevice device) {
        if(isRequest){
            // 关闭摄像头
            isRequest = false;
            mUSBManager.closeCamera();
            showShortMsg(device.getDeviceName()+"已拨出");
        }
    }

    // 连接USB设备成功
    @Override
    public void onConnectDev(UsbDevice device) {
    
    }

    // 与USB设备断开连接
    @Override
    public void onDisConnectDev(UsbDevice device) {
      
    }
});

###3. 注册USB设备广播事件监听器,开始Camera预览 Register the USB device broadcast event listener and start the Camera Preview // 注册USB事件广播监听器 if(mUSBManager != null){ mUSBManager.registerUSB(); } // 恢复Camera预览 if(mUVCCameraView != null){ mUVCCameraView.onResume(); } ###4. 注销USB设备广播事件监听器,停止Camera预览 Unregister the USB device broadcast event listener and stop the Camera Preview // 注销USB事件广播监听器 if(mUSBManager != null){ mUSBManager.unregisterUSB(); } // 暂停Camera预览 if(mUVCCameraView != null){ mUVCCameraView.onPause(); } ###5. 图片抓拍 Picture capturing if(mUSBManager == null || ! mUSBManager.isCameraOpened()){ showShortMsg("抓拍异常,摄像头未开启"); return; } mUSBManager.capturePicture(picPath); ###6. 本地录制(可实时获取音视频数据流) recoring mp4,and get media real-stream if(mUSBManager == null || ! mUSBManager.isCameraOpened()){ showShortMsg("录制异常,摄像头未开启"); return; } // 开始录制 if( !mUSBManager.isRecording()){ mUSBManager.startRecording(videoPath, new AbstractUVCCameraHandler.OnEncodeResultListener() { @Override public void onEncodeResult(byte[] data, int offset, int length, long timestamp, int type) { // type=0为视频流,type=1为音频流 }); } // 停止录制 mUSBManager.stopRecording(); ###7. 释放引擎资源 release resource // 释放资源 if(mUSBManager != null){ mUSBManager.release(); } ###USBCameraManager API (Other) (1) void requestPermission(int index):请求授予开启USB摄像头权限; (2) int getUsbDeviceCount():返回查询到的可用USB Camera数目; (3) boolean isRecording():判断是否正在录制视频; (4) boolean isCameraOpened():判断USB摄像头是否正常打开; (5) void release():释放资源 (6) USBMonitor getUSBMonitor():返回USBMonitor实例; `