FreeSWITCH 1.10.10 简单图形化界面15 - JsSIP媒体控制(LookLook)


FreeSWITCH界面安装参考:https://blog.csdn.net/jia198810/article/details/137820796

0、 界面预览

http://myfs.f3322.net:8020/
用户名:admin,密码:admin

FreeSWITCH界面安装参考:https://blog.csdn.net/jia198810/article/details/137820796

1、本地媒体流

通过JsSIP建立通话后,获取JsSIP.RTCSession类,通过mute()方法可控制是否关闭和开启本地音频或者视频媒体。
可参考JsSIP使用手册https://jssip.net/documentation/api/session/#method_mute

如下:

获取session
  //通过JsSIP.UA的newRTCSession事件获取呼叫session,并通过mute开启关闭本地音频和视频
  this.ua.on('newRTCSession', (e) => {
      this.currentSession = e.session;
      //其他代码
      .....
   })
本地音频
//关闭本地音频
//通过options控制是关闭音频还是视频
this.muteLocalAudio = () =>{
    //开启音频,则audio:false
	this.currentSession.mute(options={audio:true,video:false})
}
本地视频
//关闭本地视频
//通过options控制是关闭音频还是视频
this.muteLocalVideo = () =>{
    //开启视频,则video:false
	this.currentSession.mute(options={audio:true,video:true})
}

2、远端媒体流

通过JsSIP建立通话后,获取JsSIP.RTCSession类的confirmed事件获取远端媒体MediaStream对象,然后通过媒体轨道MediaStreamTrack关闭和开启远端媒体。
可参考web开发手册https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/enabled

如下:

获取媒体流
 //获取JsSIP.RTCSession类的confirmed事件获取远端媒体
this.audioReceiver = null;
this.videoReceiver = null;
this.currentSession.on("confirmed", (e) => {
    

     // 分别获取音频和视频
    receivers.forEach((receiver) => {
        if (receiver.track.kind === "audio") {
            audioReceiver = receiver;
        } else if (receiver.track.kind === "video") {
            videoReceiver = receiver;
        }
     }); 
   // 播放音频及视频
   ......
});
远端音频

通过MediaStreamTrack的enabled属性控制媒体轨道

//关闭远端音频
this.closeRemoteAudio = () =>{
    //开启音频,则enabled = true
    this.audioReceiver.getAudioTracks()[0].enabled = false
}
远端视频
//关闭远端视频,黑屏
this.closeRemoteVideo = () =>{
    //开启视频,则enabled = true
    this.videoReceiver.getVideoTracks()[0].enabled = false
}

相关推荐

  1. Win11安装WSL2在非系统盘(非C盘)+图形界面

    2024-04-22 10:06:03       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-22 10:06:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-22 10:06:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-22 10:06:03       87 阅读
  4. Python语言-面向对象

    2024-04-22 10:06:03       96 阅读

热门阅读

  1. 阿里云难题学习笔记

    2024-04-22 10:06:03       30 阅读
  2. C#基础|数组的使用、字符串的分隔与连接

    2024-04-22 10:06:03       32 阅读
  3. 6、掌握对象在内存中的分配与变迁

    2024-04-22 10:06:03       38 阅读
  4. 20个npm常用命令及详解

    2024-04-22 10:06:03       32 阅读
  5. 监控指定任务,结束钉钉通知

    2024-04-22 10:06:03       44 阅读
  6. 【设计模式】模板方法模式

    2024-04-22 10:06:03       29 阅读
  7. K8s ingress-controller中nginx文件上传大小的限制

    2024-04-22 10:06:03       34 阅读
  8. .NET Core中间件管道MAP的作用和使用

    2024-04-22 10:06:03       35 阅读
  9. 5G 边缘计算如何赋能工业自动化生产线?

    2024-04-22 10:06:03       33 阅读
  10. 富格林:利用正规方法提升出金收益

    2024-04-22 10:06:03       33 阅读
  11. 【php快速上手(十一)】

    2024-04-22 10:06:03       33 阅读