WebRTC/Chromium在2020年的更新

LiveVideoStack 2020年12月31日

这些改变将使chromium和许多其他chromium/应用程序更容易使用!

作者 / Jgrulich

原文链接 / https://jgrulich.cz/2020/12/18/webrtc-chromium-updates-in-2020/?utm_source=rss&utm_medium=rss&utm_campaign=webrtc-chromium-updates-in-2020

在2019年,我第一次尝试对有关WebRTC的内容进行贡献。这全部的内容都是支持dg-desktop-portal和PipeWire在Linux Wayland上关于屏幕共享的资讯。在那个时候,我们所面临的情况是非常简单的,我们只有PipeWire 0.2,并且所有门户网站后端仅支持屏幕共享(不支持窗口共享)。尽管这相对容易,但是它并不理想,因为每个屏幕共享请求都涉及两个门户对话框,以获取web页面本身的屏幕内容。对我而言,这是一个巨大的成功,因为我为这样一个被许多人使用、所有现代浏览器都在使用的大型项目做出了相当重要的贡献。

在2020年初,也就是每个人都想从记忆中抹除这段回忆的一年,我们获得了PipeWire 0.3(API略有不同),后来又有了xdg-desktop-portal-gtk和xdg-desktop-portal-kde(在今年晚些时候)人们终于能够共享应用程序窗口。WebRTC缺少对所有这些功能的支持,因为在那时这些功能不可用。我想立即解决所有问题,提供对窗口共享的支持,并摆脱门户网站的“dialog hell”,而门户网站后端的新窗口共享功能则更加糟糕。


大概的情况就是上图这样。每次发出请求共享一个屏幕时,你都会从Chromium中获得预览的对话框。该对话框由三页组成。一页是用于屏幕共享,以发出一个门户请求,第二页是用于窗口共享,这是另一个门户请求,最后一页是允许共享已打开的web页面。您必须确认两个门户对话框,然后确认Chromium对话框,最后你还会得到一个额外的门户对话框来获取web页面本身的内容。

我有一个解决方案。我用一个ID进行了所有的门户调用,并在Chromium预览对话框的两个页面之间以及对网页本身的请求中用Chromium共享了这个ID(门户调用)。使用此解决方案,我们只有一个门户对话框。这是一个完美的解决方案(至少看起来是这样)。我从今年年初开始研究这个问题,我们与Chromium UX团队的人员之间互通了很多电子邮件,因为我还想在预览对话框中尝试进行一些小的UI更改。不幸的是,由于为了保持与所有平台的一致性,这些请求都被拒绝了。但是这也没什么大不了的,我提交了我的更改以供审查,并保持UI的原样不变,只是在Chromium和WebRTC中添加了所有必要的部分,以使其能够正常工作。

我想说,虽然看起来从那以后事情进展顺利,但事实恰恰相反。虽然我花了一段时间才将所有内容都看完,但这也并不奇怪,很多人在家的工作条件都不太理想。无论如何,几个月过去了,我最终多次重写了我的修改,甚至还没来得及算上我花在这上面的时间。这一切都让我沉迷于这种改变,我一直在思考如何做得更好,并且我常常在晚上解决一些问题,而不是花时间陪伴家人。把时间浪费在我心爱的Playstation上会更好。这对我的心理健康产生了非常负面的影响,我意识到这种情况必须停止,于是我干脆放弃了,因为我不能再这样下去了,我需要休息一下。我放弃了两个更改(WebRTC和Chromium),并决定只选择我能够完成的更改。我可能把我的改变做得太过雄心勃勃,太过复杂,或者可能只是Chromium还没有准备好接受这种改变,因为有些调整是针对我的用例的。我也不希望上游开发者能给我更多的帮助,因为关于Wayland, portals和PipeWire以及如何将它们整合在一起还有许多需要理解的内容。

无论如何,我有了一个新的开始,在放弃改变后没有压力的情况下,我选择了最重要的变更并将其分别提交。现在让我感到惊讶的是,事情进展得如此顺利,而这些变更的上传速度如此之快。这些更改很简单,易于理解且易于审核。我没有完全放弃解决“dialog hell”的问题,我还有一些其他的想法,但是下次我将尝试一步一步地提交它们,并在不占用我过多空闲时间的前提下。

在即将于2021年发布的Chromium中,你期待有什么变化?

支持PipeWire 0.3

你现在可以用PipeWire 0.2和PipeWire 0.3来构建Chromium/WebRTC。有一个新的“rtc_pipewire_version”选项可以传递给构建配置。

窗口共享支持

这个可能是不需要描述的。如果你不想共享整个屏幕,你可以共享应用程序窗口。

支持DmaBuf和MemFd缓冲区类型

这应该可以让你的屏幕内容更快地从Wayland排版器通过管道传输到浏览器。

更少的门户对话框

如果回头看一下我上面发布的屏幕截图,你会发现有两个门户对话框只为Chromium预览对话框打开。我至少尝试将其简化为一个门户对话框。这是通过删除用于窗口共享的页面来完成的,因为屏幕共享请求将同时处理屏幕和窗口。

我想您可以期待Chromium 89的上述更改,并且希望您至少能欣赏其中的一些改进,即使我没有提供我想要的一切。此外,感谢我们的Firefox团队的MartinStránský,您可以期望所有这些更改也将成为Firefox的一部分。

新年快乐,祝你在新的一年里更加美好。



二〇二〇年对大部分人来说都不是特别顺遂,我们曾经在新年伊始吐槽希望重启二〇二〇,如今却已经站在了年尾。

再见2020,你好2021。


还可输入800
全部评论
作者介绍

LiveVideoStack

音视频技术社区

文章

粉丝

视频

阅读排行
  • 2周
  • 4周
  • 16周