Android MediaRecorder多个文件

时间:2014-04-28 14:29:05

标签: android video mediarecorder android-mediarecorder

我正在使用MediaRecorder录制来自摄像机的视频,将其保存为.mp4到SDCard,它可以完美运行。我想将.mp4文件的长度限制为每个10秒,然后自动创建一个新文件(即:如果用户记录30秒我想创建三个文件,segment1.mp4(0:00-0: 10),segment2.mp4(0:10-0:20)和segment3.mp4(0:20-0:30))。

这是我设置录音机和输出的地方。在录制时我应该怎么做才能实现这一目标?

private boolean prepareVideoRecorder() {

        this.mMediaRecorder = new MediaRecorder();
        this.mCamera.stopPreview();
        this.mCamera.unlock();
        this.mMediaRecorder.setCamera(mCamera);
        this.mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
        this.mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        this.mMediaRecorder.setOrientationHint(90);
        this.mMediaRecorder.setMaxDuration(this.VIDEO_CHUNK_LENGTH_MS);  //10,000 ms
        if (getAndroidSDKVersion() >= 8) {
            this.mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
        } else {
            this.mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
            this.mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
            this.mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
        }
        this.mVideoFileName = getOutputMediaFile(MEDIA_TYPE_VIDEO).toString(); // Returns a proper file name
        this.mMediaRecorder.setOutputFile(mVideoFileName);
        this.mMediaRecorder.setPreviewDisplay(mPreview.getHolder().getSurface());

        try {
            this.mMediaRecorder.prepare();
        } catch (IllegalStateException e) {
            Log.d(TAG, "IllegalStateException preparing MediaRecorder: " + e.getMessage());
            this.releaseMediaRecorder();
            return false;
        } catch (IOException e) {
            Log.d(TAG, "IOException preparing MediaRecorder: " + e.getMessage());
            this.releaseMediaRecorder();
            return false;
        }
        return true;
    }

0 个答案:

没有答案