我目前正在使用onPreviewCallback,因此我可以在预览时从相机捕获帧并通过http流式传输。
虽然有效,但后来我发出命令开始录制,似乎我没有预览回调了。
那么,如何保留预览回调,以便我可以将帧从表面发送到我的服务器并在设备上录制视频?
答案 0 :(得分:5)
我在Android相机上工作了很长时间。但是,我记得
1)录制时未调用onPreviewCallback
在几个问题中提到过:
Camera onPreviewFrame not called How to show real time filtered camera preview while recording videos?
2)我看到它是在SipDroid和其他几个Android SIP客户端跟进的情况下处理的(这是1 - 2年前,因此这种方法可能已经过时):
3)您可以使用onPreviewFrame +启动AudioRecorder并自行编码(使用ffmpeg或类似的东西)到mp4文件。这样您就不需要启动MediaRecorder录制。
答案 1 :(得分:1)
您可以在调用media recorder.start()之后调用这些方法:
camera.reconnect();
camera.setPreviewCallback();
surfaceview.getHolder().addCallback();
原因:
我的应用程序中出现了与您相同的问题,我通过此修复了问题。希望它可以解决你的问题!
答案 2 :(得分:0)
一旦我让相机和MediaRecorder开始并停止录制而不会崩溃(这并不容易)我仍然遇到了你所描述的问题,预览回调将停止被调用。
我最终发现的修复是在mediaRecorder.start()之后添加对setPreviewCallback的调用,在mediaRecorder.stop()之后添加另一个调用。不确定这是否正确,但它对我正在测试的Razr M起作用。