0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RTC 场景下的屏幕共享优化实践1

jf_78858299 来源:字节跳动技术团队 作者:张耿祥 2023-05-26 17:01 次阅读

背景介绍

需求背景

屏幕共享是视频会议场景使用最广泛的功能之一,在共享一个 PPT 或者文档的情况下,人们对画面清晰度有着极高的要求,“看不清” 是最容易被用户吐槽的事情;而在共享一个视频素材的情况下,大家又对流畅度有着极高的要求,“卡顿” 也是最容易被用户吐槽的点。

为了更好地同时满足用户对清晰度和流畅度的要求,视频会议软件通常会设计两种模式:

  1. 清晰模式:主打清晰度,尽量保持高分辨率(如:最高 4K 原画质),带宽或性能不足的时候,只降低帧率(如:从 30fps -> 5fps),不降低分辨率。
  2. 流畅模式:主打流畅度,尽量提升帧率(如:最高 30fps),带宽或性能不足的时候,优先降低分辨率(如:从 4K -> 720p),最后才考虑降帧率。通常情况下,默认选择“清晰模式”,当用户要共享视频的时候,需要自己 “手动” 点击勾选上 “流畅度优先”按钮。

一般的做法是,让用户在共享屏幕时手动来勾选“清晰模式”还是“流畅模式”。但在实际的产品场景中,用户对这两种模式的感知并不是很强烈,不太可能要求用户在共享屏幕的过程中手动来回切换当前的共享模式,对用户体验影响比较大。

一种简单的方案是根据用户共享内容的文件后缀名来决定是“清晰度优先”还是“流畅度优先”,比如共享 PPT 时自动切换为“清晰模式”,共享视频时自动切换为“流畅模式”,但是这样设计会遇到一些问题:比如用户的 PPT 里嵌入了一段视频,在播放这段视频时理应追求“流畅度优先”;而如果用户视频其实是一段 PPT 的教学录屏,里面有大量的时间在播放静止的文字和画面,这时候“流畅模式”则会导致这些关键内容显得模糊。

RTC 要如何帮助用户及时调整最佳的共享模式呢?

需求分析

需求功能分析

痛点:

用户分享视频内容需要高帧率,而文字/ppt 需要高清晰度,这两种场景的需求是互相矛盾的,如果需要用户手动勾选相应的共享模式,不仅操作繁琐,也容易漏选、错选。

如何解决:

需要研发一个算法自动识别共享内容,进而确定当前是需要高帧率还是需要高清晰度。这样,在用户想要清晰画面的时候,产品就提供清晰的画面,用户想要流畅的视频体验时,产品就尽可能地保障屏幕画面的流畅性,用户在无感知的情况下就能获得当前场景的最佳体验。

屏幕共享场景定义

清晰度优先的场景

以文字为主,用户更需要看清楚画面的边缘特征,而较少关注其运动特征。

流畅度优先的场景

以视频内容为主,用户更需要流畅连贯的动态画面,而较少关注于单帧的清晰度。

技术实现

算法原理

学界相关成果概述

目前我们参考了以下两篇参考文献。第一篇是 Jing, Wang & Xuetao, Guan & Yang, Zhang. (2013). An Adaptive Encoding Application Sharing System Based on Remote Display. 266-269. 10.1109/ISDEA.2012.66.

该论文主要假定视频区域的均会以 24-30FPS 的频率发生变化,用 N*N 的 patch 的形式进行检测,从而发现视频区域。

第二篇参考文献是,侯文慧, 王俊峰. 面向云桌面协议的视频区域侦测算法[J]. 计算机应用, 2018, 038(005):1463-1469,1487.

这篇论文主要通过高变化区域侦测,并利用传统 sobel 算子+膨胀算法的边缘检测发现可能的矩形区域,通过颜色直方图的颜色数量判定文本区域从而确定视频内容区域。

相关算法的介绍

  1. 光流

光流(Optical flow or optic flow)是空间运动物体在成像平面上的像素运动的瞬时速度,是分析像素运动的一种方法。光流法在模式识别、计算机视觉以及其他图像处理领域中用处广泛,可用于运动检测、图像分割、运动补偿编码和立体视差测量等领域。

光流法实际是通过检测图像像素点随时间的变化进而推断出物体移动速度及方向的方法。假设该移动很小,那么可以根据泰勒级数得出:

图片

因此可以推出

图片

最终可得出光流方程:

图片

图片

