实时视频稳定

Posted

技术标签:

【中文标题】实时视频稳定【英文标题】:Real-time video stabilization 【发布时间】:2017-04-27 10:33:38 【问题描述】:

我有一个 Google Pixel 并尝试使用官方应用录制视频,我发现录制过程中有一个出色的内置稳定机制,所以如果我稍微握手,这个动作只会稍微转移到录制(甚至视频预览也非常稳定)。

但是,我尝试使用自己的视频录制应用程序并没有实现这种稳定性。

我当然在the official docs 尝试过使用setVideoStabilization() 方法,但结果不如内置相机应用程序。

我还有什么遗漏的吗?

【问题讨论】:

“我还有什么遗漏的吗?” 是的,它被称为数百万美元的研发预算 + 一些糟糕的专利所有权,以超越当前的竞争......不过说真的,您必须为记录的像素编写自己的稳定化算法(因为无法重新编程相机的成像传感器本身)。这是一些鼓舞人心的search results。基本上只是考虑所提出的概念并享受在 Java 代码中实现的乐趣... Google 应用程序使用的稳定代码很可能与我们普通开发人员可以使用的稳定库相同。 @VC.One 抱歉,真的是指在 Java/Kotlin 级别上您自己的稳定化代码吗?你甚至明白在说什么吗?它必须使用低级编程语言(在相机低级系统逻辑的某个地方,不向 android 应用程序开发人员公开),只有这样才能快速有效地完成(不会影响性能)。说真的... :) 如果您有 Arduino、Raspberry Pi、Mini PC 等,您可以编写自己的算法。你有 Linux,你可以做任何你想做的事情:) 【参考方案1】:

您可以考虑查看OpenSource.Android 并找到一些稳定的逻辑。另一个链接在这里platform_packages_apps_camera。从那里开始,您可以进行自己的研发。

或者

等到基于 Google Pixel Camera 稳定性的 API 或此类代码可供所有人使用。 未来对 Android SDK 的更新可能会改进当前的稳定功能。

【讨论】:

在相机的平台包中,dbstabsmooth.cpp 看起来最有希望获得逻辑灵感,或者作为 Asker 自己实现的起点。 @Qamar 放松一下,我只是想也许我做错了什么,因为 对当前相机 API 的稳定性有一些支持 @MichelReap 这不是个人的......答案还必须与需要相同信息的未来读者交谈。 @both 老实说,我认为这个稳定过程发生在硬件本身。我正在使用 Android 手机进行直播,添加软件稳定功能很可能会影响我的编码性能,并降低我现在获得的稳定、干净的 1080p 30fps……谢谢你们的回答。 一般的Google Play应用和Android官方固件你不能轻易做自己的稳定算法***.com/questions/41102904/…【参考方案2】:

等待 Google 在他们的 API 中发布它。

根据以往的经验,新功能通常需要一段时间才能让我们所有人以 API 形式使用。

与此同时,请尝试在此处引起专家的注意:https://code.google.com/p/android/issues/list。您甚至可以更早地将其推送到更新中

【讨论】:

【参考方案3】:

如果您不想等待,另一种方法是阅读this amazing article on content unshaking using the accelerometer(与sourcecode here)。

这样做是为了消除手机内容的震动(例如,为了便于在移动交通工具中阅读),但您可以将相同的逻辑应用于来自相机的视频源。

但是,不要期望获得与 Google 的方法相同的结果。事实上,这只能做软件稳定,它会在你的图像周围移动,从而裁剪它。为了避免裁剪和亮度变化,谷歌使用Optical Image Stabilization, which mechanically moves the lens,从而避免了任何裁剪。但是,并非所有手机都支持 OIS,因此如果您在应用中使用 Google 的 API,请考虑这一点。

【讨论】:

以上是关于实时视频稳定的主要内容,如果未能解决你的问题,请参考以下文章

移动端实时视频直播如何做到实时秒开流畅不卡

笔记分享 -- 弱网下的极限实时视频通信

即时通讯实时视频聊天技术提供QoS保证的方法

即时通讯实时视频聊天技术提供QoS保证的方法

即时通讯实时视频聊天技术提供QoS保证的方法

从零到一,使用实时音视频 SDK 一起开发一款 Zoom 吧