只需使用MediaRecorder類錄製視頻。使用媒體記錄器時,設置音頻和視頻源時不要將音頻源設置在那裏。喜歡這個。
public class MuteVideoRecorderView extends SurfaceView implements
SurfaceHolder.Callback {
private SurfaceHolder mHolder;
private Camera mCamera;
private MediaRecorder mMediaRecorder;
public CamcorderView(Context context, AttributeSet attrs) {
super(context, attrs);
mHolder = getHolder();
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mHolder.addCallback(this);
mCamera = Camera.open();
mRecorder = new MediaRecorder();
}
public void stop() {
mRecorder.stop();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
mCamera.unlock();
mMediaRecorder.setCamera(mCamera);
// Here we will not set mRecorder.setAudio(..);
mMediaRecorder.setVideoSize(int, int);
mMediaRecorder.setVideoFrameRate(int);
mMediaRecorder.setPreviewDisplay(mHolder.getSurface());
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
// change for desired output folder
mMediaRecorder.setOutputFile("/mnt/sdcard/test/work");
try {
mMediaRecorder.prepare();
} catch (IllegalStateException e) {
Log.e("IllegalStateException", e.toString());
} catch (IOException e) {
Log.e("IOException", e.toString());
}
mMediaRecorder.start();
}
}
完整的代碼張貼在您鏈接的那個線程中......它幾乎只是複製和粘貼它,它應該工作? – Danieboy
通過這個例如https://github.com/googlesamples/android-Camera2Video –