AndroidUSBCamera
android usb camera on non-rooted Android devices.
在Android设备上使用外接usb摄像头的项目,无需root权限。
use step:
1.init view and camera
mCameraView.setAspectRatio(PREVIEW_WIDTH / (float)PREVIEW_HEIGHT);
camera = new USBCamera();
camera.init(this);
camera.setCameraType(CameraType.C3D_SBS);
2. start preview
if(!camera.isCameraOpened()){
boolean ret = camera.open(0);
if(!ret){
Toast.makeText(USBCameraActivity.this, "NO_USB_DEVICE", Toast.LENGTH_SHORT).show();
}else {
camera.setPreviewSize(PREVIEW_WIDTH,PREVIEW_HEIGHT);
camera.setPreviewTexture(mCameraView.getSurfaceTexture());
camera.startPreview();
}
}
3. captureStill
if(camera.isCameraOpened()){
Toast.makeText(USBCameraActivity.this, "Captured", Toast.LENGTH_SHORT).show();
camera.captureStill();
}
4. recording
if(camera.isCameraOpened() && !camera.isRecording()){
Toast.makeText(USBCameraActivity.this, "startRecording", Toast.LENGTH_SHORT).show();
camera.startRecording();
}
if(camera.isCameraOpened() && camera.isRecording()){
Toast.makeText(USBCameraActivity.this, "stopRecording", Toast.LENGTH_SHORT).show();
camera.stopRecording();
}
5. stop
if(camera.isCameraOpened()){
camera.close();
}
6. destory
camera.destroy();
Referhttp://bigflake.com/mediacodec/
注意:
PREVIEW_WIDTH、PREVIEW_HEIGHT的大小和外接摄像头,手机硬件编码器有关。
不合适的值,可能会发生错误。
常见值:
标清:480P 640*480
高清:720P 1280*720
超清:1080P 1920*1080
如果是双摄:
标清:480P 1280*480
高清:720P 2560*720
超清:1080P 3840*1080
并调用,camera.setCameraType(CameraType.C3D_SBS)
Todo
1.同时录制视频和声音。
需要常见的宽高比例,如果是双摄像头,目前简易做法,camera.setCameraType(CameraType.C3D_SBS),将全宽图片压缩为半宽。
2.编写Camera应用,测试插件。
3.优化压缩方式。
4.支持多种预览方式。
5.支持两种拍摄和录制方式
原始数据。
预览画面显示的数据。