概述
好久没没有更新了mediasoup相关文章了,本来打算一次性整理完成,后来时间关系没有整理完成再全部发出来。
这篇文章主要讲下直播的时候主播通过什么方式把把自己的视频广播出去用mediasoup-producer 生产者
官网给的案例
const producer = await transport.produce(options)
options相关参数
- track 音频还是视频 audio video 其实是 gettracks的值
- rtpParameters rtp的相关参数,下面会提到是从哪里获取的
- paused 暂停状态
- keyFrameRequestDelay 关键帧的延迟设置 0 就是没有延迟
- appData 业务自定义数据
这里要注意 video 和 audio 是分开生产得
rtpParameters
rtp相关参数的获取,rtp协议其实我也只是从网上搜了下,Real-time Transport Protocol 实时传输协议,这里单纯的还是从服务端获取,
在官方的demo代码中会发现 getRouterRtpCapabilities
这里只贴出一部分
- server
case 'getRouterRtpCapabilities':
{
accept(this._mediasoupRouter.rtpCapabilities);
break;
}
- client
routerRtpCapabilities = await this._protoo.request('getRouterRtpCapabilities');
await this._mediasoupDevice.load({ routerRtpCapabilities });
... 此处省略代码...
let stream = await navigator.mediaDevices.getUserMedia({
audio: {
volume: 0.5, // 音量,0静音,1最大声音
sampleRate: 48000,// 采样率
sampleSize: 16, // 采样大小(每一个样用多少位表示)
echoCancellation: true, // 是否开启回音消除
autoGainControl: false, // 是否开启自动增益,也就是在原有录制的声音的基础上是否增加音量
noiseSuppression: true, // 是否开启降噪
latency: 0.2, // 延迟大小,在直播过程中latency设置的越小实时性会越好,但是网络不好时容易出现卡顿;设置的越大流畅度越好,但是设置太大会有明显的延迟。一般设置500ms,设置为200ms实时效果就很好了,大于500ms就能明显感觉到延迟了。
channelCount: 2, // 声道数,一般设置单声道就够了
deviceId: device.value, // 音频设备deviceID
groupId: undefined, // 音频设备groupID
}
});
const audioTracks = stream.getAudioTracks();
track = audioTracks[0];
await _sendTransport.produce({track})
然后根据生产的数据、通过信令广播出去
this._sendTransport.on('produce', async (first, callback, errback) => {
let { kind, rtpParameters, appData } = first;
try {
let produceItem = await this._protoo.request('produce', { transportId: this._sendTransport.id, kind, rtpParameters, appData });
callback({ id: produceItem.id });
} catch (error) {
errback(error);
}
});
到这里就已经生产数据已经完成了,
其实官方的文档,有些和demo里面不太一致,两者需要结合着看,毕竟这么大的系统。
后续会更新 消费者根据接收到的数据,怎么同步播放出来。
参考文章
https://www.cnblogs.com/lidabo/p/7217549.html
最后
以上就是谦让百褶裙为你收集整理的mediasoup 学习笔记 【三】 Producer 数据生产者的全部内容,希望文章能够帮你解决mediasoup 学习笔记 【三】 Producer 数据生产者所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复