空的(0km)文件或在某些设备上启动失败

我的应用程序(ScareApp)使用前置摄像头录制视频时出现此问题。 我“认为”我终于解决了这个问题,所以我以为我会在这里发布它的任何开发人员遇到同样的事情....

基本上.. Android MediaRecorder允许你定义视频和音频编码器,并根据文档,DEFAULT可以用于每个。 但是,这是指主摄像头的设置,通常比前置摄像头的规格要高得多。 例如Droid Razr上的DEFAULT,选择一个编码(MPEG_4_SP),该编码不可用于前置摄像头,这会产生一个空的(0kb)文件(或者在某些其他设备上出现Camera 100 - 启动失败错误)。

我的另一个选择是使用CameraProfile.get方法来查找HIGH_QUALITY设置,但是,默认情况下使用主摄像头。 为了解决这个问题,您可以使用设置前置摄像头的ID

CameraProfile.get(<CameraID>, CamcorderProfile.QUALITY_HIGH);

我目前的工作如下:

CamcorderProfile profile = CamcorderProfile.get(FrontFacingCameraId, CamcorderProfile.QUALITY_HIGH);
if(profile != null) {
    _recorder.setAudioEncoder(profile.audioCodec);      
    _recorder.setVideoEncoder(profile.videoCodec);
}else {
    //default to basic H263 and AMR_NB if profile not found
    _recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);       
    _recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);
}

或者,您可以跳过设置编码器,然后使用

_recorder.setProfile(profile);

但由于我的应用程序允许用户选择分辨率,因此我需要设置编码器。

希望这会帮助别人,节省时间,并且麻烦已经造成了我!

干杯,马克

链接地址: http://www.djcxy.com/p/5257.html

上一篇: empty (0km) file or start failed on some devices

下一篇: android mediaRecorder.setAudioSource failed