Java Android-在保存视频之前,在VideoView中预览用自定义相机拍摄的视频
我在我的Android应用程序中用一个自定义摄像头最多录制20秒的视频。 我想在保存之前自动预览录制的视频(在手机或服务器上)。我知道我必须使用视频视图,但我找不到如何使用 如果超过20秒,我想停止录制并自动启动预览(VideoView),或者当用户提前停止捕获时,我想停止录制。 带有两个按钮“删除”和“确定” 有人知道怎么做吗?我是否必须创建新活动并使用意图 以下是录制视频的当前代码:Java Android-在保存视频之前,在VideoView中预览用自定义相机拍摄的视频,java,android,video,camera,android-videoview,Java,Android,Video,Camera,Android Videoview,我在我的Android应用程序中用一个自定义摄像头最多录制20秒的视频。 我想在保存之前自动预览录制的视频(在手机或服务器上)。我知道我必须使用视频视图,但我找不到如何使用 如果超过20秒,我想停止录制并自动启动预览(VideoView),或者当用户提前停止捕获时,我想停止录制。 带有两个按钮“删除”和“确定” 有人知道怎么做吗?我是否必须创建新活动并使用意图 以下是录制视频的当前代码: private boolean prepareVideoRecorder(){ // 1. Ope
private boolean prepareVideoRecorder(){
// 1. Open Camera
mMediaRecorder = new MediaRecorder();
// Step 1: Unlock and set camera to MediaRecorder
mCamera.unlock();
mMediaRecorder.setCamera(mCamera);
// Step 2: Set sources
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
// Step 3: Set a CamcorderProfile
mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
// Step 4: Set output file
mMediaRecorder.setOutputFile(getOutputMediaFile(MEDIA_TYPE_VIDEO).toString());
//Set video duration to 20 seconds max
int clipsDuration = 20000;
mMediaRecorder.setMaxDuration(clipsDuration);
// Step 5: Set the preview output
mMediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());
if (currentCameraId == Camera.CameraInfo.CAMERA_FACING_BACK){
mMediaRecorder.setOrientationHint(90);
} else {
mMediaRecorder.setOrientationHint(270);
}
// Step 6: Prepare configured MediaRecorder
try {
mMediaRecorder.prepare();
} catch (IllegalStateException e) {
Log.d(TAG, "IllegalStateException preparing MediaRecorder: " + e.getMessage());
releaseMediaRecorder();
return false;
} catch (IOException e) {
Log.d(TAG, "IOException preparing MediaRecorder: " + e.getMessage());
releaseMediaRecorder();
return false;
}
return true;
}
非常感谢你的帮助 “保存之前(在手机或服务器上)”--您已经在手机上保存了。我知道。:)但现在我想在保存(或不保存)之前添加一个步骤,这将允许我预览刚刚录制的视频(显然要感谢VideoView),然后决定是否保存视频。“但现在我想在保存之前添加一个步骤”--我不知道
MediaRecorder
支持录制到内存。我还不确定是否有20秒视频的堆空间。我也不知道是否有一个好方法可以让VideoView
从内存中播放。如果用户选择不保留视频文件,那么将其保存在磁盘上,然后删除该文件,您的具体问题是什么?好的观点:)谢谢您的回答。我考虑过这个想法,但我担心这会花费太多时间。此外,最终我希望将视频发送到服务器上,而不是存储在用户的手机上。例如,Snapchat之类的应用程序在发送视频预览之前是如何处理的?。。。因为这是同一个用例。“例如,像Snapchat这样的应用程序在发送视频预览之前是如何处理的?”——因为我没有写Snapchat,我不知道,对不起。