系統環境
一、編譯服務器和加載模塊
二、下載編譯指定版本video_demo
三、配置verto.conf.xml
1.修改配置文件
2.重新啟動
四、MCU通話測試
1.如何使用video_demo
2.測試結果
五、MCU的通話原理及音頻/視頻/布局/管理員等參數配置
附錄
freeswitch微信交流群
系統環境
lsb_release -a
No LSB modules are available. Distributor ID: Ubuntu
Description: Ubuntu 22.10 Release: 22.10 Codename: kinetic
uname -a
Linux yqw-Lenovo-XiaoXinPro-13ARE-2020 6.2.0-37-generic
#38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
nvm --version
0.33.11
node -v
v10.16.3
npm -v
6.9.0
一、編譯服務器和加載模塊
首先需要運行FS,如何編譯FS,并添加MCU模塊,參考本專欄另一篇文章
:freeswitch編譯mod_av支持webrtc MCU通話
//運行FS服務器
sudo ./freeswitch -nc -nonat //如果想看日志不加后面兩個參數
//運行客戶端
sudo ./fs_cli
//加載模塊
load mod_av
load mod_verto
二、下載編譯指定版本video_demo
video-demo和Verto Communicator兩個demo https://github.com/freeswitch/verto-clien
這兩個demo也有自己的官方https://evoluxbr.github.io/verto-docs/tut/initializing-verto.html
git clone https://github.com/freeswitch/verto-client
git reset --hard 6d19d90dfdbf29005c9356823250692283acda63 //指定提交的版本,master變化比較快
verto-client/video_demo/js
make
三、配置verto.conf.xml
1.修改配置文件
sudo vim /usr/local/freeswitch/conf/autoload_configs/verto.conf.xml,和之間為新增的虛擬http服務器,只需要改動,為你的video_demo地址即可。
<profiles><profile name="default-v4"><param name="bind-local" value="$${local_ip_v4}:8081"/><param name="bind-local" value="$${local_ip_v4}:8082" secure="true"/><param name="force-register-domain" value="$${domain}"/><param name="secure-combined" value="$${certs_dir}/wss.pem"/><param name="secure-chain" value="$${certs_dir}/wss.pem"/><param name="userauth" value="true"/><!-- setting this to true will allow anyone to register even with no account so use with care --><param name="blind-reg" value="false"/><param name="mcast-ip" value="224.1.1.1"/><param name="mcast-port" value="1337"/><param name="rtp-ip" value="$${local_ip_v4}"/><param name="ext-rtp-ip" value="$${external_rtp_ip}"/><param name="local-network" value="localnet.auto"/><param name="outbound-codec-string" value="opus,h264,vp8"/><param name="inbound-codec-string" value="opus,h264,vp8"/><param name="apply-candidate-acl" value="localnet.auto"/><param name="apply-candidate-acl" value="wan_v4.auto"/><param name="apply-candidate-acl" value="rfc1918.auto"/><param name="apply-candidate-acl" value="any_v4.auto"/><param name="timer-name" value="soft"/><vhosts><vhost domain="localhost"><param name="alias" value="seven.local freeswitch.org"/><param name="root" value="/home/yqw/temp/FS/verto-client/video_demo"/><!-- <param name="script_root" value="/usr/local/freeswitch/scripts"/> --><param name="index" value="index.html"/>
<!--<param name="auth-realm" value="FreeSWITCH"/><param name="auth-user" value="freeswitch"/><param name="auth-pass" value="rocks"/>
--><rewrites><rule expression="^/api" value="/my_custom_api.lua"/><rule expression="^/channels" value="/rest.lua"/></rewrites></vhost> </vhosts></profile>
可以看到默認監聽的8082和8082端口,secure="true"說明是wss的,需要用websocket,如果改成false可能不太好用。https和wss都是加密,webrtc規定需要是安全性的媒體才能發送。
可以看到和之間添加了http的虛擬服務器,添加后,FS本身就變成了一個http服務器,那么它現在又支持websocket又支持http。
以上配置參考杜老師提交的FS官方WIKI
2.重新啟動
完成后需要殺死原來的服務器和客戶端,然后重新運行。或者服務器和客戶端的都執行reloadxml,重新加載配置。
四、MCU通話測試
完成后,用chrome打開https://yourIP:8082,這里需要訪問google的一些數據,所以網絡要通www.google.com才行。
注意不能使用127.0.0.1或者localhost,用ifconfig查看自己的ip。
然后在同一個瀏覽器啟動verto_communicator客戶端,兩者進行視頻會議
1.如何使用video_demo
點擊Call Extension
輸入3500,只有35開頭的才會撥入視頻會議
2.測試結果
video_demo客戶端
verto_communicator客戶端五、MCU的通話原理及音頻/視頻/布局/管理員等參數配置
FS把畫布橫向和縱向都分為360份,既適合16:9也適合4:3,然后把本地和遠端的視頻流貼到一個畫布上,本地和遠端看到的視頻一模一樣。所以以上你看到的本地的流,并不是來自本地直接渲染,而是來自服務器的編碼好的流。
關于如何設置畫布布局,如何改變分辨率,幀率,聲音,floor,布局,管理員等各種參數,以及如何設置這些默認值,參考本專欄另一篇文章:freeswitch webrtc MCU三個配置文件,及conference全命令解釋
附錄
verto_communicator 用安格瑞寫的
video_demo 用jequre寫的