程序需要调用摄像头,完成录像功能,要求在录制时可以对**视频质量**(分辨率,编码器,格式的MP4或3GP,码率,帧率)进行设置!(类似LG相机)
该回答引用ChatGPT
实现 Android 摄像头开发需要使用 Android 提供的 Camera API 或 Camera2 API。以下是一些基本步骤:
以下是一个简单的示例代码:
private Camera mCamera;
private MediaRecorder mMediaRecorder;
private SurfaceView mPreview;
private void prepareCamera() {
mCamera = Camera.open();
Camera.Parameters params = mCamera.getParameters();
params.setPreviewSize(640, 480);
mCamera.setParameters(params);
mPreview = findViewById(R.id.preview);
SurfaceHolder holder = mPreview.getHolder();
holder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
mCamera.setPreviewDisplay(holder);
mCamera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
});
}
private void prepareRecorder() throws IOException {
mMediaRecorder = new MediaRecorder();
mMediaRecorder.setCamera(mCamera);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mMediaRecorder.setVideoSize(640, 480);
mMediaRecorder.setVideoEncodingBitRate(5 * 1024 * 1024);
mMediaRecorder.setOutputFile(getOutputMediaFile().toString());
mMediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());
mMediaRecorder.prepare();
}
private void startRecording() {
try {
prepareRecorder();
mMediaRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
}
private void stopRecording() {
mMediaRecorder.stop();
mMediaRecorder.reset();
mMediaRecorder.release();
mMediaRecorder = null;
}
private File getOutputMediaFile() {
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_MOVIES), "MyCameraApp");
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile = new File(mediaStorageDir.getPath() + File.separator +
"VID_" + timeStamp + ".mp4");
return mediaFile;
}
该示例代码可以预览摄像头画面,并录制视频到指定文件。你可以根据需要修改其中的参数。