828华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp

news2024/11/17 5:37:21

828华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp

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

什么是华为云Flexus X实例

  • 华为云Flexus X实例云服务是新一代开箱即用、体验跃级、面向中小企业和开发者打造的高品价比云服务产品。
  • 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等客户端配合使用,提供流的接收和分发的能力,是一个典型的发布 (推流)和订阅(播放)服务器模型。

开始安装srs

  • 先配置CANDIDATE="127.0.0.1",这里配置为外网ip,也就是华为云提供的弹性公网ip
  • 然后用docker启动srs
  • 使用的版本为srs6的release版本
docker run -it -d -p 1935:1935 -p 1985:1985 -p  8080:8080 -p 1990:1990 -p 8088:8088 --restart=always  --env CANDIDATE=$CANDIDATE -p 8000:8000/udp     ossrs/srs:6 ./objs/srs -c conf/https.docker.conf
  • 输入docker ps 查看容器运行状态
    在这里插入图片描述

修改配置文件以支持webrtc与rtmp

  • 但是这个版本启动后只支持webrtc但还不能与rtmp互相转换,这里我们就需要修改一下配置文件,让它也支持与rtmp相互转换

  • 输入docker ps获取容器id
    请添加图片描述

  • 然后输入docker exec -it 30d26105d002 /bin/bash进入容器,这里的容器id换成你刚才获取的id

root@30d26105d002:/usr/local/srs# ls
conf  etc  objs  usr
root@30d26105d002:/usr/local/srs# 
  • 进入容器后可以看到,默认的文件夹在/usr/local/srs中,我们进入conf文件夹cd conf

  • 可以看到有很多配置文件,里面也有我们刚才docker容器启动时指定的配置文件https.docker.conf
    在这里插入图片描述

  • 然后我们输入exit,退出容器,mkdir -p /usr/local/srs/conf创建目录,然后把容器内的配置文件copy出来,然后进入刚才创建好的文件夹cd /usr/local/srs/conf 然后执行docker cp 30d26105d002:/usr/local/srs/conf/https.docker.conf https.docker.conf,可以在本地获取我们需要的https.docker.conf文件,然后开始修改
    在这里插入图片描述

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 on;
        # @see https://ossrs.net/lts/zh-cn/docs/v4/doc/webrtc#rtc-to-rtmp
        rtc_to_rtmp on;
    }
}
  • 把两个off修改为on即可
  • 配置文件修改好后,我们还需要把文件放进去,这里我们把改好的配置文件映射到容器内部,来达到我们想要的效果

重新部署srs容器并启动

  • 之前部署的srs服务还启动着,我们需要先停止服务,重新起一个新的,docker stop 30d26105d002,然后docker rm 30d26105d002,停止容器,然后删除容器
  • 重新运行指令,并附上挂载的命令
docker run -it -d -v /usr/local/srs/conf/https.docker.conf:/usr/local/srs/conf/https.docker.conf -p 1935:1935 -p 1985:1985 -p  8080:8080 -p 1990:1990 -p 8088:8088 --restart=always  --env CANDIDATE=$CANDIDATE -p 8000:8000/udp     ossrs/srs:6 ./objs/srs -c conf/https.docker.conf

  • 查看docker ps 可以看到容器正常运行着,这就代表着srs服务已经部署完毕了

配置Flexus云服务器X实例安全组

  • 经过上面部署srs服务,这时候服务是已经部署完毕了,但是我们还没法通过外网进行访问,还需要对Flexus云服务器X安全组的配置进行修改

  • 进入安全组的配置页面
    在这里插入图片描述

  • 新建安全组
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 这里我们开放1985,1935,8080,8088,1990,8000,这些端口,其中8000一定是自定义udp协议,其他都是tcp,这点非常重要

  • 然后加入新建的安全组
    在这里插入图片描述

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

srs功能测试

srs服务器监控

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

  • 输入网址进行访问,https://ip:8088
    在这里插入图片描述

  • 点击SRS控制台,连接srs
    在这里插入图片描述

  • 服务器ip填弹性公网ip,然后端口填1990,点击连接到SRS,就可以看到服务器的运行状态与srs的运行状态,以及负载网速cpu磁盘等各种信息
    在这里插入图片描述

