无需预览即可捕获视频

Posted

技术标签:

【中文标题】无需预览即可捕获视频【英文标题】:Capture video without preview 【发布时间】:2016-01-16 17:50:50 【问题描述】:

我想在不显示预览的情况下捕捉视频。这里的 android 文档说这是可能的,但没有解释如何:

http://developer.android.com/guide/topics/media/camera.html#capture-video

注意:可以在不先创建相机预览的情况下使用 MediaRecorder,并跳过此过程的前几个步骤。但是,由于用户通常更喜欢在开始录制之前查看预览,因此此处不讨论该过程。

要跳过的“前几个步骤”是什么?

谢谢

【问题讨论】:

【参考方案1】:

您误解了文档。它真正说的是什么(强调我的):

首先可以在不创建相机预览的情况下使用 MediaRecorder,并跳过此过程的前几个步骤。但是,由于用户通常喜欢在开始录制之前查看预览,因此此处不讨论该过程。

换句话说,您可以创建预览并立即开始录制。没有提示 MediaRecorder 会让您运行隐藏的录制会话。

此外,我同意该文件,即在开始录制之前不开始预览的附加价值可以忽略不计。

【讨论】:

所以你需要预览一下吗? @jonney 是的,你知道。如果你想知道这个预览是否必须在屏幕上可见,答案是“不,但是”。将“用户通常更喜欢看预览”作为强烈警告。 可能是我在最新的堆栈流问题上遇到的问题。请看看,让我知道【参考方案2】:

您可以跳过上面链接中给出的配置媒体记录器的第 5 步,并且不会显示预览。但是用户会有兴趣查看它的预览。

【讨论】:

如果我不告诉 mediarecorder 输出文件,那么什么都不会被捕获?【参考方案3】:

尽管文档说明这是可能的,但大多数 SO 答案都另有说明。看看这个answer(以及其中链接的答案)。

解决此限制的方法是创建一个 1 x 1 px SurfaceView 并使用它来显示相机预览。

【讨论】:

我想知道在全屏预览视图之上放置一个不透明视图是否会影响性能? 这是一个很好的问题。鉴于这是由本机层处理的,我猜影响几乎相同。预览大小(在相机参数中设置)可能会产生更大的影响。 在许多设备上,1x1 预览恰好对性能造成巨大影响,比 16x16 差得多。

以上是关于无需预览即可捕获视频的主要内容,如果未能解决你的问题,请参考以下文章

Android Camera2 API:捕获视频而不预览

Android上捕获的视频不会旋转到纵向

iOS:在相机预览期间捕获图像而不采取行动

如何捕获视频并使用 C# 播放?

使用 OpenCV 从 youtube 捕获实时视频

通过终端捕获视频时模拟器卡顿