一.环境
WebRTC版本:2021.03.07的master分支,详见 WebRTC学习之二:编译
Qt版本:Qt5.12.6 VS2017
二.效果
这里使用的是虚拟摄像头,虚拟摄像头那家强,当属OBS的插件。右下角是本地视频,比较大的是远端视频。
三.实现
1.数据发送
翻看WebRTC源码,可以发现rtp/rtcp的发送最终会调用到cricket::MediaChannel::NetworkInterface接口中的SendPacket和SendRtcp方法。因此我们只要子类化这个接口,并重写SendPacket和SendRtcp方法,在这两个方法中用udp协议将数据发送出去。当然,还需要调用cricket::VideoMediaChannel的SetInterface方法将我们子类化的接口设置到channel中。
bool QHNetworkInterface::SendPacket(rtc::CopyOnWriteBuffer* packet, const rtc::PacketOptions& options)
{
MutexLock lock(&mutex_);
QUdpSocket udpsocketSendRTP;
udpsocketSendRT