2

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

基本上.. android MediaRecorder 允许您定义视频和音频编码器,并且根据文档,可以对每个使用 DEFAULT。但是,这是指主摄像头的设置,通常比前置摄像头要高得多。例如,Droid Razr 上的 DEFAULT 选择了对前置摄像头不可用的编码 (MPEG_4_SP),这会导致生成空 (0kb) 文件(或在某些其他设备上出现 Camera 100 - start failed 错误)。

我的另一个选择是使用 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);

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

希望这将有助于某人并节省时间和它给我带来的麻烦!

干杯,马克

4

0 回答 0