· 华为云最近正在举办 828 B2B 企业节,Flexus X 实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建 MySQL、Redis、Nginx 等服务的需求,一定不要错过这个机会。赶紧去看看吧!

什么是华为云 Flexus 云服务器

· 华为云 Flexus 云服务是新一代开箱即用、体验跃级、面向中小企业和开发者打造的高品价比云服务产品。Flexus 云服务器 X 实例是华为云 Flexus 云服务的一个产品

· Flexus 云服务器 X 实例是新一代面向中小企业和开发者打造的柔性算力云服务器,可智能感知业务负载,适用于电商直播、企业建站、开发测试环境、游戏服务器、音视频服务等中低负载场景。

开始接触华为云 Flexus 云服务器 X 实例

· 获取华为云 Flexus 云服务器 X 实例后第一步就是先去华为云上重置服务器密码

华为云 Flexus 云服务器 docker 部署 srs6,协议可使用 HLS 协议_docker


· 重置完毕后用 ssh 工具登录华为云服务器,这里我用的是 finalshell,也可以用其他工具登陆比如 xshell 或者 Putty 都可以

华为云 Flexus 云服务器 docker 部署 srs6,协议可使用 HLS 协议_云服务_02


· 登录上去查看硬盘大小,可以看到是 100g 硬盘,硬盘总大小是正常的

root@flexusx-ebe8:~# df -hFilesystem      Size  Used Avail Use% Mounted ontmpfs           1.2G  1.1M  1.2G   1% /run/dev/vda1        99G  4.2G   90G   5% /tmpfs           5.7G     0  5.7G   0% /dev/shmtmpfs           5.0M     0  5.0M   0% /run/locktmpfs           1.2G  4.0K  1.2G   1% /run/user/0

· 然后输入 ufw status 可以看到默认防火墙是关闭的,因此我们就不需要额外再去配置端口开放相关的配置,只要在华为云安全组配置端口开放就可以了

root@flexusx-ebe8:~# ufw statusStatus: inactive

docker 环境的安装

· 然后进行 docker 容器的安装,安装最新版本的 docker

· 这里因为 docker 现在已经无法直接通过网络安装,所以我们通过离线安装的方式安装 docker 环境

· 从官网下载离线包

https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/


华为云 Flexus 云服务器 docker 部署 srs6,协议可使用 HLS 协议_云服务_03

 

· 如图所示,把离线包传到服务器上,进行安装

dpkg -i *.deb

· 查看安装的 docker 版本

root@flexusx-ebe8:/home/docker# docker -vDocker 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 psCONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS          PORTS                                                                                                                                     NAMESbfa8e8ea8551   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 安全组的配置进行修改

· 进入安全组的配置页面

华为云 Flexus 云服务器 docker 部署 srs6,协议可使用 HLS 协议_服务器_04


· 新建安全组

华为云 Flexus 云服务器 docker 部署 srs6,协议可使用 HLS 协议_docker_05

 

华为云 Flexus 云服务器 docker 部署 srs6,协议可使用 HLS 协议_服务器_06


华为云 Flexus 云服务器 docker 部署 srs6,协议可使用 HLS 协议_docker_07


· 这里我们开放 1935,8080 即可,而 webrtc 则需要开放更多的端口

· 然后加入新建的安全组

华为云 Flexus 云服务器 docker 部署 srs6,协议可使用 HLS 协议_服务器_08


· 这样我们的实例的端口也就开放成功了

srs 功能测试

srs 服务器监控

· 部署完毕 srs 后,开始对 srs 进行功能测试

· 输入网址进行访问,http://ip:8080/ 

华为云 Flexus 云服务器 docker 部署 srs6,协议可使用 HLS 协议_云服务_09


· 服务器 ip 填弹性公网 ip,点击连接到 SRS,就可以看到服务器的运行状态与 srs 的运行状态,以及负载网速 cpu 磁盘等各种信息

华为云 Flexus 云服务器 docker 部署 srs6,协议可使用 HLS 协议_云服务_10


使用 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/live200timeout /t 1goto loop


华为云 Flexus 云服务器 docker 部署 srs6,协议可使用 HLS 协议_docker_11

 

· 然后进入 SRS 播放器播放 HLS 流

· 这里要注意的是播放地址的写法,是标准的播放 HLS 流的写法 http://ip:8080/live/live200.m3u8


华为云 Flexus 云服务器 docker 部署 srs6,协议可使用 HLS 协议_服务器_12

 

· 可以很清楚的看到有进度条,而且随着时间推移,进度条会不断增大,而且画面流畅清晰

· 至此 srs-hls 就部署完毕了

欢迎大家一起加入华为云!


华为云 Flexus 云服务器 docker 部署 srs6,协议可使用 HLS 协议_云服务_13