【问题标题】:Keeping preview callback while recording video?录制视频时保持预览回调?
【发布时间】:2013-04-16 08:43:22
【问题描述】:

我目前正在使用 onPreviewCallback,因此我可以在预览时从相机捕获帧并通过 http 流式传输它们。

这可行,但随后我发出一个开始录制的命令,而且似乎我不再有预览回调了。

那么,如何保留预览回调,以便既可以将帧从表面发送到服务器,又可以在设备上录制视频?

【问题讨论】:

标签: android camera android-mediarecorder


【解决方案1】:

您可以在调用 media recorder.start() 后调用这些方法,如下所示:

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

原因:

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

在我的应用程序中,我曾经遇到过和你一样的问题,我通过这个解决了它。希望它能解决您的问题!

【讨论】:

  • 如果我使用 SurfaceTexture 会怎样?无论如何,这根本不是关于 SurfaceView 或 TextureView.. 我们谈论的是 onPreviewFrame 回调而不是可视化
  • 所以你的第三行并不重要,尽管前两行 camera.reconnect(); camera.setPreviewCallback(); 无助于解决这个问题
【解决方案2】:

一旦我让相机和 MediaRecorder 开始和停止录制而不会崩溃(这并不容易),我仍然遇到你描述的问题,预览回调将停止调用。

我最终找到的解决方法是在 mediaRecorder.start() 之后添加对 setPreviewCallback 的调用,在 mediaRecorder.stop() 之后添加另一个调用。不确定这是否正确,但它适用于我正在测试的 Razr M。

【讨论】:

  • @user924 可以肯定的是,在录制过程中获取预览帧确实有效,因为预览帧是在设备屏幕上实时查看正在录制的内容的唯一方法。也就是说,有很多地方可能会出错。许多手机也有怪癖,如果不直接使用 API,甚至会崩溃。并且 API 可能在较新的 Android 版本中发生了变化(这个答案已有 5 年历史)。如果可以的话,我会看看你的链接和帮助。。
【解决方案3】:

我已经很长时间没有使用 Android 相机了。但是,我记得

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 录制。

【讨论】:

  • 1.所有这些答案都不起作用stackoverflow.com/questions/52314822/… 2. 我认为这无助于解决这个问题(录制本地视频+音频并同时获取原始帧) 3. - 所有外部库都很难用,不要永远不要在 Android 上使用 FFmpeg 进行视频录制
猜你喜欢
  • 2017-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 2020-07-23
  • 1970-01-01
  • 2019-02-18
  • 2011-10-22
相关资源
最近更新 更多