主要用的安卓类有MediaCodec和MediaMuxer,MediaCodec负责视频数据编解码,MediaMuxer负责将编码后的数据封装成MP4文件,采集摄像头用的是camera,并且用surfaceview进行预览
1、初始化surfaceview与camera,预览摄像头的画面
private void initSurfaceHolder() {
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
initCamera();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
mCamera.startPreview();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
destroyCamera();
}
});
}
在surfaceview surfaceCreated中初始化摄像机配置。
private void initCamera() {
mCamera = Camera.open(1);
mCamera.setPreviewCallback(this);
mCamera.setDisplayOrientation(90);
if (parameters == null) {
parameters = mCamera.getParameters();
}
parameters.setPreviewFormat(ImageFormat.NV21);
parameters.setPreviewSize(1280, 720);
mCamera