Keeping preview callback while recording video?

2019-08-31 21:36发布

我目前使用onPreviewCallback,所以我可以从相机捕获帧在预览时,并通过HTTP串流。

这一工程,但后来我发出命令开始录制和,看来,我没有预览回调了。

所以,我该如何保持预览回调,所以我可以从两个表面的帧发送到我的服务器和记录设备上的视频?

Answer 1:

我没有了相当长的时间与Android相机工作。 不过,我记得

1)当你正在录制onPreviewCallback不叫

它在几个问题中提到:

相机onPreviewFrame不叫 如何显示实时过滤摄像头预览,同时录制视频?

2)我看到它在SipDroid和下面的方式对夫妇其他Android SIP客户端的(这是一个1-2年前,所以这种方法可能是outdates)处理:

  • 一个管道创建
  • 管道的安装孔被包在的FileDescriptor并传递给MediaRecorder setOutputFile
  • 管道发送插座一个线程不断读取。
  • 这样你就可以接收内容被写入到一个文件
  • 现在,这个问题如何处理的内容(因为,它是H.263或H.264编码,并可以与声音混合,如果您录制视频与声音)。
  • 有哪些解析的内容的一些启发式算法(然而,这是痛苦的屁股)

3)您可以使用onPreviewFrame +启动AudioRecorder和自己进行编码(使用ffmpeg的或类似的东西)的MP4文件。 这样,您就不需要启动MediaRecorder记录。



Answer 2:

你可以打电话给你的媒体recorder.start后,这些方法()被调用如下:

camera.reconnect();
camera.setPreviewCallback();
surfaceview.getHolder().addCallback();

原因:

  1. camera.unlock()被调用后,另一个进程(这里是媒体记录的过程)可以使用相机; 当这个过程完成,你必须重新连接到相机,这将重新获得锁,并允许您继续使用相机。
  2. 然后重新注册surfaceview帧数据回调相机重新连接后,因为重新连接后的状态的一些可以改变。

我曾经同样的问题在我的应用程序你的,我通过这个固定。 希望可以解决您的烦恼!



Answer 3:

一旦我得到了相机和MediaRecorder启动并没有崩溃停止记录(不容易),如你所说,在预览回调将停止获取调用我仍然有一个问题。

我终于找到了修复程序将调用mediaRecorder.start(后setPreviewCallback),另一个mediaRecorder.stop后()。 不知道这是正确的,但它的工作的Razr手机MI正在测试上。



文章来源: Keeping preview callback while recording video?