Android Media Recorder не записывает длинные видео в Google Glass

Я написал камеру с открытым исходным кодом для стекла Google, но некоторые из людей, которые ее использовали, сообщили, что записанное видео не сохраняется должным образом для длинных видеороликов.

Я не мог найти информацию об этом ограничении в документации по Android

Итак, выяснив, что для видео больше 26 minutes, видеофайл был сохранен в стекле, а размер его был около 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());
    }
}

Ответы

Ответ 1

Согласно моим исследованиям, похоже, что стекло Google способно записывать видео только в размере 2GB, поэтому, если вы хотите записать любое видео, размер которого может быть больше, чем тогда, я бы посоветовал вам разделить видео на более мелкие части а затем в конце слить его с помощью mp4 parser