首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PayloadTypes之间的mediasoup -未命中

PayloadTypes之间的mediasoup -未命中
EN

Stack Overflow用户
提问于 2017-12-05 16:38:23
回答 3查看 492关注 0票数 2

我正在尝试使用mediasoup通过room.createRtpStreamer转发RTP流

我的问题是我从producer.rtpParameters.codecs[i].payloadType得到的有效负载类型(对于OPUS)是111,

而我在实际RTP数据包上得到的是100 (在Wireshark上可以看到)

我尝试在服务器的配置中设置preferredPayloadType,但似乎没有什么不同。

注意:如果我硬编码100作为OPUS流的有效负载类型,我可以使用FFPlay查看/听到流

我使用的是Chrome 55 (最新版本)和mediasoup 2.0.5 (最新版本)

任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2017-12-05 23:15:41

由于Producer的RTP参数由客户端(浏览器)决定,所以OPUS的PT为111 (Chrome生成的默认值)。

但是,一旦进入mediasoup服务器,与该Producer相关联的Consumers就会使用房间创建过程中给出的RTP参数。因此,如果提供给room = new server.Room(codecs) 1的编解码器具有preferredPayloadType字段,则将在Consumers中使用该字段(否则将由服务器随机选择)。

因此,当您调用room.createRtpStreamer()时,您提供了一个Producer,并且生成的RtpStreamer 2具有一个关联的ConsumerPlainRtpTransport。所以,你应该阅读rtpStreamer.consumer.rtpParameters,而不是producer的。

票数 3
EN

Stack Overflow用户

发布于 2017-12-05 17:06:56

您应该查看call setup消息的SDP,并检查OPUS有效负载是111还是100。从那里你可以决定哪个部分有bug (Chrome还是mediasoup)。在呼叫建立消息(发起呼叫)中,检查OPUS代码的有效负载。如果被叫方接受OPUS,则被叫方应该用相同的有效载荷号码进行响应,然后双方都应该在RTP分组中使用相同的有效载荷号码。

票数 2
EN

Stack Overflow用户

发布于 2017-12-05 19:42:26

因此,我发现我在producer.rtpParameters.codecs[i].payloadType上获得的有效负载是原始有效负载,并且room.createRtpStreamer更改了有效负载类型。

最终执行了以下操作来解决该问题

代码语言:javascript
运行
复制
// get the payload (type) from the room.rtpCapabilities.codecs.preferredPayloadType for the specific codec
let payload = this.room.rtpCapabilities.codecs.find((c)=>{
    return c.name === producer.rtpParameters.codecs[i].name;
}).preferredPayloadType;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47649251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档