前言
给大家分享一下如何使用srs搭建视频直播平台,本章不需要你有太多的编程知识,也不需要任何Coding,只需要你有一台手机,一台电脑(电脑不能是win7/xp)即可,我们目标非常简单,拥有一个属于自己的流媒体服务器。
直播原理
如果有直播经验的同学应该非常清楚,开播需要下载一个工具叫obs,obs主要是负责推流,采集的内容可以是你的电脑手机屏幕,或者是摄像头的信息,这些信息会通过obs编码后推送到一个流媒体服务器地址,通常该服务器地址的协议是RTMP(RTMP是目前应用最广泛的直播协议),而观看直播的客户端称之为拉流,客户端拉取的流已经是经过流媒体服务器重新转码后的数据,如经过了编辑,压缩,鉴黄等等一些列的操作,由此我们可以简单总结出直播服务里面重要的3个组成部分,obs推流-流媒体服务器-分发拉流。
windows10/11 安装ubuntu
srs是支持几乎所有系统的,包括windows、liunx、mac,但由于本人电脑系统是windows10,所以目前只有两种选择,windows或linux(windows内置的wsl),首先说下windows,srs在官网有编译好的exe安装包,可以下载直接安装,但问题是如果我们要部署到云服务器,而云服务器环境通常不会是windows server,大概率还是linux,所以我们直接选择linux(wsl)作为开发环境。
当前系统信息(供参考):
1.在启用或关闭Windows功能上勾选”适用于Linux的Windows子系统”,重启电脑。
2.打开microsoft应用商店
搜索ubuntu,选择最新的22.04版本,再点击获取,安装完毕后打开,此时你就有拥有一个linux子系统了
第一次打开ubuntu系统时候会让你设置一个账号密码,这点和第一次设置windows是一样的,所以设置一个你能记住的账号密码即可,要注意,输入密码字符时候是不可见的,不会像表单那要出现*号字符,所以你尽管输入,完后按回车即可。
然后来尝试跑一些命令。
1.切换到根目录
cd /
2.查看系统下的文件列表
ls
如图:
安装SRS
官网推荐使用docker安装srs,但是由于WSL的ubuntu里面没有systemd,导致无法和原生ubuntu一样启动docker,所以我们直接采用源码安装的方式。
1.先把目录切换到mnt
下
cd /mnt
如果此时输入ls
命令,你会发现输出的是你windows母系统的本地硬盘列表,这样一来我们把项目文件放到mnt
下,就可以通过windows来操作文件了,简单快捷。
我这里是切换到d盘目录下,大家根据自己电脑的情况选择。
cd d
2.创建一个目录,用来存放子系统的文件
mkdir ubuntu
cd ubuntu
3.拉取srs
源码
git clone -b develop https://gitee.com/ossrs/srs.git
然后切换到srs/trunk
目录:
cd srs/trunk
4.安装gcc工具,依次执行以下命令
sudo apt update
sudo rm -rf /etc/apt/apt.conf.d/20snapd.conf
sudo apt install build-essential
5.安装依赖
sudo apt install -y unzip automake tclsh cmake pkg-config
6.开始编译
./configure
make
如果到这步全程没报错的话那就离成功不远了,记住在linux命令下,没报错就是正确。(如果有权限的错误提示,可以尝试切换到root下,再重新执行上面错误的命令)
# 没错误提示忽略此处
sudo -s
7.启动服务器
./objs/srs -c conf/srs.conf
检查SRS是否成功启动,可以打开 http://localhost:8080/ ,如果你能看到这样的界面,那就表示服务启动成功了,rtmp://localhost/live/livestream
是推流地址,接下来我们会用到。
推流工具
服务器搞定之后就可以开始推流了,如果想推送电脑画面或者电脑摄像头可以使用Open Broadcaster Software | OBS (obsproject.com),如果是推送手机摄像头,可以在对应的平台下载推流软件,安卓系统可以使用”易live”,iphone用户可以选择”易推流”,类似的软件有很多,大家自行下载,我这里使用的是”易推流”。
注意设置推流地址时候,需要把localhost改成本地ip地址,并且手机和电脑必须在同一局域网内,本机ip地址可以在ubuntu使用命令hostname -I
查看,也可以在windows的命令行输入ipconfig
查看。
以上是我本机的局域网ip地址。
设置好推流地址后点击进入直播,接着点击开始直播就会开始推流了。
观看直播
拉流也就是观看直播可以通过控制台进入直播列表。
点击视频流,预览便可以进入直播画面,
直播大约有3~5秒的直播延迟,这是rtmp
导致的,属于正常情况。
如果要直播流部署到其他站点,只需要把视频播放器的链接设置为上图的url即可。
保存录像
假设我们把这套系统作为监控系统部署的话,还需要把视频保存为本地录像,不然贼跑了都没证据,直播回放也是如此。
修改配置文件(如果你熟悉使用vim的话可以在linux下操作,这里我是切到window下修改),找到项目目录下的conf文件夹,以下是我的路径地址。
D:\ubuntu\srs\trunk\conf
用编辑器打开srs.conf
,在最后新增一个dvr
配置,然后保存
# dvr config
dvr {
enabled on;
dvr_path ./objs/nginx/html/[app]/[stream].[timestamp].mp4;
dvr_plan session;
}
以下是srs.conf
全部内容
# main config for srs.
# @see full.conf for detail config.
listen 1935;
max_connections 1000;
#srs_log_tank file;
#srs_log_file ./objs/srs.log;
daemon on;
http_api {
enabled on;
listen 1985;
}
http_server {
enabled on;
listen 8080;
dir ./objs/nginx/html;
}
rtc_server {
enabled on;
listen 8000; # UDP port
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#config-candidate
candidate $CANDIDATE;
}
vhost __defaultVhost__ {
hls {
enabled on;
}
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
}
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;
}
play{
gop_cache_max_frames 2500;
}
# dvr config
dvr {
enabled on;
dvr_path ./objs/nginx/html/[app]/[stream].[timestamp].mp4;
dvr_plan session;
}
}
接着在liunx下重启srs服务,重启前先切换到root权限
sudo -s
输入密码后执行重启命令,
./etc/init.d/srs reload
再去手机端重新直播推流,直播结束后就可以在D:\ubuntu\srs\trunk\objs\nginx\html\live
看到mp4录像文件了
最后
srs
是一个非常强大的流媒体服务器,srs
内置了很多api,可以获取直播间列表,鉴权等等,最新版本也提供了云服务,想了解更多信息可以查看srs官网,如果觉得有用,麻烦大家点个赞,谢谢。