828华为云征文|华为云Flexus云服务器docker部署srs6,协议可使用HLS协议
- 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧!
什么是华为云Flexus云服务器
- 华为云Flexus云服务是新一代开箱即用、体验跃级、面向中小企业和开发者打造的高品价比云服务产品。Flexus云服务器X实例是华为云Flexus云服务的一个产品
- Flexus云服务器X实例是新一代面向中小企业和开发者打造的柔性算力云服务器,可智能感知业务负载,适用于电商直播、企业建站、开发测试环境、游戏服务器、音视频服务等中低负载场景。
开始接触华为云Flexus云服务器X实例
-
获取华为云Flexus云服务器X实例后第一步就是先去华为云上重置服务器密码
-
重置完毕后用ssh工具登录华为云服务器,这里我用的是finalshell,也可以用其他工具登陆比如xshell或者Putty都可以
-
登录上去查看硬盘大小,可以看到是100g硬盘,硬盘总大小是正常的
root@flexusx-ebe8:~# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 1.2G 1.1M 1.2G 1% /run
/dev/vda1 99G 4.2G 90G 5% /
tmpfs 5.7G 0 5.7G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1.2G 4.0K 1.2G 1% /run/user/0
- 然后输入
ufw status
可以看到默认防火墙是关闭的,因此我们就不需要额外再去配置端口开放相关的配置,只要在华为云安全组配置端口开放就可以了
root@flexusx-ebe8:~# ufw status
Status: inactive
docker环境的安装
- 然后进行docker容器的安装,安装最新版本的docker
- 这里因为docker现在已经无法直接通过网络安装,所以我们通过离线安装的方式安装docker环境
- 从官网下载离线包
https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/
- 如图所示,把离线包传到服务器上,进行安装
dpkg -i *.deb
- 查看安装的docker版本
root@flexusx-ebe8:/home/docker# docker -v
Docker version 27.1.2, build d01f264
- 至此docker容器环境安装完毕
srs相关
什么是srs
- SRS的全称为Simple Realtime Server,是一个开源的(MIT协议)简单高效的实时视频服务器,支持RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH和GB28181等协议。 SRS媒体服务器和FFmpeg、OBS、VLC、 WebRTC等客户端配合使用,提供流的接收和分发的能力,是一个典型的发布 (推流)和订阅(播放)服务器模型。
什么是HLS
- HLS (HTTP Live Streaming)是Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u8的索引文件,TS媒体分片文件和key加密串文件。
- HLS对比webrtc,延迟比较大,约为5~10秒,但是优势在于播放流畅不卡顿,且加载完毕后可来回拖拉进度条
开始安装srs并配置HLS
- 先配置
CANDIDATE="127.0.0.1"
,这里配置为外网ip,也就是华为云提供的弹性公网ip - 然后用docker启动srs,使用配置文件为hls.conf
- 使用的版本为srs6的release版本
docker run -it --name=srs -d -p 1935:1935 -p 8080:8080 --restart=always ossrs/srs:6 ./objs/srs -c conf/hls.conf
-
输入
docker ps
查看容器运行状态root@flexusx-ebe8:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bfa8e8ea8551 ossrs/srs:6 "./objs/srs -c conf/…" 25 seconds ago Up 25 seconds 1985/tcp, 0.0.0.0:1935->1935/tcp, :::1935->1935/tcp, 5060/tcp, 8000/udp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 9000/tcp, 10080/udp srs
-
相比较webrtc来说,配置少了很多,当然也可以配置https,srs也提供https.hls.conf,都可以使用,因为hls不像webrtc强制要求使用https,这次我们就不使用https来启动
-
查看docker ps 可以看到容器正常运行着,这就代表着srs服务已经部署完毕了
配置Flexus云服务器X实例安全组
-
经过上面部署srs服务,这时候服务是已经部署完毕了,但是我们还没法通过外网进行访问,还需要对Flexus云服务器X安全组的配置进行修改
-
进入安全组的配置页面
-
新建安全组
-
这里我们开放1935,8080即可,而webrtc则需要开放更多的端口
-
然后加入新建的安全组
-
这样我们的实例的端口也就开放成功了
srs功能测试
srs服务器监控
-
部署完毕srs后,开始对srs进行功能测试
-
输入网址进行访问,
http://ip:8080/
-
服务器ip填弹性公网ip,点击连接到SRS,就可以看到服务器的运行状态与srs的运行状态,以及负载网速cpu磁盘等各种信息
使用HLS推流测试
- 进入srs播放器
- 我们使用FFMPEG进行推流
- linux环境使用如下sh脚本进行推流
for((;;)); do \
./objs/ffmpeg/bin/ffmpeg -re -i ./doc/source.flv \
-c copy \
-f flv rtmp://192.168.1.170/live/live200; \
sleep 1; \
done
- windows环境使用如下bat脚本进行推流
@echo off
:loop
.\ffmpeg.exe -re -i test.mp4 -vcodec h264 -c copy -f flv rtmp://192.168.1.170/live/live200
timeout /t 1
goto loop
- 然后进入SRS播放器播放HLS流
- 这里要注意的是播放地址的写法,是标准的播放HLS流的写法http://ip:8080/live/live200.m3u8
- 可以很清楚的看到有进度条,而且随着时间推移,进度条会不断增大,而且画面流畅清晰
- 至此srs-hls就部署完毕了