在 Android 中,是不是可以更改相机(从前到后)并仍然继续录制?
Posted
技术标签:
【中文标题】在 Android 中,是不是可以更改相机(从前到后)并仍然继续录制?【英文标题】:In Android, is it possible to change Camera (from front to back) and still keep recording?在 Android 中,是否可以更改相机(从前到后)并仍然继续录制? 【发布时间】:2014-04-25 20:10:15 【问题描述】:这是我的问题:)。如果我开始使用前置摄像头和 MediaRecorder 进行录制,然后切换到后置摄像头,是否可以使用相同的视频文件继续录制?另外,是否可以同时录制两个相机?
【问题讨论】:
也许更适合android 网站 @Omar-Meky 不,android 网站主要侧重于使用 Android,而不是 Android 编程。 好的,我以为你是从使用的角度来看的! 是的,即使在切换之后也绝对可以连续写入同一个文件,但不使用默认的 MediaRecorder 类。此外,由于摄像机启动和实际录制需要一点时间,所以它们之间永远不会有平滑的过渡,除非你能以某种方式启动它并在过渡之前开始录制,但是你只会遇到大量的其他问题。 解决方案是单独将帧放入媒体记录器或onPreviewFrame中的媒体编解码器。然后,切换相机所需要做的就是关闭/打开并清除缓冲区。但是,不同的相机硬件可能会或可能不会出现问题,因为您在一个硬件上配置了记录颜色格式/分辨率,然后切换到另一个硬件。它非常复杂,我还没有弄清楚,但即使使用默认类也绝对有可能。 【参考方案1】:您可以在 Nexus9 上使用 camera2 api 执行此操作。 (Nexus5不能同时打开2个摄像头)
创建 2 个 Gl 上下文(共享)和 2 个纹理缓冲区。 创建一个用于预览的 TextureView。 创建一个用于录制的 MediaRecoder。 打开前后摄像头。 重复请求输出目标是纹理缓冲区。 为每个帧将具有 2 个纹理的场景渲染到 TextureView 的表面。 为每一帧将具有 2 个纹理的场景渲染到 MediaRecoder 的表面。您可以通过更改渲染对象来切换到每个相机。 您还可以使用 alpha-blend、transform、scaling 等以 30fps 渲染同一视频中的两个图像
【讨论】:
感谢您的更新!不幸的是,没有多少人能买得起 N9(我认为 Nexus 6 可以用这个?)。 您可以通过this app查看 Sanpchat 视频捕获可在所有设备中使用。有人可以帮忙吗?以上是关于在 Android 中,是不是可以更改相机(从前到后)并仍然继续录制?的主要内容,如果未能解决你的问题,请参考以下文章
Android:在方向更改时保留相机预览,而其他视图可以旋转