【发布时间】:2020-05-01 15:36:18
【问题描述】:
我正在使用 WebRTC 的 Objective-c 框架来构建屏幕共享应用程序。使用 CGDisplayStream 捕获视频。我有一个工作演示,但在 2580x1080 下我只能得到 3-4 fps。我的 googAvgEncodeMs 大约为 100-300 毫秒(理想情况下应该 > 10 毫秒),这解释了为什么屏幕共享远非流畅(30fsp+)。我还在编解码器 (h264/vp8/vp9) 之间切换,但对于所有这些,我得到了同样缓慢的体验。 webRTC 中的 contentType 设置为 screen(值:[screen,realtime])。
我的 mac 的 cpu 使用率在 80-100% 之间。我的猜测是我错过的编解码器的 c++ 代码中有一些主要的优化(qpMax、硬件加速等)。不幸的是,我对编解码器的了解有限。
也很有趣:即使我将分辨率降低到 320x240,googAvgEncodeMs 仍然在 30-60 毫秒的范围内。
我从 2018 年开始在 15 英寸 MacBook Pro 上运行它。在 Chrome/Firefox 等中运行随机 webrtc 时,我得到的结果比使用普通 webrtc 框架更流畅。
【问题讨论】:
标签: objective-c swift performance encoding webrtc