MediaRecorder で動画を録画しています。私のコードは 2.3.3 では正常に動作しますが、4.0.3 では失敗します。
問題は次のとおりです。コード mediaRecorder.stop() は RuntimeExeption をスローします
java.lang.RuntimeException: stop failed.
at android.media.MediaRecorder.stop(Native Method)
LogCat メッセージ付き
04-05 15:10:51.815: E/MediaRecorder(15709): stop failed: -1007
アップデート
MediaPlayer は、開始直後に (MediaPlayer.OnErrorListener を介して) エラーを報告することがわかりました。エラー コードは 100 (メディア サーバーの停止)、余分な -1007 です。
UPDATE 2 MediaRecorder を準備するコード
c = Camera.open();
...
// Step 1: Unlock and set camera to MediaRecorder
camera.unlock();
mediaRecorder.setCamera(camera);
// Step 2: Set sources
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
// Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
CamcorderProfile profile = CamcorderProfile
.get(CamcorderProfile.QUALITY_HIGH);
// manual set up!
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setVideoEncodingBitRate(profile.videoBitRate);
mediaRecorder.setVideoFrameRate(profile.videoFrameRate);
mediaRecorder.setVideoSize(profile.videoFrameWidth,
profile.videoFrameHeight);
mediaRecorder.setAudioChannels(profile.audioChannels);
mediaRecorder.setAudioEncodingBitRate(profile.audioBitRate);
mediaRecorder.setAudioSamplingRate(profile.audioSampleRate);
mediaRecorder.setAudioEncoder(profile.audioCodec);
//mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
mediaRecorder.setVideoEncoder(profile.videoCodec);
// mediaRecorder.setProfile(profile);
// Step 4: Set output file
mediaRecorder.setOutputFile("somefile.mp4");
// Step 5: Set the preview output
mediaRecorder.setPreviewDisplay(preview.getHolder().getSurface());
// Step 6: Prepare configured MediaRecorder
try {
mediaRecorder.prepare();
} catch ...
{ release mediaRecorder}
次に、単純に mediaRecorder.start() を呼び出します。ビデオを mp4 形式にエンコードする必要があることに注意してください。このコードは、Samsng Galaxy GIO (android 2.3.3) で動作し、Acer E305 (android 4.0.2) で説明されているように失敗します。
何か案は?ありがとう。