Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-在保存视频之前,在VideoView中预览用自定义相机拍摄的视频_Java_Android_Video_Camera_Android Videoview - Fatal编程技术网

Java Android-在保存视频之前,在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

我在我的Android应用程序中用一个自定义摄像头最多录制20秒的视频。 我想在保存之前自动预览录制的视频(在手机或服务器上)。我知道我必须使用视频视图,但我找不到如何使用

如果超过20秒,我想停止录制并自动启动预览(VideoView),或者当用户提前停止捕获时,我想停止录制。 带有两个按钮“删除”和“确定”

有人知道怎么做吗?我是否必须创建新活动并使用意图

以下是录制视频的当前代码:

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,我不知道,对不起。