freeswitch webrtc video_demo客戶端進行MCU的視頻會議

系統環境
一、編譯服務器和加載模塊
二、下載編譯指定版本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寫的

FS是音視頻必備,但即使從業數年,它似乎依然有無窮的秘密,感興趣添加筆者微信:YQW1163720468,加入FS微信群討論。但記得備注:FS愛好者


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/211825.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211825.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211825.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MyBatis處理映射關系

在Mybatis實現數據處理過程中&#xff0c;字段名符合數據庫的規則&#xff0c;屬性一般為駝峰規則&#xff0c;因此字段名和屬性名通常不一致&#xff0c;此時可以通過以下兩種方式對數據庫字段進行映射處理&#xff1a; 為字段起別名&#xff0c;保證和實體類中的屬性名一致在…

lv11 嵌入式開發 IIC(下) 20

目錄 1 Exynos4412下IIC控制器介紹 1.1 總覽 1.2 特征 1.3 工作框圖 1.4 其他內容介紹 1.5 四種工作模式寄存器流程 2 IIC寄存器詳解 2.1 概述 2.2 控制寄存器 2.3 狀態寄存器 2.4 地址寄存器 2.5 數據寄存器 2.6 其他寄存器 3 MPU06050 3.1 簡介 3.2 MPU6050主…

HJ103 Redraiment的走法

題目&#xff1a; HJ103 Redraiment的走法 題解&#xff1a; dfs 暴力搜索 枚舉數組元素&#xff0c;作為起點如果后續節點大于當前節點&#xff0c;繼續向后搜索記錄每個起點的結果&#xff0c;求出最大值 public int getLongestSub(int[] arr) {int max 0;for (int i 0…

data_loader返回的每個batch的數據大小是怎么計算得到的?

data_loader是一個通用的術語&#xff0c;用于表示數據加載器或數據批次生成器。它是在機器學習和深度學習中常用的一個概念。 一、data loader 數據加載器&#xff08;data loader&#xff09;是一個用于加載和處理數據集的工具&#xff0c;它可以將數據集劃分為小批次&#…

提示(Prompt)工程中提示詞的開發優化基礎概念學習總結

本文對學習過程進行總結&#xff0c;僅對基本思路進行說明&#xff0c;結果在不同的模型上會有差異。 提示與提示工程 提示&#xff1a;指的是向大語言模型輸入的特定短語或文本&#xff0c;用于引導模型產生特定的輸出&#xff0c;以便模型能夠生成符合用戶需求的回應。 提示…

內存學習——堆(heap)

目錄 一、概念二、自定義malloc函數三、Debug運行四、heap_4簡單分析4.1 heap管理鏈表結構體4.2 堆初始化4.3 malloc使用4.4 free使用 一、概念 內存分為堆和棧兩部分&#xff1a; 棧&#xff08;Stack&#xff09;是一種后進先出&#xff08;LIFO&#xff09;的數據結構&…

AVFormatContext封裝層:理論與實戰

文章目錄 前言一、封裝格式簡介1、FFmpeg 中的封裝格式2、查看 FFmpeg 支持的封裝格式 二、API 介紹三、 實戰 1&#xff1a;解封裝1、原理講解2、示例源碼 13、運行結果 14、示例源碼 25、運行結果 2 四、 實戰 2&#xff1a;轉封裝1、原理講解2、示例源碼3、運行結果 前言 A…

文章解讀與仿真程序復現思路——電力系統自動化EI\CSCD\北大核心《考慮電力-交通交互的配電網故障下電動汽車充電演化特性》

這個標題涉及到電力系統、交通系統和電動汽車充電的復雜主題。讓我們逐步解讀&#xff1a; 考慮電力-交通交互的配電網故障&#xff1a; 電力-交通交互&#xff1a; 指的是電力系統和交通系統之間相互影響、相互關聯的關系。這可能涉及到電力需求對交通流量的影響&#xff0c;反…

回溯算法之N皇后

一 什么是回溯算法 回溯算法&#xff08;Backtracking Algorithm&#xff09;是一種用于解決組合優化問題的算法&#xff0c;它通過逐步構建候選解并進行驗證&#xff0c;以尋找所有滿足特定條件的解。回溯算法通常應用于在給定約束條件下枚舉所有可能解的問題&#xff0c;如…

Git—文件添加查看刪除修改