这个方程有两个未知数,不能直接进行求解,这被称为光流算法的孔径问题。为了求解光流方程,还需要另一组方程,这个方程由附加的约束给出。(以上内容引用自 wikipedia)

图片

孔径问题

(孔径问题示意,引用自:https://zhuanlan.zhihu.com/p/74460341)

假设:

  • 相邻帧之间的亮度恒定;
  • 相邻视频帧的取帧时间连续,或者,相邻帧之间物体的运动比较“微小”;
  1. 决策树

决策树是一种逻辑简单的机器学习算法,它是一种树形结构,所以叫决策树。这是一种基于 if-then-else 规则的有监督学习算法,决策树的这些规则通过训练得到,而不是人工制定的。

图片

  • 决策树易于理解和解释,可以可视化分析,容易提取出规则;
  • 可以同时处理标称型和数值型数据;
  • 比较适合处理有缺失属性的样本;
  • 能够处理不相关的特征;
  • 测试数据集时,运行速度比较快;
  • 在相对短的时间内能够对大型数据源做出可行且效果良好的结果。(引用自 wikipedia)
  1. 颜色直方图

颜色直方图是许多图像检索系统中被广泛采用的颜色特征。它所描述的是不同色彩在整幅图像中所占的比例,而并不关心每种色彩所处的空间位置,即无法描述图像中的对象或物体。(引用自 wikipedia)

图片

  1. 方向统计(Directional Statistics)

Directional statistics (also circular statistics or spherical statistics) is the subdiscipline of statistics that deals with directions (unit vectors in R(n)), axes (lines through the origin in R(n)) or rotations in R(n). More generally, directional statistics deals with observations on compact Riemannian manifolds including the Stiefel manifold. The fact that 0 degrees and 360 degrees are identical angles, so that for example 180 degrees is not a sensible mean of 2 degrees and 358 degrees, provides one illustration that special statistical methods are required for the analysis of some types of data (in this case, angular data). Other examples of data that may be regarded as directional include statistics involving temporal periods (e.g. time of day, week, month, year, etc.), compass directions, dihedral angles in molecules, orientations, rotations and so on. (引用自 wikipedia)

利用方向统计方法,能够准确地统计出向量样本的方向均值,以及方向的离散程度,也避免了传统统计方法在角度值统计计算上的误差。

举个简单的例子,如下图所示,7/4π 和 1/4π 统计均值,以传统方法计算为 π,而利用方向统计就可以得到出均值为 0 的结果。

图片

算法总流程设计

视频的定义就是运动的画面,但在屏幕共享当中,并不能够将运动的画面都当作视频内容来处理。实际使用中,需要将部分运动的画面识别为需要高清优先、流畅度其次的屏幕内容,保证用户在此时获得清晰的观看体验。

  1. 探索性数据分析(EDA

在正式进行算法开发之前,先进行了探索性数据分析,分析发现屏幕的运动特征具有较高的区分度,从而大致判定利用光流法来完成该任务的特征提取是可行的。

图片

图片

  1. 算法流程图

该检测算法分成三个模块,五个步骤。

三个模块分别是:

  • 运动幅度分析:主要进行运动幅度相关特征的提取,能够统计运动画面比例,去除一些噪音。
  • 运动角度分析:主要进行运动角度相关特征的提取,能够统计画面运动的方向,以及运动方向的分散程度等
  • 纹理特征分析:主要提取一些纹理相关的特征,判定当前区域是否为文字区域。

具体分为五个步骤:

  • 采样:光流算法需要前后两帧数据进行计算,需要对视频流进行采样,得到两帧数据
  • 光流计算:计算出全图的稠密光流
  • 特征提取:提取运动和纹理特征
  • 状态转移:通过一系列模式和规则进行状态转移
  • 输出结果:根据内部状态信息输出检测结果

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 视频会议
    +关注

    关注

    4

    文章

    157

    浏览量

    30116
  • RTC
    RTC
    +关注

    关注

    2

    文章

    494

    浏览量

    65628
收藏 人收藏

    评论

    相关推荐

    HarmonyOS实践之应用状态变量共享

    平时在开发的过程中,我们会在应用中共享数据,在不同的页面间共享信息。虽然常用的共享信息,也可以通过不同页面中组件间信息共享的方式,但有时使用应用级别的状态管理会让开发工作变得简单。 根
    发表于 12-27 09:48

    RTC程序设计:实时音视频权威指南】传输控制优化阅读 及其实践分享

    书中第八章 传输控制优化,主要介绍了拥塞控制,弱网降级,抖动缓存与平滑发送,错误恢复等几个部分的内容。 其中抖动缓存与平滑发送是非常重要的一部分,在实践中是保证音视频实时不断流的传输是必须
    发表于 04-21 17:11

    STM32F1RTC上电不起振的原因?怎么解决?

    ;CRLRTC_FLAG_RSF) == (uint16_t)RESET) 我用示波器测,不亮的屏幕,确实有些是外部32768没波形。但有些也有,屏幕也不亮。 网上查,说是F1RTC
    发表于 04-28 07:49

    怎么共享屏幕给对方,可以选择不同的屏幕共享软件?

    屏幕共享应用场景屏幕共享使用的场景一般是多台电脑(或平板、手机)协同办公。比如会议室内做培
    发表于 05-17 21:47

    MT6238芯片资料共享

    ,必须设置一个周期定时器用于电视检测。电视输出模式1在这种模式,你在LCM中看到的也将显示在电视上。在一般的MMI操作中,MMI可以要求驱动程序在电视上显示相同的图标/菜单。电视控制器将电视输出帧
    发表于 11-12 18:28

    高原环境TD-SCDMA网络的优化实践,不看肯定后悔

    高原环境TD-SCDMA网络的优化实践,不看肯定后悔
    发表于 05-28 06:57

    volatile关键字应用场景及示例

    volatile关键字1.应用场景2.示例1.应用场景volatile关键字分析,往往应用在三种场合1)多线程编程
    发表于 08-24 07:21

    MySql5.6性能优化最佳实践

    MySql5.6性能优化最佳实践
    发表于 09-08 08:47 13次下载
    MySql5.6性能<b class='flag-5'>优化</b>最佳<b class='flag-5'>实践</b>

    华为云在Kubernetes大规模场景下的Service性能优化实践

    本文档的主要内容详细介绍的是华为云在Kubernetes大规模场景下的Service性能优化实践包括了:1.Kubernetes的Service机制 2.Iptables实现Service负载均衡
    发表于 06-21 08:00 0次下载
    华为云在Kubernetes大规模<b class='flag-5'>场景</b>下的Service性能<b class='flag-5'>优化</b><b class='flag-5'>实践</b>

    Facebook已为移动设备上的Messenger启用了其屏幕共享功能

    现在,您最多可以与八个人在群聊中共享屏幕(或从相机胶卷,Instagram feed或任何您想要的东西)共享屏幕(或在Messenger Rooms中
    的头像 发表于 07-23 16:06 1549次阅读

    RTC互动语聊方案

    为了保证所有用户“边看边聊、精彩共享”的核心体验,“边看边聊”玩法选择了“ RTC 互动语聊”的方案,即所有用户都加入 RTC 房间,使用火山引擎 RTC 为支持超大型视频会议、在线教
    的头像 发表于 12-09 14:33 906次阅读

    浅析RTC技术及应用实践

    RTC(Real-Time Communication)意为实时通信,是一项已发展十余年的技术,主要是以语音、视频、网络电话作为通信主体,通常不要求完全必达,以RTP/RTCP、UDP作为
    的头像 发表于 05-26 16:38 2536次阅读
    浅析<b class='flag-5'>RTC</b>技术及应用<b class='flag-5'>实践</b>

    RTC 场景下的屏幕共享优化实践2

    屏幕共享是视频会议场景使用最广泛的功能之一,在共享一个 PPT 或者文档的情况下,人们对画面清晰度有着极高的要求,“看不清” 是最容易被用户吐槽的事情;而在
    的头像 发表于 05-26 17:01 698次阅读
    <b class='flag-5'>RTC</b> <b class='flag-5'>场景</b>下的<b class='flag-5'>屏幕</b><b class='flag-5'>共享</b><b class='flag-5'>优化</b><b class='flag-5'>实践</b>2

    介绍得物App在资源优化上做的一些实践

    包体积优化中,资源优化一般都是首要且容易有成效的优化方向。资源优化是通过优化APK中的资源项来优化
    的头像 发表于 07-24 09:00 533次阅读
    介绍得物App在资源<b class='flag-5'>优化</b>上做的一些<b class='flag-5'>实践</b>

    谷歌发布Pixel手机3月功能更新,优化应用屏幕共享和快速配对功能

    除对先前阶段不足之处进行修复和增强系统稳定性外,谷歌还将重点放在了扩大“圈选即搜”(Circle to Search)功能的覆盖范围、优化应用屏幕共享和Fast Pair等功能上。
    的头像 发表于 03-05 10:10 292次阅读