使用srs 4.0配置webrtc音视频通信

硅谷探秘者 Md webrtc,srs,音视频 1082 0 0

一、go语言环境搭建

srs4.0安装需要go语言环境,所以如果服务器没有配置过go语言环境的话,需要先配置go语言环境。

下载安装包

官网:https://golang.google.cn/dl/

下载和解析:

[root@localhost opt] cd /usr/local/
[root@localhost local] wget https://dl.google.com/go/go1.16.5.linux-amd64.tar.gz --no-check-certificate
[root@localhost local] tar -C /usr/local -xzf go1.16.5.linux-amd64.tar.gz

配置 GOROOT 和 PATH环境变量,在/etc/profile中配置。

vi /etc/profile

# 将环境变量添加到/etc/profile文件末尾。
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin:$GOBIN

使用 source /etc/profile 命令使配置文件生效

[root@localhost local] source /etc/profile 

查看安装是否成功

[root@localhost local] go version
go version go1.16.5 linux/amd64

二、srs源码下载编译

我把源码下载到了/opt/文件夹下

[root@VM-0-13-centos opt]# git clone -b 4.0release https://gitee.com/ossrs/srs.git

编译,注意需要切换到srs/trunk目录:

[root@VM-0-13-centos signaling]# cd /opt/srs/trunk
[root@VM-0-13-centos trunk]# ./configure
[root@VM-0-13-centos trunk]# make

编译信令服务器,信令服务在srs/trunk/3rdparty/signaling文件夹下

[root@VM-0-13-centos trunk]# cd ./3rdparty/signaling
[root@VM-0-13-centos signaling]# make

三、启动srs和信令服务

修改rtc配置文件

vi /opt/srs/trunk/conf/rtc.conf

# WebRTC streaming config for SRS.
# @see full.conf for detail config.

listen              1935;
max_connections     1000;
daemon              off;
srs_log_tank        file;
srs_log_file        /var/log/srs.log;

http_server {
    enabled         on;
    listen          8080;
    dir             ./objs/nginx/html;
}

http_api {
    enabled         on;
    listen          1985;
}
stats {
    network         0;
}
rtc_server {
    enabled on;
    listen 8000; # UDP port
    # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#config-candidate
    candidate demo.com;
}

vhost __defaultVhost__ {
    rtc {
        enabled     on;
        # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtmp-to-rtc
        rtmp_to_rtc off;
        # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtc-to-rtmp
        rtc_to_rtmp off;
    }
    http_remux {
        enabled     on;
        mount       [vhost]/[app]/[stream].flv;
    }
}

主要修改的配置如下:

  • 修改 srs_log_tank,日志输出方式,原来是console,改成输出到文件file

  • 添加 srs_log_file,配置日志文件路径值 /var/log/srs.log

  • 修改 candidate,改成服务端ip或域名

启动srs服务,路径/opt/srs/trunk

[root@VM-0-13-centos trunk]# ./objs/srs -c ./conf/rtc.conf &

默认端口是:1985

启动信令服务:

[root@VM-0-13-centos trunk]# nohup ./3rdparty/signaling/objs/signaling > /var/log/signaling.log & disown 

默认端口是:1989

三、配置nginx代理

nginx安装

# 检查和安装nginx依赖
[root@localhost local]# yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
# 下载nginx
[root@localhost local]# wget http://nginx.org/download/nginx-1.13.7.tar.gz
# 解压并进入目录
[root@localhost local] tar -zxvf nginx-1.13.7.tar.gz
[root@localhost nginx-1.13.7] cd nginx-1.13.7/
# 创建nginx安装目录
[root@localhost nginx-1.13.7] mkdir /usr/local/nginx
# 配置,注意要配置安装ssl模块
[root@localhost nginx-1.13.7] ./configure --prefix=/usr/local/nginx/ --pid-path=/var/run/nginx.pid --with-http_ssl_module
# 编译和安装
[root@localhost nginx-1.13.7] make && make install
[root@localhost nginx-1.13.7] test -d
# 启动nginx 
[root@localhost nginx-1.13.7] /usr/local/nginx/sbin/nginx

