我目前正在使用 onPreviewCallback,因此我可以在预览时从相机捕获帧并通过 http 流式传输它们。
这行得通,但随后我发出了开始录制的命令,而且我似乎再也没有预览回调了。
那么,我该如何保留预览回调,以便既可以将帧从表面发送到我的服务器,又可以在设备上录制视频?
最佳答案
我已经有很长时间没有使用 Android Camera 了。然而,我记得
1) onPreviewCallback 在你录制的时候没有被调用
在几个问题中提到了它:
Camera onPreviewFrame not called How to show real time filtered camera preview while recording videos?
2) 我看到它是在 SipDroid 和其他几个 Android SIP 客户端中处理的(这是 1-2 年前的事了,所以这个方法可能已经过时了):
- 管道已创建
- 管道的接收套接字被包装在 FileDescriptor 中并传递给 MediaRecorder setOutputFile
- 在线程中不断读取管道的发送套接字。
- 通过这种方式您可以接收写入文件的内容
- 现在,问题是如何处理内容(因为它是 H.263 或 H.264 编码的,如果您录制带有声音的视频,则可能会与声音混合)。
- 有一些解析内容的启发式算法(但是,这很麻烦)
3) 您可以使用 onPreviewFrame + 启动 AudioRecorder 并自己将其编码(使用 ffmpeg 或类似的东西)到 mp4 文件。这样你就不需要启动 MediaRecorder 记录了。
关于android - 录制视频时保持预览回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16164195/