前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >centos7部署rtmp服务并进行压力测试

centos7部署rtmp服务并进行压力测试

作者头像
IT不难
发布2024-05-24 09:57:28
410
发布2024-05-24 09:57:28
举报
文章被收录于专栏:IT不难技术家园IT不难技术家园

前言

上一篇文章: 利用iperf3测试两个节点之间的网络性能 ,而影响应用并发有可能是其他方面的原因。直播一般是流量消耗大户,本篇文章分享部署rtmp服务的方法,以及如何进行压力测试。

服务部署

nginx-rtmp是打包好的rtmp镜像,在安装了docker的服务器上直接启动即可,非常方便。

启动

代码语言:javascript
复制
# 获取镜像
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

推流

代码语言:javascript
复制
# 安装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

代码语言:javascript
复制
yum install -y dstat
dstat  -cmdngy -N bond2 --bits

可用性测试

rtmp流播放

代码语言:javascript
复制
# 本地安装ffplay, 可以打开播放即可
ffplay  rtmp://ip:3008/stream/test

hls流播放

代码语言:javascript
复制
#获取静态资源
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
代码语言:javascript
复制
  RTMP Stream Example
  


  
  
    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();
      });
    }

本地通过浏览器访问,可以播放视频 http://IP:8080/player.html

压力测试

有钱人可以使用 阿里云性能测试 ,功能很强大,唯一缺点就是贵。本人尝试用了下,几十块没了。什么也没测出来。有可能是配置不对,总之懒得看了,玩不起。直接用st-load自己测吧。

代码语言:javascript
复制
# 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路的带宽截图

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年12月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 服务部署
    • 启动
      • 推流
      • 测试
        • 服务状态
          • 服务器状态
            • 可用性测试
              • 压力测试
                • 输入和输出带宽占比
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档