要实现Android中缓冲并选择性保存30秒视频的功能,可以按照以下步骤进行:
private MediaRecorder mediaRecorder;
private boolean isRecording = false;
private void setupMediaRecorder() {
mediaRecorder = new MediaRecorder();
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mediaRecorder.setOutputFile(getOutputMediaFile().toString());
mediaRecorder.setMaxDuration(30000); // 设置最大录制时长为30秒
mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface()); // 设置预览显示
}
private File getOutputMediaFile() {
// 创建一个存储目录
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DCIM), "Camera");
// 创建存储目录如果不存在
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d(TAG, "failed to create directory");
return null;
}
}
// 创建一个媒体文件名
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File mediaFile = new File(mediaStorageDir.getPath() + File.separator +
"VID_" + timeStamp + ".mp4");
return mediaFile;
}
private void startRecording() {
try {
if (mediaRecorder == null) {
setupMediaRecorder();
}
mediaRecorder.prepare();
mediaRecorder.start();
isRecording = true;
} catch (IOException e) {
e.printStackTrace();
}
}
private void stopRecording() {
if (isRecording && mediaRecorder != null) {
mediaRecorder.stop();
mediaRecorder.reset();
mediaRecorder.release();
mediaRecorder = null;
isRecording = false;
}
}
这样,你就可以在Android应用中实现缓冲并选择性保存30秒视频的功能了。