前面的文章我们进行了webrtc的下载和编译实践,本文我们跑webrtc的第一个demo体验一下webrtc的通话,加深对webrtc的初步理解,同时介绍第一个demo踩坑的解决过程。
一、基本原理
客户端:peerconnection_client.exe,该程序跑是一个视频通话的客户端程序,负责音视频的采集,编码,渲染,发送,接收,以及信令呼叫
服务器:peerconnection_server.exe,该程序是视频通话中的信令服务器,负责信令呼叫,成员管理等。
webrtc的P2P基本原理
二、操作步骤
1)在A机器上启动server,server 默认是8888端口
2)在B机器和C机器上分别运行peerconnection_client.exe
3)输入服务器IP,点击connect,双击对方客户端名称
不幸的是,客户端瞬间卡住并马上崩溃。
环境是window10,原以以为是自己PC机环境问题,后面换了几台电脑依然如此,demo无法跑起来。
4)抓包和问题分析
网络抓包发现客户端A采集音视频数据发给客户端B,客户端B收数据时崩溃了。继续通过堆栈跟踪发现在CaptureInputPin::Receive()函数中崩溃了。踏破铁鞋无觅处得来全不费功夫,修改这个函数,重新编译或者编译release版本,运行client通话成功,音频和视频通过效果正常。
以上webrtc的demo只是在局域网中的一次成功实践,但目前无法完成跨局域网的2台机器视频通话,实际商用的服务器是放在公网,借助公网中的ICE server完成P2P的穿透学习或者媒体数据relay,后面我们将介绍该demo在公网中的实践。