原生 WebRTC 丢帧

use*_*730 3 c++ h.264 sdp web webrtc

摘要:如何使用 WebRTC 原生流式传输高质量视频?

我有一个 1920x1080、大约 30fps 的 h264 流。我目前可以将其从本地主机上的服务器流式传输到本地主机上的本机客户端。

我使用 Google 的 WebRTC 原生库编写了一个 WebRTC 服务器。我编写了一个 VideoEncoder 和 VideoEncoderFactory ,它获取由已编码数据组成的帧,并通过视频轨道广播它。使用此功能,我可以通过管道将 h264 流发送到 WebRTC 服务器,并且可以在浏览器中查看视频流。

然而,只要有东西移动,视频就会损坏。它继续播放,但充满了伪影。最终我发现 WebRTC 丢掉了一些帧。当我在将每个帧传递给 rtc::AdaptedVideoTrackSource::OnFrame 之前将顺序递增的 ID 附加到每个帧并将其记录在 webrtc::VideoEncoder::Encode 中时,我可以看到我的一些帧完全消失了。

这是有道理的,我正在尝试通过用于视频聊天的内容传输高质量视频,并降低帧速率来修复损坏。然而,我并没有要求 WebRTC 库做很多事情,它只是将已经编码的数据转发到本地主机上的客户端。我有一个本机应用程序可以很好地完成此操作,并且我见过一个可以执行此操作的浏览器 WebRTC 客户端。SDP 中是否有字段或某些配置更改允许我流式传输视频?

use*_*730 5

这就是解决方案 如何控制WebRTC视频通话中的带宽?

我听说过要更改 sdp,但拒绝了它,因为我被告知浏览器默认情况下将接受无限带宽,并且只有在您想限制带宽时才需要这样做。但是,添加“b=AS:high number”解决了我的所有问题。