Windows下 WebRTC Demo运行: PeerConnection

PeerConnection Demo简介

 

成功编译WebRTC源码之后,可以运行WebRTC自带的例子体验一对一音视频通信效果。使用src/out/Debug 目录下的peerconnection_client.exe 和 peerconnection_server.exe两个文件,最终运行的架构图如下图所示:

 

 

局域网运行PeerConnection

 

局域网运行PeerConnection 例子需要用到两台电脑,并要求两台电脑都配置有摄像头和麦克风。测试步骤如下:

1. 电脑A运行peerconnection_server.exe。

2. 电脑A运行peerconnection_client.exe, Server一栏输入 localhost,点击Connect。

 

3. 电脑B运行peerconnection_client.exe,Server一栏输入电脑A的局域网ip地址,点击Connect。

4. 电脑A或电脑B双击列表框出现的第一个选项, 建立音视频通信。

 

5. 任意一方可以在中途按ESC键退出音视频通信。

 

广域网运行PeerConnection

 

PeerConnection在广域网下运行要麻烦一些,需要借助TURN 服务器做媒体数据转发(在P2P连接不成功时)。最终的运行架构如下图所示:

 

 

在广域网下测试 PeerConnection 需要两台不同网段的电脑,都需要带有摄像头和麦克风。同时也需要租用一台公网服务器,本文租用了一台Amazon的 Windows 2008 R2 32位服务器搭建TURN服务器(媒体转发服务器)和PeerConnctionServer(信令服务器)。

1. 使用cygwin交叉编译TURN服务器,嫌麻烦的话可以下载我已经编译好的。

2. 在云服务器上部署Windows 2008 R2 32位服务器,在服务器上运行 peerconnection_server.exe 和 turnserver.exe。启动命令如下:

 

.\turnserver -v -L 0.0.0.0 -f -m 3 --min-port=32355 --max-port=65535 -a -u name:pass -realm=mycompany.org --max-allocate-timeout=10
.\peerconnection_server

 

如果下载了我的资源可以直接运行start.bat启动turnserver 和 peerconnection_server。

 

3. 客户端电脑使用 telnet 命令测试 peerconnection_server.exe 是否可以连接成功,端口为8888:

 

4. 使用TURN服务器测试网站验证TURN服务器是否可以连接成功,配置正确的话可以看到Done

 

 

5. 打开src/all.sln, 替换 conductor.cc的CreatePeerConnection()函数为如下代码:

 

 
  1. bool Conductor::CreatePeerConnection(bool dtls) {

  2. ASSERT(peer_connection_factory_.get() != NULL);

  3. ASSERT(peer_connection_.get() == NULL);

  4.  
  5. webrtc::PeerConnectionInterface::RTCConfiguration config;

  6. webrtc::PeerConnectionInterface::IceServer server;

  7. server.uri = "turn:13.115.245.41:3478";

  8. server.username = "name";

  9. server.password = "pass";

  10. config.tcp_candidate_policy = webrtc::PeerConnectionInterface::kTcpCandidatePolicyDisabled;

  11. config.servers.push_back(server);

  12.  
  13. webrtc::FakeConstraints constraints;

  14. if (dtls) {

  15. constraints.AddOptional(webrtc::MediaConstraintsInterface::kEnableDtlsSrtp,

  16. "true");

  17. } else {

  18. constraints.AddOptional(webrtc::MediaConstraintsInterface::kEnableDtlsSrtp,

  19. "false");

  20. }

  21. constraints.AddOptional(webrtc::MediaConstraintsInterface::kEnableIPv6, "false");

  22.  
  23. peer_connection_ = peer_connection_factory_->CreatePeerConnection(

  24. config, &constraints, NULL, NULL, this);

  25. return peer_connection_.get() != NULL;

  26. }

 

6. 两个客户端运行peerconnection_client.exe,地址填写服务器公网地址即可在广域网下进行视频通信测试。

 

小结

* 测试时需要将3~6步中所有的公网地址改成自己的服务器公网地址。

* 检查服务器的组策略设置和防火墙设置正确,使得客户端可以正常访问服务器的对应端口。

* 第二步中启动TURN服务器的命令也可以用在Linux服务器上。

* 访问TURN服务器的用户名和密码在启动时通过 -u 参数指定。

* 第五步创建peer_connection时传递TURN服务器地址、用户名和密码;关闭了TURN TCP转发,只使用UDP转发;关闭了IPV6,只使用IPV4。

* 广域网视频联通后,可以关闭TURN服务器测试:如果视频中断则表示通过TURN服务器转发,否则为广域网P2P连接。在测试广域网连接时,需要保证两台电脑不在同一网段。

 

参考资料

https://github.com/coturn/coturn

https://www.cnblogs.com/mobilecard/p/6503301.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
WebRTC Demo是一种在线应用程序,它基于WebRTC技术,能够通过网络实时传输音频、视频和数据。WebRTC是一种开放性的标准,旨在使浏览器成为实时通信的平台,而不需要安装额外的插件或软件。 通过WebRTC Demo,用户可以利用网络直接进行语音和视频通话,而无需使用传统的电话线路。此外,它还提供了实时数据传输的功能,使用户能够共享文件、屏幕或其他类型的数据。 WebRTC Demo的工作原理是基于P2P(点对点)连接。它使用STUN(Session Traversal Utilities for NAT)和TURN(Traversal Using Relays around NAT)协议来处理网络的穿透和转发。这样,用户可以建立直接的连接,实现快速稳定的通信。 WebRTC Demo可以应用于多种场景,如在线会议、远程教育、客户服务等。它为用户提供了方便快捷的实时通信方式,无论是个人用户还是企业用户,都可以从中受益。 WebRTC Demo还具有跨平台的特性,可以在不同的设备上运行,包括桌面、移动端和嵌入式设备。用户可以在智能手机、平板电脑或计算机上使用WebRTC Demo,随时随地与其他人进行通信。 总之,WebRTC Demo是一种能够实现在线实时通信的应用程序,它利用WebRTC技术提供了音频、视频和数据传输的能力,为用户提供了方便快捷的通信方式。无论是个人用户还是企业用户,都可以通过WebRTC Demo实现在线的语音、视频通话和数据共享。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值