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