生成ssl证书

具体说明参考:https://www.cnblogs.com/pcx105/p/15434332.html

openssl genrsa -des3 -out server.key 2048  # 需要输入两次密码,至少四位
openssl rsa -in server.key -out server.key  # 需要输入密码
openssl req -new -x509 -key server.key -out ca.crt -days 3650
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
cat server.key server.crt > server.pem

修改nginx配置文件

server {
        listen 80;
        ## 配置https
        listen 443 ssl;  
        ## 配置域名
        server_name www.demo.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        ## 配置证书 
        ssl_certificate    /usr/local/nginx/conf/ssl/server.pem;
        ssl_certificate_key    /usr/local/nginx/conf/ssl/server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        ssl_session_timeout 10m;

        ## srs提供的demo文件路径
        location / {
                root /opt/srs/trunk/objs/nginx/html/;
        }

        ## 配置信令服务地址
        location /sig {
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_read_timeout 3600s;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://127.0.0.1:1989/sig;
        }

        ## 配置rtc服务
        location /rtc {
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "Upgrade";
                proxy_pass http://127.0.0.1:1985;
        }


        error_page   500 502 503 504  /50x.html;

        location = /50x.html {
            root   html;
        }

}

rtc服务端口是8000/udp,服务器需要放开该端口。

firewall-cmd --zone=public --add-port=8000/udp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload

因为webrtc必须在https、或localhost环境下才能访问,所以外网访问需要配置ssl,如果是在外网环境搭建,那么证书可以去阿里云购买,或申请免费的,服务都启动完成之后直接访问域名即可访问webrtc的测试页面。

如果是在vm虚拟机上搭建的测试环境,则需要生成证书,证书生成完成后,在nginx上配置即可

四、测试

访问测试页面:

https://192.168.127.128/

image

点击进入srs播放器

推流

image

拉流

image


评论区
请写下您的评论...
暂无评论...
猜你喜欢
official 749 [TOC]一、pom文件添加依赖dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.1.4/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-j
xxl-job 1405 ):负责管理调度息,按照调度发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可性和稳定性,同时调度系统性能不再受限于任务模块;支持可化、简单且动态的管理调度息,包括任务新建,更新
框架 3534 1.官网下载压缩文件http://maven.apache.org/download.cgi解压找一个目录解压,本文解压到f盘根目录下2.修改本地仓库settings标签下加入
official 956 强的抗干扰能力,其谱类似千白噪声,不易被敌人发现。随着技术的进步,CDMA设备的价格和体积都大幅度下降,因而现在已广泛使在民的移动中,特别是在无线局域网中。采CDMA可提高的话质量和
linux系统 2306 Command参数和任何相关的Arg参数指定的命令,忽略所有挂断(SIGHUP)号。在注销后使nohup命令运行后台中的程序。要运行后台中的nohup命令,添加&(表示”and”的符号)到命令的尾部。
搜索 580 : nginxserver{ listen443ssl; server_nametr.test.com; ssl_certificateD:/tmp/ssl/server.crt
算法基础 1653 前端项目正式发布时一般需要混淆压缩js、css文件等,一方面压缩能够使文件体积更小,更多的节约网络io资源,另一方面能避免被人读懂你的代码!!!!!!工具可以使uglifyjs2。安装过npm安
spring/springmvc 2704 springMVC多图管理器在springmvc的文件中如下:!--多图管理器--!--jsp图管理器1--beanclass
归档
2018-11  12 2018-12  33 2019-01  28 2019-02  28 2019-03  32 2019-04  27 2019-05  33 2019-06  6 2019-07  12 2019-08  12 2019-09  21 2019-10  8 2019-11  15 2019-12  25 2020-01  9 2020-02  5 2020-03  16 2020-04  4 2020-06  1 2020-07  7 2020-08  13 2020-09  9 2020-10  5 2020-12  3 2021-01  1 2021-02  5 2021-03  7 2021-04  4 2021-05  4 2021-06  1 2021-07  7 2021-08  2 2021-09  8 2021-10  9 2021-11  16 2021-12  14 2022-01  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。