webrtc推拉流测试

  • 输入网址https://ossrs.net/srs.release/releases/app.html,选择实用工具中的webrtc播放器
    在这里插入图片描述

  • 推流配置,把端口改为1990,这是https的端口,然后再把地址复制到播流那边,就可以看到摄像头的画面了

  • 推流上去
    在这里插入图片描述

  • 拉流直播
    在这里插入图片描述

  • 这里我测了苹果手机去商店下载谷歌浏览器后,谷歌浏览器也可是可以播放的

rtmp推流

  • rtmp推流,我一般是使用ffmpeg,指令为ffmpeg -re -i test.mp4 -vcodec h264 -c copy -f flv rtmp://弹性公网ip:1935/live/live200,然后同样的可以用rtc播放器播放,这就是rtmp转webrtc的效果
    在这里插入图片描述

SRS性能优化

  • 对srs的优化,因为webrtc是使用的udp缓存,因此linux的udp缓存参数得增大,不然会因为本地udp缓存不够大,连本地上传的缓存都不够,导致掉帧。
# vi /etc/sysctl.conf
net.core.rmem_max=16777216
net.core.rmem_default=16777216
net.core.wmem_max=16777216
net.core.wmem_default=16777216

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2104352.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

六西格玛项目:从定义问题到控制成果,全程无忧——张驰咨询

什么是六西格玛项目 六西格玛项目是一种旨在通过改善企业质量流程管理,以“零缺陷”的完美商业追求,带动质量大幅提高、成本大幅度降低,最终实现企业财务成效的提升与企业竞争力的突破的管理策略。它由摩托罗拉公司的工程师比尔史密斯于1986…

文心一眼 4.0Turbo 免费领取5天体验卡

注:这个是官方的活动,目的在于用户推广,任何账号点击连接都可以领取,被分享者领取5天,分享者获得3天,上限320天。 官方活动跳转地址如下:​​​​​​点击这里 跳转后登录,完成一次…

浅析前端数据埋点监控:用户行为与性能分析的桥梁

在数字化时代,数据是企业决策的重要依据。前端作为用户与产品交互的第一线,其数据埋点监控不仅能够收集用户行为数据,帮助产品团队洞察用户需求,优化用户体验,还能分析性能数据,确保产品运行的流畅性。 简单…

LLM常见问题(思维链变体部分)

1. 为什么需要思维树 Tree of Thoughts(TOT)? 对于需要探索或预判战略的复杂任务来说,传统或简单的提示技巧是不够的。ToT 维护着一棵思维树,思维由连贯的语言序列表示,这个序列就是解决问题的中间步骤。使…

【计算机组成原理】你敢相信5.8+0.9=6.1这个等式居然成立!!!详细解读进制数之间的相互转换

进位计数制及其相互转换 导读一、进位计数法1.1 基数1.2 位权 二、不同进制数之间的相互转化2.1 转化方法2.2 任意进制转化成十进制2.3 十进制转化成任意进制2.4 二进制、八进制以及十六进制之间的相互转换2.4.1 二进制与八进制以及十六进制之间的关系2.4.2 二进制数与八进制数…

【C++】C++中的关键字:const、mutable、auto、new....

七、C中的关键字:const、mutable、auto、new、 本部分打算是尽量多的罗列出C中的关键字和一些花式操作。先总结一下我们之前讲过的:private、public、protect: 参考【C】类、静态、枚举、重载、多态、继承、重写、虚函数_静态与多态:重写、重载、模板-C…

如何使用PTK一键安装opengaussdb 5.0

1、关于PTK工具 MogDB数据库是云和恩墨基于openGauss开源数据库打造,安稳易用的企业级关系型数据库。 PTK是云和恩墨出品的一款工具,帮助用户更便捷地部署管理MogDB数据库。 1.1 使用场景 开发人员快速启动多个本地 MogDB 环境用户通过 PTK 快速安装…

(2)Django生产环境数据库的切换以及环境配置python-dotenv方案

简介 本文分享下个人目前在用的,DRF项目开发环境、生产环境数据库切换的方案。没做过什么大项目,可能实现的不是那么优雅。 主要思路就是通过python-dotenv库,编辑.env环境配置文件区分开发环境和生产环境,再使用数据库路由&…

IP 协议详解

