【发布时间】:2013-03-27 20:30:47
【问题描述】:
我正在使用 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。
更新 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) 所述失败
有什么想法吗? 谢谢。
【问题讨论】:
-
我发现了类似的问题,但没有帮助:code.google.com/p/android/issues/detail?id=38107
-
你能展示你如何准备
MediaRecorder对象的代码吗? -
一些代码 sn-p 也可能有帮助
-
@JasonRobinson 我已经用 MediaRecorder 准备代码更新了这个问题
-
@alekz 只是为了确保我理解正确,它记录正确,只是停止它不起作用?还是一开始就没有正确录制?
标签: android video-capture mediarecorder android-mediarecorder