mediasoup 学习笔记 【三】 Producer 数据生产者

好久没没有更新了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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值