一.环境准备
- 阿里云服务器(或使用虚拟机)
- 梯子(下载github项目可能需要)
二.安装SRS流媒体服务器
2.1.获取SRS
develop
remotes/origin/1.0release
remotes/origin/2.0release
remotes/origin/3.0release
remotes/origin/4.0release
remotes/origin/5.0release
remotes/origin/6.0release
remotes/origin/HEAD -> origin/develop
remotes/origin/develop
remotes/origin/feature/gb28181
remotes/origin/feature/h265
remotes/origin/feature/simulcast
remotes/origin/fossa
remotes/origin/master
remotes/origin/min
remotes/origin/no-clang-format
- 继续执行(选择版本):git checkout -b dev_3.0 remotes/origin/3.0release
- 查看srs版本的命令:./objs/srs -v
- 执行命令:cd trunk
2.2.编译SRS
- 执行命令(可以选择分开执行两个命令):./configure && make
2.3.根据需求编写SRS配置⽂件
- 执行命令:vim conf/rtmp.conf,保留下方内容(1935是默认的端口,是否使用默认端口需要验证该端口是否有被使用过),其它的注释掉
listen 1935;
max_connections 1000;
vhost __defaultVhost__ {
}
2.4.启动SRS
- 执行命令:./objs/srs -c conf/rtmp.conf
- 这里可能会遇到端口被占用的情况,通过执行命令:lsof -i :1935,可以查看端口的使用情况,弹出类似下方的信息则表明端口被占用
srs 3448942 root 8u IPv4 84432925 0t0 TCP *:macromedia-fcs (LISTEN)
- 执行命令:./etc/init.d/srs status,查看是否已经启动了srs,若启动,则有以下信息:
SRS(pid 3448942) is running. [ OK ]
- 停止srs的命令:./etc/init.d/srs stop
三.检查阿里云服务器安全组规则和防火墙
- 安全组相关

- 检查防火墙,执行命令:sudo firewall-cmd --list-ports | grep ‘1935’,信息如下

- 设置防火墙放行端口的命令:
# 放行1935端口(TCP协议)
sudo firewall-cmd --add-port=1935/tcp --permanent
sudo firewall-cmd --reload
# 验证规则是否生效
sudo firewall-cmd --list-ports | grep '1935'
四.测试SRS流媒体服务器
- 个人测试环境:在安装了ffmpeg的windows电脑,有视频文件的情况下,在视频文件所在的目录打开cmd,执行命令:ffmpeg -re -i time.flv -vcodec copy -acodec copy -f flv -y rtmp://x.x.x.x/live/livestream,其中time.flv是视频文件,x.x.x.x是阿里云服务器的ip,live和livestream是可以自己定义的字符串。执行完成命令之后,在打开新的cmd窗口,执行命令:ffplay rtmp://x.x.x.x/live/livestream,若能正常播放则表示环境搭建成功,或者使用VLC播放器,通过点击“媒体—>打开网络串流”,将“ffplay rtmp://x.x.x.x/live/livestream”输入进行播放测试;
- 当然,推流方式不一定要使用ffmpeg的相关命令,也可以使⽤OBS开源推流软件OBS推流(使用比较简单,这里就不做详细补充了)
五.遇到的问题
- 执行“./objs/srs -c conf/rtmp.conf”时,出现报错(原因是防火墙已放行的端口列表中没有包含1935):
Connection to tcp://x.x.x.x:1935 failed: Error number -138 occurred
六.其它
- 若使用虚拟机,则需要设置桥接模式;
- 若不配置默认的1935端口,假设使用1936,那么对应的“rtmp://x.x.x.x/live/livestream”要改成“rtmp://x.x.x.x:1936/live/livestream”;
七.总结
- 细节很重要,比如:端口号被占用及其安全组和防火墙设置,安全组相对容易想到,但容易疏忽的是防火墙设置。
评论区