運行kurento官網的helloworld示例的踩坑記

前言

說說遇到的困難。第一個,kurento 官網提供了豐富的文檔,例如入門引導、安裝引導、使用示例等等,可以說很友好了。但是,官方文檔都是英文的,對於我這種英語不好的,閱讀起來就很喫力了。(最終使用 google 翻譯和自己的一點詞彙量,使用好幾個小時才艱難的看懂了一些)。第二個,要使用kms(kurento media server) 流媒體服務器,需要在 ubuntu 上安裝 kms、turn 服務器(我是在阿里雲服務器上安裝的),自己電腦要運行 helloworld 示例代碼。安裝配置步驟過多,再加上第一次接觸 kurento,導致中間遇到許多問題,花費了很多時間。

安裝 kms

按照 kms安裝嚮導,我們有三種方式進行 kms 的安裝。

  1. 在 Amazon Web Services (AWS) 上安裝
  2. docker安裝
  3. 本地安裝,支持 Ubuntu 16.04 (Xenial) and Ubuntu 18.04 (Bionic) (64-bits only)

我做測試,圖方便就用 docker 安裝了。另外說一下,我用的是阿里雲服務器安裝的,服務器系統是 ubuntu16.04。

# docker 安裝 kms 命令
docker run --name kms -d -p 8888:8888     kurento/kurento-media-server

Docker安裝教程,請查看docker官網安裝嚮導

按照 STUN/TURN服務安裝(for Kurento Media Server) 的指導,安裝 turn 服務器。

如果您在NAT環境(即任何雲提供商)中安裝Kurento,您需要在/etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini中提供STUN服務器配置。 除此之外,您將必須打開您的安全組中的所有UDP端口,因爲STUN將使用從整個0-65535範圍可用的任何端口。
下列端口應該在防火牆中打開:

  • 3478 TCP & UDP
  • 49152 - 65535 UDP: 根據RFC 5766,這些是TURN服務器將用於交換媒體的端口。 可以使用turnserver中的–max-port和–min-port選項更改這些端口。
    雖然RFC指定TURN使用的端口,但如果使用STUN,則需要打開所有UDP端口,因爲這些端口不受約束。

安裝 turn 服務器

apt update
apt install coturn

 安裝軟件包後,您需要修改/etc/init.d/coturn中的啓動腳本。
 
將外部和本地IP添加到啓動腳本中:
EXTERNAL_IP=外網地址
LOCAL_IP=內網地址

啓動腳本中修改 DAEMON_ARGS 變量,通過 DAEMON_ARGS 變量來修改考慮在內的 IPs ,以及長期用戶和密碼憑據(在此情況下爲 kurento:kurento ,但可能不同),realm 和其他一些選項:
DAEMON_ARGS="-c /etc/turnserver.conf -f -o -a -v -r kurento.org -u kurento:kurento --no-stdout-log --external-ip $EXTERNAL_IP/$LOCAL_IP"

然後讓我們啓用turnserver作爲自動服務守護程序運行。 爲此,打開文件/etc/default/coturn並取消註釋鍵:
TURNSERVER_ENABLED=1

複製DTLS、TLS支持的證書文件:
cp /usr/share/coturn/examples/etc/turn_server_cert.pem /etc/turn_server_cert.pem
cp /usr/share/coturn/examples/etc/turn_server_pkey.pem /etc/turn_server_pkey.pem

現在,你要告訴 KMS 服務器 TURN 已經安裝。爲此,修改 /etc/kurento/modules/kurento/ WebRtcEndpoint.conf.ini文件中的 turnurl 鍵值:
turnURL=kurento:kurento@<public-ip>:3478
stunServerAddress=<public-ip>
stunServerPort=3478

修改docker運行的kms配置文件方法
1.複製容器中的 配置文件到 宿主機中
docker cp  kms:/etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini  ~/WebRtcEndpoint.conf.ini
2.修改配置文件
vim ~/WebRtcEndpoint.conf.ini
3.宿主機配置文件 複製到 kms容器中
 docker cp ~/WebRtcEndpoint.conf.ini kms:/etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini
 4.重啓 kms 容器
 docker restart kms

最後要做的是啓動 coturn 服務器和媒體服務器:
sudo service coturn start 

#我們使用 docker 啓動了 kms 容器,不是本地安裝, 下面這一步就不需要了
sudo service kurento-media-server-6.0 restart

使用此測試應用程序檢查您的安裝

運行 hello world 示例

按照 Kurento Java Tutorial - Hello World文檔,運行 hello world 示例。

  1. 安裝 Kurento Media Server: 安裝嚮導.
  2. git bash 中運行這些命令:
git clone https://github.com/Kurento/kurento-tutorial-java.git
cd kurento-tutorial-java/kurento-hello-world
git checkout 6.13.0
# 這一步不需要,我們用idea來運行 mvn -U clean spring-boot:run -Dkms.url=ws://localhost:8888/kurento

用 idea 打開 kurento-hello-world 項目,下載 maven 依賴完成後,在 run configurations 中添加 new configurations。
選擇 maven , command line 中輸入:
spring-boot:run -Dkms.url=ws://<public-ip>:8888/kurento  # 這裏的 public-ip 添你安裝 kms 的服務器公網 ip 地址

打開 瀏覽器,訪問 https://localhost:8443/
點擊 Start 按鈕,就可以 查看 demo 效果了。

運行 hello world 示例時,會遇到 使用websocket傳輸內容過長的問題
解決方法,參考 springboot 框架中使用 websocket 傳輸內容過長的問題解決

//項目中創建 package org.kurento.tutorial.helloworld.config
//config 包下創建類
package org.kurento.tutorial.helloworld.config;

/**
 * @Auther: starsky1
 * @Date: 2020/3/27/0027 19:03
 * @Description: todo
 */
@Configuration
//@ComponentScan
//@EnableAutoConfiguration
public class WebAppRootContext implements ServletContextInitializer {
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        System.out.println("org.apache.tomcat.websocket.textBufferSize");
        servletContext.addListener(WebAppRootListener.class);
        servletContext.setInitParameter("org.apache.tomcat.websocket.textBufferSize","1024000");
    }

}
//此問題即可解決

run configurations配置
demo 運行效果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章