前言
上一篇文章: 利用iperf3测试两个节点之间的网络性能 ,而影响应用并发有可能是其他方面的原因。直播一般是流量消耗大户,本篇文章分享部署rtmp服务的方法,以及如何进行压力测试。
服务部署
启动
# 获取镜像
docker pull alfg/nginx-rtmp
# 启动rtmp服务
docker run -it -d -v /data/rtmp:/opt/data --name nginx-rtmp -p 3008:1935 -p 8080:80 --rm alfg/nginx-rtmp
# 停止
docker stop nginx-rtmp
推流
# 安装ffmpeg
yum-config-manager --add-repo=https://negativo17.org/repos/epel-multimedia.repo
yum-config-manager --disable epel-multimedia
yum install -y --enablerepo=epel-multimedia ffmpeg ffmpeg-devel
# 验证
ffmpeg -version
# 找一段测试视频,mp4格式
test.mp4
# rtmp推流
# stream_loop -1 循环 -0 单次
# copy 编码复用
ffmpeg -re -stream_loop -1 -i test.mp4 -vcodec copy -acodec copy -f flv rtmp://127.0.0.1:3008/stream/test
# hls推流
# 服务已自动转换
#ffmpeg -re -stream_loop -1 -i test.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:3008/hls/test
测试
服务状态
http://IP:8080/stat
服务器状态
dstat
yum install -y dstat
dstat -cmdngy -N bond2 --bits
可用性测试
rtmp流播放
# 本地安装ffplay, 可以打开播放即可
ffplay rtmp://ip:3008/stream/test
hls流播放
#获取静态资源
wget https://cdn.jsdelivr.net/npm/hls.js@latest -O /data/rtmp/hls.js
#修改播放代码
docker exec -it nginx-rtmp sh
vi /www/static/player.html
<!DOCTYPE html>
<html>
<head>
<title>RTMP Stream Example</title>
<script src="hls.js"></script>
</head>
<body>
<video id="my-video" controls autoplay></video>
<script>
var params = new URLSearchParams(window.location.search);
var url = params.get('url');
if (Hls.isSupported()) {
var video = document.getElementById('my-video');
var hls = new Hls();
hls.loadSource(url);
hls.attachMedia(video);
hls.on(Hls.Events.MANIFEST_PARSED, function() {
video.play();
});
}
</script>
</body>
</html>
本地通过浏览器访问,可以播放视频
http://IP:8080/player.html
压力测试
# st-load 在centos8上编译失败了,也懒得排错了。直接起一个centos7的镜像吧。
docker pull centos:7.9.2009
docker run -d --name=centos7 --privileged centos:7.9.2009 /usr/sbin/init
docker exec -it centos7 /bin/bash
# https://github.com/rzrobert/st-load-master.git
tar xvf st-load-master.tgz
cd st-load-master/
./configure
make
# 支持包
yum -y install patch unzip make gcc gcc-c++ libstdc++-devel
# 执行压测,-c 后面是并发数
./objs/sb_rtmp_load -c 10 -r rtmp://ip:3008/stream/test
输入和输出带宽占比
经测试上游推流每路2M左右,不会随着客户端拉流的路数的增加而增加,下图为推流1路,拉流10路的带宽截图
评论 (0)