使用srs 4.0配置webrtc音视频通信
一、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上配置即可
四、测试
访问测试页面:
点击进入srs播放器
推流
拉流
评论区
请写下您的评论...
猜你喜欢
official
889
[TOC]一、pom文件添加依赖dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.1.4/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-j
blog
xxl-job部署和使用
xxl-job
1740
):负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块;支持可视化、简单且动态的管理调度信息,包括任务新建,更新
blog
maven安装配置和使用
框架
3732
1.官网下载压缩文件http://maven.apache.org/download.cgi解压找一个目录解压,本文解压到f盘根目录下2.修改本地仓库配置settings标签下加入
ofc
计算机网络-信道复用技术
official
1303
强的抗干扰能力,其频谱类似千白噪声,不易被敌人发现。随着技术的进步,CDMA设备的价格和体积都大幅度下降,因而现在已广泛使用在民用的移动通信中,特别是在无线局域网中。采用CDMA可提高通信的话音质量和
blog
linux nohup命令使用
linux系统
2575
Command参数和任何相关的Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用nohup命令运行后台中的程序。要运行后台中的nohup命令,添加&(表示”and”的符号)到命令的尾部。
blog
使用openssl生成crt证书
搜索
905
:
nginx配置server{
listen443ssl;
server_nametr.test.com;
ssl_certificateD:/tmp/ssl/server.crt
算法基础
2007
前端项目正式发布时一般需要混淆压缩js、css文件等,一方面压缩能够使文件体积更小,更多的节约网络io资源,另一方面能避免被人读懂你的代码!!!!!!工具可以使用uglifyjs2。安装通过npm安
blog
springMVC多视图管理器配置
spring/springmvc
2839
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
2024-08
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
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。