【发布时间】:2018-09-02 01:46:38
【问题描述】:
我正在使用 MediaRecorder 通过 Android 的 Camera API 录制视频。我遇到了一个非常奇怪的问题。
private void startRecordingVideo() {
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
File file = getAlbumDir();
recorder.setOutputFile(file.getAbsolutePath());
recorder.setMaxDuration(50000);
recorder.setMaxFileSize(5000000);
recorder.setPreviewDisplay(CameraBridgeViewBase.surfaceHolder.getSurface());
try {
recorder.prepare();
recorder.start();
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
}
}
现在这给了我 MediaRecorder: start failed: -19 错误。我检查了this 和this 链接,上面说要删除mediaRecorder.setVideoSize(sView.getWidth(), sView.getHeight());,但我没有使用setVideoSize(sView.getWidth(), sView.getHeight())。通过尝试和错误,我发现如果我删除编码器 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 和 recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); 应用程序不会崩溃,但会给出新的异常:
03-23 16:50:06.213 28226-28226/com.scenera.android.surveillance E/MediaRecorder: audio source is set, but audio encoder is not set
我不明白我在这里做错了什么。任何帮助都将不胜感激。提前致谢。
【问题讨论】:
-
这段代码是否可以在任何设备上运行或每次都抛出错误?
-
@global_warming 每次都会抛出错误。
-
我尝试了不同的音频/视频源和音频/视频编码器组合,但每次都给出相同的错误。
-
您是否遵循本指南? developer.android.com/guide/topics/media/… 看来你需要先做一个 MediaRecorder.setCamera()。
标签: android mediarecorder camera-api