Windows平台下Mediasoup客户端开发指南

操作系统: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了。

 

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Mediasoup 安卓客户端中启用 FlexFEC 需要进行以下步骤: 1. 确认客户端支持 FlexFEC:在实现 FlexFEC 之前,需要确认客户端是否支持 FlexFEC。目前,安卓客户端可以通过使用 WebRTC 库来支持 FlexFEC。 2. 修改 PeerConnection 配置:在 Mediasoup 安卓客户端中,需要通过修改 WebRTC PeerConnection 的配置来启用 FlexFEC。可以使用 PeerConnectionFactory 的 setOptions 方法来设置 PeerConnection 的配置。以下是一个启用 FlexFEC 的配置示例: ```java PeerConnectionFactory.Options options = new PeerConnectionFactory.Options(); options.disableEncryption = true; options.disableNetworkMonitor = true; options.disableIPv6OnWifi = false; options.disableIPv6OnMobile = false; options.disableLinkLocalNetworks = false; options.enableDtlsSrtp = true; options.enableRtpDataChannel = false; options.suspendBelowMinBitrate = true; // Enable FlexFEC. RtpParameters.FlexFecParameters flexFecParameters = new RtpParameters.FlexFecParameters(); flexFecParameters.setSsrc(22222222L); flexFecParameters.setPayloadType(126); flexFecParameters.setMechanism(RtpParameters.FlexFecMechanism.FLEXFEC_03); // Set FlexFEC parameters. RtpParameters parameters = new RtpParameters(); parameters.setFlexFecParameters(flexFecParameters); // Set PeerConnection options. options.setRtpParameters(parameters); ``` 3. 创建 PeerConnection:在设置完 PeerConnection 的配置后,需要创建一个新的 PeerConnection 对象,并将其绑定到 Mediasoup 客户端。以下是一个创建 PeerConnection 的示例: ```java // Create PeerConnection. PeerConnection.RTCConfiguration configuration = new PeerConnection.RTCConfiguration(servers); PeerConnection peerConnection = peerConnectionFactory.createPeerConnection(configuration, new CustomPeerConnectionObserver()); // Set PeerConnection options. peerConnection.setConfiguration(configuration); ``` 4. 测试 FlexFEC 效果:在完成上述步骤后,可以通过测试工具或者实际应用场景来测试 FlexFEC 的效果。 需要注意的是,FlexFEC 技术虽然可以提高音视频传输的鲁棒性,但也会增加网络带宽和延迟。因此,在使用 FlexFEC 时需要权衡其优缺点,选择合适的传输方案。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值