Android Front Facing Camera - 空(0km)文件或在某些设备上启动失败

时间:2012-05-08 16:54:17

标签: android android-camera mediarecorder android-mediarecorder

我的应用程序(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);

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

希望这会帮助别人,节省时间和麻烦,这已经给我带来了麻烦!

干杯, 标记

0 个答案:

没有答案