mediasoup-demo-v3中添加flexfec需要config.js修改什么
时间: 2024-01-10 15:02:33 浏览: 74
要在 mediasoup-demo-v3 中添加 flexfec,需要在 config.js 文件中进行如下修改:
1. 在 `mediasoupOptions` 对象中添加 `useFec: true`,以启用 FlexFEC。
2. 在 `mediasoupSettings` 对象中添加 `fecMechanism: 'flexfec'`,以指定使用 FlexFEC 作为前向纠错机制。
3. 在 `routerOptions` 对象中添加 `useRtcpMux: true` 和 `useSrtp: true`,以启用 RTCP 复用和 SRTP。
示例代码如下:
```
mediasoupOptions: {
// ...
useFec: true,
},
mediasoupSettings: {
// ...
fecMechanism: 'flexfec',
},
routerOptions: {
// ...
useRtcpMux: true,
useSrtp: true,
},
```
相关问题
mediasoup-demo-3中开发flexfec功能代码
mediasoup-demo-3中开发flexfec功能的代码与lexfec类似,也需要在前端、mediasoup-worker和mediasoup-client中分别进行修改。
1. 前端代码:在mediasoup-demo-3的前端代码中,需要添加一个新的参数用于开启flexfec功能,并将该参数传递给mediasoup-client的createTransport函数。具体代码如下:
```javascript
const device = new mediasoupClient.Device();
const sendTransport = await device.createSendTransport({
...
// 新增flexfec参数
encodings: [
{ maxBitrate: 100000 },
{ maxBitrate: 300000, scalabilityMode: 'S1T3' },
{ maxBitrate: 900000, scalabilityMode: 'S1T3', dtx: true, active: true, codecPayloadType: 102 },
],
// 新增flexfec参数
codecs: [
{ kind: 'audio', mimeType: 'audio/opus', clockRate: 48000, channels: 2 },
{ kind: 'video', mimeType: 'video/VP8', clockRate: 90000, parameters: { 'x-google-start-bitrate': 1000 } },
{ kind: 'video', mimeType: 'video/flexfec-03', clockRate: 90000 },
],
// 新增flexfec参数
iceTransportPolicy: 'relay',
additionalSettings: {
// 开启flexfec
googDscp: true,
googSuspendBelowMinBitrate: true,
googleDscp: true,
googleIPv6: true,
googleLimitedBandwidth: true,
googleMaxBitrate: 5000000,
googleMinBitrate: 300000,
googleStartBitrate: 1000,
googleRealtime: true,
googleCpuOveruseDetection: true,
googleCpuUnderuseThreshold: 55,
googleCpuOveruseThreshold: 85,
googleSuspendBelowMinBitrate: true,
googleScreencastMinBitrate: 400000,
},
});
```
2. mediasoup-worker代码:在mediasoup-worker代码中,需要添加flexfec相关的代码。具体来说,需要在mediasoup-worker的router对象上添加flexfec codec,以及在mediasoup-worker的transport对象上开启flexfec。具体代码如下:
```javascript
const router = await worker.createRouter({
mediaCodecs: [
{ kind: 'audio', mimeType: 'audio/opus', clockRate: 48000, channels: 2 },
{ kind: 'video', mimeType: 'video/VP8', clockRate: 90000, parameters: { 'x-google-start-bitrate': 1000 } },
// 添加flexfec codec
{ kind: 'video', mimeType: 'video/flexfec-03', clockRate: 90000 },
],
});
const transport = await router.createPlainTransport({
// 开启flexfec
enableUdp: true,
enableTcp: true,
preferUdp: true,
preferTcp: false,
udpKeepAliveInterval: 5000,
enableSctp: false,
numSctpStreams: { OS: 1024, MIS: 1024 },
// 开启flexfec
enableRtx: true,
enableSrtp: true,
enableSdes: true,
enableIceRestart: false,
enableH264: false,
enableOpusDtx: false,
enableOpusStereo: true,
enableOpusFec: true,
enableOpusDtx: true,
// 开启flexfec
enableVideoFec: true,
enableAudioFec: true,
maxSctpMessageSize: 262144,
sctpSendBufferSize: 262144,
sctpReceiveBufferSize: 262144,
maxSctpStreams: { OS: 1024, MIS: 1024 },
enableTcpCc: true,
});
```
3. mediasoup-client代码:在mediasoup-client代码中,需要添加flexfec相关的代码。具体来说,需要在mediasoup-client的transport对象上开启flexfec。具体代码如下:
```javascript
const transport = await device.createRecvTransport({
...
// 开启flexfec
iceTransportPolicy: 'relay',
additionalSettings: {
googDscp: true,
googSuspendBelowMinBitrate: true,
googleDscp: true,
googleIPv6: true,
googleLimitedBandwidth: true,
googleMaxBitrate: 5000000,
googleMinBitrate: 300000,
googleStartBitrate: 1000,
googleRealtime: true,
googleCpuOveruseDetection: true,
googleCpuUnderuseThreshold: 55,
googleCpuOveruseThreshold: 85,
googleSuspendBelowMinBitrate: true,
googleScreencastMinBitrate: 400000,
// 开启flexfec
videoGoogleStartBitrate: 1000,
videoGoogleMaxBitrate: 5000000,
videoGoogleMinBitrate: 300000,
videoGoogleFecEnabled: true,
audioGoogleFecEnabled: true,
},
});
```
以上就是mediasoup-demo-3中开发flexfec功能的代码。
在 MediaSoup-demo 中启用 FlexFEC
要在 MediaSoup-demo 中启用 FlexFEC,需要进行以下步骤:
1. 修改 MediaSoup-demo 的配置文件,找到 `config.js` 文件并打开。
2. 在 `config.js` 文件中,找到 `mediasoup` 部分的配置,添加以下参数:
```javascript
mediasoup: {
// ...
rtp: {
// ...
flexfec: {
// FlexFEC SSRC,需要与音视频 SSRC 不同
ssrc: 12345678,
// FlexFEC payload type,需要与音视频 payload type 不同
payloadType: 126,
// FEC 机制,目前只支持 "red" 和 "flexfec"
fecMechanism: "flexfec",
// FEC 标记,需要与音视频标记不同
rtx: {
ssrc: 12345679,
payloadType: 97
}
}
}
}
```
3. 在客户端中启用 FlexFEC,找到客户端代码中的 `mediasoup-client.js` 文件并打开。
4. 在 `mediasoup-client.js` 文件中,找到 `createSendTransport` 方法,在其中添加以下参数:
```javascript
const sendTransport = device.createSendTransport(transportOptions);
// 启用 FlexFEC
sendTransport.setOptions({
encodings: [
{
// 音视频 SSRC
ssrc: 11111111,
// 音视频 payload type
codecPayloadType: 100,
// 启用 FlexFEC
fec: {
ssrc: 12345678,
mechanism: "flexfec",
// FEC 标记
rtx: {
ssrc: 12345679,
payloadType: 97
}
}
}
]
});
```
5. 重新启动 MediaSoup-demo 服务器和客户端,测试 FlexFEC 效果。
需要注意的是,在启用 FlexFEC 之前,需要确认客户端浏览器是否支持 FlexFEC。另外,FlexFEC 技术可能会增加网络带宽和延迟,需要权衡其优缺点。
阅读全文