一、认识 IP 地址与网络层的职责 网络层是OSI七层模型中的第三层,也是TCP/IP四层模型中的网络接入层。在这一层,数据包被封装并加上IP层的头部信息,以便在网络之间传输。网络层的主要功能包括路由选择、分段与重组、拥塞控制以及IP地址管理等…

深度学习--机器学习相关(2)

1.适 应 性 矩 估 计 适应性矩估计(Adaptive Moment Estimation,Adam)是一种可以代替传统的梯度下降 (SGD 和 MBGD) 的优化算法。Adam算法结合了适应性梯度算法和均方根传播的优点。 Momentum 在学习机器学习时是很可能遇到的,是动量的意思。动量不是速度和学…

智能提醒助理系列-AIGC模型如何对接公众号2-扣子

本系列文章记录“智能提醒助理”wx公众号 建设历程。 一、需求出发点 在公众号中对接上大模型。 二、实现路径分析 上次使用直接调用火山引擎大模型的方案:智能提醒助理系列-AIGC模型如何对接公众号 近期 跟朋友跟朋友交流的过程中发现,通过扣子制作…

一招制胜!掌握 Python 中pip的8个必备命令

在Python编程中,pip 是一个非常重要的工具。它是Python包管理器,帮助你安装、更新、删除和管理Python软件包。如果你想要轻松地使用第三方库(比如requests、numpy、pandas),就离不开pip。 什么是 pip? pip…

Midjourney提示词——黑神话悟空角色生成提示词!

应广大群友和粉丝要求,我们也来盘一盘最近大火的黑神话悟空的提示词。 这里给大家准备了一份关于AI绘画详细的资料包,扫描下方二维码皆可获取! 1号齐天大圣 The full-body portrait of the Monkey King in-game, clad in intricate war rob…

Java运行环境的下载、安装、配置与运行

一、实验目的及要求 目的:掌握如何下载java JDK软件包,如何设置Java程序的运行环境,如何编写与运行Java程序,了解Java概貌。 要求: 1、安装Java JDK软件包; 2、练习编写简单的Java Application程序并掌握…

2.5 SQL注入之文件读写

SQL注入之文件读写 文件读写注入的原理 就是利用文件的读写权限进行注入,它可以写入一句话木马,也可以读取系统文件的敏感信息。 文件读写注入的条件 高版本的MYSQL添加了一个新的特性secure_file_priv,该选项限制了mysql导出文件的权限 …

步进、闭环、交流伺服三类电机驱动方案对比

1、步进、闭环、交流伺服产品对比 2.4步进电机特点 低速力矩大,转矩会随着转速的提高而降低,一般在800rpm以上力矩下降加快,精度是步距角的3%~5%,整圈没有累积误差,两相混合步进电机精度为0.18;步进电机采…

黑神话悟空小黄龙怎么打 妖王小黄龙攻略

​黑神话悟空小黄龙是游戏中难度较高的BOSS之一,击败他可以解锁[龙]变身、解锁橙武[飞龙宝杖],如果想要获得这两个法宝却又不知道如何击败小黄龙的话,一起来看看下面这篇攻略吧。 一、BOSS位置 【盘丝岭】-【盘丝洞】-【堕龙壁】。 二、Boss…

深入探索Springboot2.x依赖注入Bean的CGLIB代理类

问题起源 笔者最近在做一个功能,使用了工厂模式/策略模式设计的,定义了一个接口,下面有多种实现并通过Component注解定义为Bean,在运行时根据不同的业务调用不同实现的Bean,所以需要在运行时动态获取Bean。因此&#…

Keil5如何生成静态库.lib文件

一、这是一个Keil5工程 二、我想把这个文件输出成一个.lib文件,里面有一个加法函数,其它工程想实现加法只需调用这个函数即可 三、因为我只需要输出这一个文件成.lib,所以我需要屏蔽其它文件 1、右键其它文件,点击这个 2、把这个…

欧元承压续跌,黄金市场波动待指引

欧元兑美元延续跌势,季节性因素加剧市场担忧 ,欧元/美元汇率继续徘徊在两周低点附近,美元的强势表现以及即将公布的关键经济数据共同施压欧元。市场分析指出,欧元在9月的历史表现普遍不佳,尤其是过去五年连续下跌的记录…