侧边栏壁纸
博主头像
慢行的骑兵博主等级

贪多嚼不烂,欲速则不达

  • 累计撰写 36 篇文章
  • 累计创建 27 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

使用SRS(Simple RTMP Server)搭建RTMP流媒体服务器

慢行的骑兵
2025-06-27 / 0 评论 / 0 点赞 / 12 阅读 / 971 字

一.环境准备

  • 阿里云服务器(或使用虚拟机)
  • 梯子(下载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

三.检查阿里云服务器安全组规则和防火墙

  • 安全组相关
    250627_rtmp服务器搭建2
  • 检查防火墙,执行命令:sudo firewall-cmd --list-ports | grep ‘1935’,信息如下
    1751002002940
  • 设置防火墙放行端口的命令:
# 放行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”;

七.总结

  • 细节很重要,比如:端口号被占用及其安全组和防火墙设置,安全组相对容易想到,但容易疏忽的是防火墙设置。
0

评论区