Android Media Recorder 无法在 Google Glass 上录制长视频

Android Media Recorder not recording long videos on Google Glass

我已经为 Google 玻璃写了一个 opensource camera,但一些使用过它的人报告说,对于较长的视频,录制的视频无法正确保存。

我无法在 Android 文档中找到有关任何此类限制的信息

所以在查看后,我发现对于大于 26 minutes 的视频,视频文件保存在 Glass 中,其大小约为 2.7 GB,但持续时间为 0:00。并且无法使用任何视频播放器播放。

所以我想知道这是为什么?为什么 duration < 26 minutes 的视频录制正确,而较长的视频却搞砸了。

开始视频录制的代码是

/**
 * Initialize video recorder to record video
 */
private void initRecorder() {
    try {
        File dir = new File(Environment.getExternalStorageDirectory()
                + File.separator + Environment.DIRECTORY_PICTURES
                + File.separator + "My Videos");
        if (!dir.exists()) {
            dir.mkdirs();
        }
        videofile = new File(dir, "video.mp4");
        recorder.setCamera(mCamera);

        // Step 2: Set sources
        recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
        recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

        // Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
        recorder.setProfile(CamcorderProfile
                .get(CamcorderProfile.QUALITY_HIGH));
        // Step 4: Set output file
        recorder.setOutputFile(videofile.getAbsolutePath());
        // Step 5: Set the preview output
        recorder.setPreviewDisplay(mPreview.getHolder().getSurface());
        // Step 6: Prepare configured MediaRecorder
        recorder.setMaxDuration(3600* 1000);
        recorder.setMaxFileSize(-1);
        recorder.setOnErrorListener(new OnErrorListener() {

            @Override
            public void onError(MediaRecorder mr, int what, int extra) {
            Log.e("Error Recording", what+" Extra "+extra);

            }
        });
        recorder.setOnInfoListener(new OnInfoListener() {

            @Override
            public void onInfo(MediaRecorder mr, int what, int extra) {
                if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
                    endVideoRecording();
                }

            }
        });

        recorder.prepare();
        recorder.start();
        mOverlay.setMode(Mode.RECORDING);

    } catch (Exception e) {
        if (e != null && e.getMessage() != null)
            Log.e("Error Starting CuXtom Camera for video recording",
                    e.getMessage());
    }
}

根据我的研究,Google glass 似乎只能录制 2GB 尺寸以下的视频,因此如果您想录制任何尺寸可能大于该尺寸的视频,我会建议您将视频分成更小的部分,然后在最后将其与 mp4 parser

合并