【发布时间】:2018-11-13 23:16:07
【问题描述】:
总结:如何使用 WebRTC 原生流式传输高质量视频?
我有一个 1920x1080、大约 30fps 的 h264 流。我目前可以将其从本地主机上的服务器流式传输到本地主机上的本机客户端。
我使用 Google 的 WebRTC 原生库编写了一个 WebRTC 服务器。我编写了一个 VideoEncoder 和 VideoEncoderFactory,它接收由已编码数据组成的帧,并在视频轨道上广播它。使用它,我可以通过管道将我的 h264 流发送到 WebRTC 服务器,我可以在浏览器中看到视频流。
但是,只要有东西移动,视频就会损坏。它继续播放,但充满了文物。最终我发现 WebRTC 正在丢掉我的一些帧。当我在将每个帧传递给 rtc::AdaptedVideoTrackSource::OnFrame 之前为每个帧附加一个顺序增加的 ID 并在 webrtc::VideoEncoder::Encode 中记录相同的 ID 时,我可以看到我的一些帧只是消失了。
这是有道理的,我正在尝试通过用于视频聊天的东西流式传输高质量的视频,并降低我的帧速率来修复损坏。但是,我并没有要求 WebRTC 库做很多事情,它只是将已经编码的数据转发到本地主机上的客户端。我有一个可以很好地做到这一点的本机应用程序,并且我已经看到一个可以做到这一点的浏览器 WebRTC 客户端。 SDP 中是否有允许我流式传输视频的字段或某些配置更改?
【问题讨论】: