janus编译

janus编译

导出容器为tar

docker export -o janus_back.tar janus

导入容器镜像

docker import janus_back.tar janus_run

端口20000-21000

启动容器 需要加命令/bin/bash,否则无法启动

docker run -d -it -v /D/docker_linux/janus:/janus -p 8010:22 -p 8088:8088 -p 8089:8089 -p 7088:7088 -p 7889:7889 -p 8188:8188 -p 8989:8989 -p 7188:7188 -p 7989:7989 -p 20000-21000:20000-21000/udp --name janus_run janus_run /bin/bash

janus+nginx

docker run -d -it -v /D/docker_linux/janus:/janus -p 8080:80 -p 9090:443 -p 8010:22 -p 8088:8088 -p 8089:8089 -p 7088:7088 -p 7889:7889 -p 8188:8188 -p 8989:8989 -p 7188:7188 -p 7989:7989 -p 20000-21000:20000-21000/udp --name janus_run janus_run /bin/bash

docker环境搭建

1.更新

apt update
//安装常用工具:
apt install iputils-ping  net-tools vim git wget
安装 aptitu:
sudo  

2.使用ubuntu涉及时区问题

手动选 6 Asia    70 Shanghai
[Docker] 使用ubuntu涉及时区问题
RUN export DEBIAN_FRONTEND=noninteractive \
    && apt-get update \
    && apt-get install -y tzdata \
    && ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && dpkg-reconfigure --frontend noninteractive tzdata

ssh

1.安装

sudo apt install ssh

2.开启自启动、启动ssh服务

systemctl enable ssh
service ssh restart

3.遇到的问题:

root账号无法登录:
sudo vim /etc/ssh/sshd_config
//PermitRootLogin prohibit-password
RSAAuthentication yes
PubkeyAuthentication yes
PermitRootLogin yes

3.配置

ssh自动启动:
vim /root/.bashrc
尾部添加:
service ssh start 
设置ssh密码:
passwd root 123456

janus源码编译

依赖库安装:

sudo aptitude install libmicrohttpd-dev libjansson-dev \
    libssl-dev libsofia-sip-ua-dev libglib2.0-dev \
    libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \
    libconfig-dev pkg-config libtool automake

sudo aptitude install libsrtp-dev  //安装失败,需要单独安装
sudo aptitude install libnice-dev  //后期可能需要修改源码,改为源码安装
sudo apt install cmake meson gengetopt  
sudo aptitude install doxygen graphviz
sudo aptitude install libavcodec-dev libavformat-dev libswscale-dev libavutil-dev

插件选择与安装

janus 支持插件式功能安装,根据需求选择安装
安装插件如下:
libwebsockets(支持 WebSocket)
libsrtp 和 libusrsctp(音视频流传输控制和数据协议支持)
libmicrohttpd(支持 http/https)
Janus
nginx(提供 web 服务)

libnice
git clone https://gitlab.freedesktop.org/libnice/libnice
cd libnice
meson --prefix=/usr build && ninja -C build && sudo ninja -C build install
export PKG_CONFIG_PATH=/usr/lib64/pkgconfig

libsrtp
wget https://github.com/cisco/libsrtp/archive/v2.2.0.tar.gz
tar xfv v2.2.0.tar.gz
cd libsrtp-2.2.0
./configure --prefix=/usr --enable-openssl
make shared_library && sudo make install

usrsctp
git clone https://github.com/sctplab/usrsctp
cd usrsctp
./bootstrap
./configure --prefix=/usr --disable-programs --disable-inet --disable-inet6
make && sudo make install

libwebsockets
git clone https://github.com/warmcat/libwebsockets.git
cd libwebsockets
git checkout v3.2-stable 
mkdir build
cd build
cmake -DLWS_MAX_SMP=1 -DLWS_WITHOUT_EXTENSIONS=0 -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS="-fpic" ..
make && sudo make install

Janus
git clone https://github.com/meetecho/janus-gateway.git
git  checkout v0.10.4   //直接下载v1.1.0zip版本
sh autogen.sh
./configure --prefix=/opt/janus --enable-websockets --enable-post-processing --enable-docs --enable-rest --enable-data-channels
make && sudo make install

nginx
cd /etc/ld.so.conf.d  
touch libnice.conf
添加 /usr/lib64
立即生效 sudo ldconfig

生成签名证书

mkdir -p ~/cert    
cd ~/cert
CA私钥
/opt/janus/cert
openssl genrsa -out key.pem 2048
自签名证书
openssl req -new -x509 -key key.pem -out cert.pem -days 1095

配置 Nginx

#docker run -d -it  -v /D/docker_linux/nginx:/demo -p 8080:80 -p 9090:443 --name nginx  nginx
#docker run -d -it  -v /D/docker_linux/nginx:/demo -p 8080:80 -p 9090:443 --name nginx_run  nginx_run /bin/bash
docker run -d -it  -v /D/docker_linux/nginx:/demos -p 8080:80 -p 9090:443 --name nginx_run  ubuntu:20.04  
vim /etc/nginx/conf.d/default.conf
修改配置文件如下:
开启 HTTPS 功能
server {
    listen       443 ssl;
        server_name  localhost;
        ssl_certificate      /janus/cert/cert.pem;
        ssl_certificate_key  /janus/cert/key.pem;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        location / {
                root   /janus/demos;
                index  index.html index.htm;
        }
}

SFU服务器难在那呢?

1 单端口的问题:所有推拉流,DTLS和音视频流都用一个端口。

因为暴露多个端口不安全,而且多端口不好负载均衡。

用ice-ufrag、ice-pwd区分音视频的流。如果用ssrc,一般音视频ssrc不同。

2 集群:信令和媒体需要分离。

容错处理、负载均衡、级联。
  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值