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

Posted

技术标签:

【中文标题】Android Media Recorder 无法在 Google Glass 上录制长视频【英文标题】:Android Media Recorder not recording long videos on Google Glass 【发布时间】:2016-02-07 11:46:06 【问题描述】:

我已经为 Google Glass 写了一个 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());
    

【问题讨论】:

【参考方案1】:

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

【讨论】:

我最多可以录制 4.1 GB 的视频(Windows 上为 3.8 GB),而本机录制器可以录制更多(最多录制 4.7 GB)。我不知道如何进一步录制 4.1 GB。

以上是关于Android Media Recorder 无法在 Google Glass 上录制长视频的主要内容,如果未能解决你的问题,请参考以下文章

Android初级教程实现电话录音

MediaRecorder网上示例缺陷

如何使用 Recorder 在 android 中检测环境噪声

无法在 Android Auto Media App 上运行语音命令

Android Media Player 随机引发错误并且无法播放

使用Espresso Test Recorder编写Android测试