我的应用程序(ScareApp)遇到了这个问题,它使用前置摄像头录制视频。我“想”我终于解决了这个问题,所以我想我会在这里发布任何遇到同样事情的开发人员....
基本上.. Android MediaRecorder允许您定义视频和音频编码器,根据文档,DEFAULT可用于每个。 但是,这是指主摄像机的设置,通常比前置摄像头的规格要高得多。 例如,Droid Razr上的DEFAULT选择一个不能用于前置摄像头的编码(MPEG_4_SP),这会导致生成一个空(0kb)文件(或者在某些其他设备上生成一个Camera 100 - 启动失败错误)。
我的另一个选择是使用CameraProfile.get方法查找HIGH_QUALITY设置,但同样,默认情况下使用主摄像头。 要解决此问题,您可以使用
设置前置摄像头的IDCameraProfile.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);
但是由于我的应用程序允许用户选择分辨率,我需要设置编码器。
希望这会帮助别人,节省时间和麻烦,这已经给我带来了麻烦!
干杯, 标记