目錄 1.添加文件—場景一 2.查看.git文件 3.添加文件—場景三 4.修改文件 5.版本回退 6.撤銷修改 7.刪除文件 1.添加文件—場景一 在包含.git的目錄下新建?個ReadMe文件&#xff0c;我們可以使用 git add 命令可以將文件添加到暫存 區&#xff1a; ●添加一個或多個文…

Matlab數學建模算法之小波神經網絡詳解

&#x1f517; 運行環境&#xff1a;Matlab &#x1f6a9; 撰寫作者&#xff1a;左手の明天 &#x1f947; 精選專欄&#xff1a;《python》 &#x1f525; 推薦專欄&#xff1a;《算法研究》 &#x1f510;#### 防偽水印——左手の明天 ####&#x1f510; &#x1f497; 大家…

vue的屬性

key 預期&#xff1a;number | string | boolean (2.4.2 新增) | symbol (2.5.12 新增) key 的特殊 attribute 主要用在 Vue 的虛擬 DOM 算法&#xff0c;在新舊 nodes 對比時辨識 VNodes。如果不使用 key&#xff0c;Vue 會使用一種最大限度減少動態元素并且盡可能的嘗試就地…

2022藍橋杯c組求和

題目名字 求和 題目鏈接 題意 輸入的每個數都要兩兩相乘&#xff0c;然后再加起來&#xff0c;求最后總和&#xff1b; 思路 每個數乘這個數的前綴和即可 算法一&#xff1a;前綴和 實現步驟 先把前綴和寫出來再寫for循環每個數都乘以自己的前綴和&#xff1b; 實現步驟 直接…

存儲成本降71%,怪獸充電歷史庫遷移OceanBase

怪獸充電作為共享充電寶第一股&#xff0c;業務增長迅速&#xff0c;以至于業務架構不停地增加組件。在驗證 OceanBase 可以簡化架構并帶來更大的業務價值后&#xff0c;首次嘗試在歷史庫中使用 OceanBase 替代 MySQL&#xff0c;存儲成本降低 71%。本文為怪獸充電運維架構部王…

Docker 入門

Docker 入門 基礎 不同操作系統下其安裝包、運行環境是都不相同的&#xff01;如果是手動安裝&#xff0c;必須手動解決安裝包不同、環境不同的、配置不同的問題 而使用Docker&#xff0c;這些完全不用考慮。就是因為Docker會自動搜索并下載MySQL。注意&#xff1a;這里下載…

【C++】輸入輸出流 ⑥ ( cout 標準輸出流對象 | cout 常用 api 簡介 | cout.put(char c) 函數 )

文章目錄 一、cout 標準輸出流對象1、cout 標準輸出流對象簡介2、cout 常用 api 簡介 二、cout.put(char c) 函數1、cout.put(char c) 函數 簡介2、代碼示例 - cout.put(char c) 函數 一、cout 標準輸出流對象 1、cout 標準輸出流對象簡介 cout 是 標準輸出流 對象 , 是 ostrea…

端口被占用 --- 解決方案

問題描述 加速服務啟動失敗&#xff0c;443端口被magentproc(1576)占用。請關掉占用443端口的程序或者嘗試使用系統代理模式。 問題解決 按下 win R 打開 輸入cmd 輸入命令 netstat -ano | findstr 443 找到 0.0.0.0:443 對應的端口 (1576) 按下 ctrl shift esc, 打開任務管…

綜述 2023-IEEE-TCBB:生物序列聚類方法比較

Wei, Ze-Gang, et al. "Comparison of methods for biological sequence clustering." IEEE/ACM Transactions on Computational Biology and Bioinformatics (2023). https://ieeexplore.ieee.org/document/10066180 被引次數&#xff1a;1&#xff1b;研究背景&am…

力扣題:數字與字符串間轉換-12.13

力扣題-12.13 [力扣刷題攻略] Re&#xff1a;從零開始的力扣刷題生活 力扣題1&#xff1a;442. 數組中重復的數據 解題思想&#xff1a;直接相除即可 class Solution(object):def optimalDivision(self, nums):""":type nums: List[int]:rtype: str"&qu…

Transformer 簡介

Transformer 是 Google 在 2017 年底發表的論文 Attention Is All You Need 中所提出的 seq2seq 模型。Transformer 模型的核心是 Self-Attention 機制&#xff0c;能夠處理輸入序列中的每個元素&#xff0c;并能計算其與序列中其他元素的交互關系的方法&#xff0c;從而能夠更…