gpt4 book ai didi

android - 视频录制 - 无法启动相机预览

转载 作者:行者123 更新时间:2023-11-29 14:04:43 27 4
gpt4 key购买 nike

我正在研究自定义视频录制类(class),但在 Activity 首次出现时显示相机预览时遇到了一些问题。我在 surfaceCreated 回调中调用这个函数:

private void initRecorder(Surface surface) throws IOException {
// It is very important to unlock the camera before doing setCamera
// or it will results in a black preview
if(camera == null) {
camera = Camera.open();
camera.unlock();
}

if(recorder == null)
recorder = new MediaRecorder();

recorder.setPreviewDisplay(surface);
recorder.setCamera(camera);

camera.startPreview();

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setOutputFile("/sdcard/test.mp4");
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
recorder.setVideoEncodingBitRate(15000000);
recorder.setMaxDuration(10000); // length of video in MS
recorder.setVideoSize(720, 480);
recorder.setVideoFrameRate(30);


try {
recorder.prepare();
} catch (IllegalStateException e) {
// This is thrown if the previous calls are not called with the
// proper order
e.printStackTrace();
}
}

当 Activity 启动时,我的应用崩溃并提示:

java.lang.RuntimeException: 启动预览失败

在该错误上方,我注意到一行内容:

尝试使用来自不同进程的锁定相机(旧 pid 4894,新 pid 6405)

当我单步执行代码时,该错误发生在 camera.startPreview() 行。如果我从我的代码中删除该行,则在我调用 recorder.start() 之后预览会正常显示,而在此之前我只有黑屏和我的录制按钮。一旦我停止录制,预览继续显示正常(我在停止录制后调用 camera.startPreview())。

由于我在开始预览前仅调用了几行 camera.unlock(),并且这两个调用发生在同一个函数中,我怎么会遇到此错误?

编辑:我在 Droid X2 和 Droid 1 上测试了相同的代码,但去掉了对 startPreview() 的调用,它工作正常。看起来 EVO 4G 是问题所在。我会继续调查。

最佳答案

我在这里回答了一个非常相似的问题:preview display in android media recorder

看看它是否对您有帮助,它有一个完整的 Activity,可用于预览和录制视频。

关于android - 视频录制 - 无法启动相机预览,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7718365/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com