FreeSWITCH 1.10.10 简单图形化界面24-呼入呼出编码
- FreeSWITCH GUI界面预览
- 00、安装FreeSWITCH GUI先看使用手册
- 1、语音接听还是视频接听
- 2、排查
FreeSWITCH GUI界面预览
http://myfs.f3322.net:8020/
用户名:admin,密码:admin
FreeSWITCH界面安装参考:https://blog.csdn.net/jia198810/article/details/137820796
00、安装FreeSWITCH GUI先看使用手册
先看使用手册,先看使用手册,先看使用手册。
这里是手册,这里是手册,这里是手册,
这里是手册,这里是手册,这里是手册,
这里是手册,这里是手册,这里是手册,
这里是手册,这里是手册,这里是手册,
1、语音接听还是视频接听
在学习FreeSWITCH时 ,使用FreeSWITCH默认的配置,无论主叫发起的是语音呼叫,还是视频呼叫,被叫总是允许视频接听,即时视频接听后,也看不到主叫的画面。
如下图,主叫发起的是语音,但是被叫还是允许视频接听。
想要实现的功能是,主叫发起语音呼叫,被叫只能语音接听;主叫发起视频呼叫,则被叫允许音频和视频接听。
2、排查
了解了FreeSWITCH的编码协商功能后,可以有两种方法。
(1)第一种。修改outbound编码
只要把配置文件的outbound_codec_prefs的视频编码去掉就可以了。(inbound_codec_prefs需要有视频编码哦)
就是这个参数,可以在vars里修改,也可以在profiles文件里修改。
<X-PRE-PROCESS cmd="set"data="outbound_codec_prefs=PCMU,PCMA"/>
FreeSWITCH编码协商文档传送门:
https://developer.signalwire.com/freeswitch/FreeSWITCH-Explained/Codecs-and-Media/Codec-Negotiation_2883752
大概原因是:inbound_codec_prefs是和主叫进行编码协商的,outbound_codec_prefs是和被叫进行编码协商的。
如果主叫不带视频编码,inbound_codec_prefs带视频,编码协商后,最终A-leg也不带视频编码,和outbound_codec_prefs合并后(编码合并可参考这个参数media_mix_inbound_outbound_codecs),也不带视频编码,最终和B-leg协商时,也没有视频编码,最终只能语音接听。
反之,如果主叫带视频编码,inbound_codec_prefs带视频,编码协商后,最终A-leg也带视频编码,和outbound_codec_prefs合并后(编码合并可参考这个参数media_mix_inbound_outbound_codecs),也带视频编码,最终和B-leg协商时,也带视频编码,最终允许视频接听。
(2)第二种。使用disable-transcoding参数
<param name="disable-transcoding" value="true"/>
设置为disable-transcoding为true后,FreeSWITCH和A-leg协商完毕后,直接使用协商后的结果,和B-leg协商。也就是A-leg用什么编码,和B-leg协商也是什么编码。同样也能达到一样的效果。
但是这种方法,要求主叫和被叫终端支持的编码必须一样,否则编码协商失败,呼叫也就失败了。
在第一种方法中,因为A-leg和outbound编码进行和合并,所以大大减少了编码协商失败的机率,即时主叫双方支持的编码不一样,最终也有很大机率可以协商成功。
修改后,发起语音呼叫时,只允许语音接听;同理,发起视频呼叫时,允许语音和视频接听。
如果您也遇到同样的问题,可参考,如果文中里理解错误,可根据官方文档,重新理解。