操作系统:Windows 10
IDE: Visual Studio 2019
GitHub:https://github.com/versatica/libmediasoupclient/
官网文档:https://mediasoup.org/documentation/v3/libmediasoupclient/
一、前言
Windows版本的Mediasoup客户端需要基于libmediasoupclient和libwebrtc开发,关于这两个静态库如何编译我已经在前面两篇文章中有详细说明了,请移步:Google开源项目WebRTC下载及编译、Windows平台下libmediasoupclient编译指南。走到这一步可以说很不容易了,前方仍然荆棘密布,危险警告。如果想要抄近道,比如直接拿别人编译好的libmediasoupclient和libwebrtc,我奉劝早点放弃这种幼稚的想法,因为项目依赖关系过于复杂,实际行不通的,还是得一步一个脚印的走。
二、新建项目
Mediasoup客户端除了需要libmediasoupclient和libwebrtc提供的网络通信功能之外,还需要创建用户界面,这里我使用的是Qt 5.15.2,由于之前工作的关系,我对这套GUI框架可以说十分熟悉了。
首先,我们使用VS2019新建一个Qt项目,创建一个主窗口。然后添加一个新的类:MediasoupApi,用于封装Mediasoup提供的接口。类的构造函数先实现一个最简单的版本号打印:
#include "MediasoupApi.h"
#include <iostream>
#include <mediasoupclient.hpp>
MediasoupApi::MediasoupApi()
{
std::string ver = mediasoupclient::Version();
std::cout << ver << std::endl;
}
三、项目配置
1、静态库头文件
找到libmediasoupclient和libwebrtc静态库的头文件,并添加到项目。
在项目属性 > 配置属性 > c/c + + > 常规 > 附加包含目录中添加:
D:\Github\libmediasoupclient\include
D:\Github\libmediasoupclient\deps\libsdptransform\include
D:\libwebrtc\src
D:\libwebrtc\src\third_party\abseil-cpp
2、链接静态库
找到libmediasoupclient和libwebrtc静态库文件,并添加到项目。
在项目属性 > 配置属性 > 链接器 > 输入 > 附加依赖项中添加:
D:\libwebrtc\src\out\Default\obj\webrtc.lib
D:\Github\libmediasoupclient\build\Release\mediasoupclient.lib
3、宏定义
在项目属性 > 配置属性 > c/c + + > 预处理器 > 预处理器定义中添加:
NOMINMAX
WIN32
_WINDOWS
NDEBUG
WEBRTC_WIN
4、运行库
项目属性 > 配置属性 > c/c + + > 代码生成 > 运行库,这项需要改为MT模式。
5、链接libwinmm
在MediasoupApi.cpp中添加#pragma comment(lib, "winmm.lib "),否则编译时会报错:
无法解析的外部符号 __imp__timeGetTime
6、控制台打印
如果想要在程序运行后,查看控制台打印
需要在项目属性 > 配置属性 > 生成事件 > 生成后事件 > 命令行中添加:
editbin /SUBSYSTEM:CONSOLE $(OutDir)\$(ProjectName).exe
四、编译运行
项目配置完成后就可以编译运行查看效果了,这里打印版本号为3.1.2即说明我们已经成功引入libmediasoupclient了。