基于Janus房间服务器的POC对讲实现

一、理解Janus插件janus_videoroom的包转发实现
该插件模式具备SFU的包转发能力,每一个进入房间的与会者,可以通过Publish发布自己的音视频,也可以通过Subscribe订阅其他人的音视频,转发能力由libnice库提供

二、理解POC对讲半双工模式下的包转发实现
POC,是PTT Over Cell 的简写,PTT是按下讲话的意思,要么说,要么听别人说,不会出现同时讲话&听的情况,所以类似半双工的通信方式;如果还沿用janus_videoroom的实现,如果有N个人参与的会议室,那么每个与会者都需要订阅其他N-1个人声音,会有N-1条下行信道,但每次只有一个信道可用,这对信道资源来说是明显的浪费,所以,我们希望改造成MCU模式,但又不需要做服务器端的混音操作,完成POC的业务对讲能力

三、最后实现
1、给房间增加一个公共的publish对象,所有对房间的订阅都是订阅该publish对象,达到支持 从SFU模式到支持MCU转发模式(适应POC对讲模式的MCU模式)
2、支持会场TBCP控制信息通过DataChannel通道传递
3、支持会场TBCP控制和会场通知 

 

部分逻辑:

给janus_videoroom结构体里面增加一个 janus_videoroom_publisher *room_publisher;

在创建房间成功后,既实例化这个对象room_publisher;

初始进入房间或者枚举房间的publisher的时候,只返回这个对象即可,不返回room结构体里面的participants列表中的用户id,这样每个subscriber都对应的是这个publisher对象;

然后在媒体包过来的时候,枚举room_publisher中的subscriber,逐个分发即可。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值