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

news2024/12/24 20:40:23

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

什么是华为云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/2091571.html

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

相关文章

MES系统如何实现产品追溯功能

MES系统(Manufacturing Execution System,制造执行系统)的产品追溯功能是现代制造业中不可或缺的一部分,它通过记录和分析生产过程中产生的数据,实现了对产品、原材料、设备等信息的追踪和溯源。以下是对MES系统产品追…

网络安全的历史

如今,网络安全几乎成为各大公司和利益相关者关注的焦点。但在早期,网络安全的概念非常模糊。 直到多年以后,由于网络攻击和危险实体威胁的频繁发生,网络安全的发展才受到重视。这些措施的发展成为了网络安全的演变。 网络安全起…

基于django框架下个人着装助理系统/基于python的服装服装搭配系统

摘要 随着科学技术的发展和人们生活质量的改善,人们对于着装的要求也会越来越高。为了能够更好的管理着装,个人着装助理系统被开发处理方便人们对着装的管理。 本个人着装助理系统采用编程语言Python,开源框架Django实现系统的架构&#xff…

分类任务实现模型集成代码模版

分类任务实现模型(投票式)集成代码模版 简介 本实验使用上一博客的深度学习分类模型训练代码模板-CSDN博客,自定义投票式集成,手动实现模型集成(投票法)的代码。最后通过tensorboard进行可视化&#xff0…

Java之初始泛型

1 包装类 在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java给每个基本类型都对应了一个包装类型。 1.1 基本数据类型和对应的包装类 基本数据类型包装类byteByteshortShortintIntegerlongLongfloatFloatdoub…

RAG最佳实践:用 ElasticSearch 打造AI搜索系统与RAG 应用全流程详解!

前面一篇文章《RAG 向量数据库:掌握 Elasticsearch 作为向量数据库的终极指南》中,介绍了使用ElasticSerach作为向量数据的安装和使用指南。 今天这篇文章将介绍如何使用 Elasticsearch 搭建AI搜索系统和RAG应用系统。 Elasticsearch 搭建 AI 搜索系统 在 Elasticsearch 中…

游泳耳机哪个牌子的好?四大口碑精品游泳耳机专业推荐!

在追求健康生活的同时,游泳成为了许多人选择的锻炼方式。它不仅能够帮助人们塑造身材,还能有效缓解压力。而在游泳过程中,音乐的陪伴无疑能让人更加享受这段时光。因此,一款适合游泳时使用的耳机,成为了游泳爱好者们不…

java程序CUP持续飙高

1.top 2.定位进程中使用CPU最高的线程 top -Hp 70688 3.将线程ID转为十六进制 printf "0x%x\n" 28760 4.jstack工具跟踪堆栈定位代码 jstack 70688 | grep 0x7058 -A 10

尺度和位置敏感的红外小目标检测

Infrared Small Target Detection with Scale and Location Sensitivity 在本文中,着重于以更有效的损失和更简单的模型结构来提升检测性能。 问题一 红外小目标检测(IRSTD)一直由基于深度学习的方法主导。然而,这些方法主要集中…

python-春游

[题目描述] 老师带领同学们春游。已知班上有 N 位同学,每位同学有从 0 到 N−1 的唯一编号。到了集合时间,老师确认是否所有同学都到达了集合地点,就让同学们报出自己的编号。到达的同学都会报出自己的编号,不会报出别人的编号&am…

单链表应用

基于单链表实现通讯录项目 //Contact.c #define _CRT_SECURE_NO_WARNINGS 1 #include"contact.h" #include"list.h"//初始化通讯录 void InitContact(contact** con) {con NULL;} //添加通讯录数据 void AddContact(contact** con) {PeoInfo info;printf…

无主灯设计:吊顶之问与光影艺术的探索

在现代家居设计中,照明不仅仅是为了满足基本的照明需求,更是一种艺术和情感的表达。随着无主灯设计越来越受到人们的青睐,许多业主开始考虑一个问题:进行无主灯设计时,是否一定需要吊顶呢?本文将深入探讨这…

2017年系统架构师案例分析试题五

目录 案例 【题目】 【问题 1】(5 分) 【问题 2】(16 分) 【问题 3】(4 分) 【答案】 【问题 1】解析 【问题 2】解析 【问题 3】答案 相关推荐 案例 阅读以下关于 Web 系统架构设计的叙述,在答题纸上回答问题 1 至问题 3。 【题目】 某电子商务企业因发…

小波神经网络的时间序列的短时交通流量预测

小波神经网络的时间序列的短时交通流量预测 通过小波分析进行负荷序列分 解, 获得不同频率负荷分量规律 ; 由粒子群算法进行粒子群适应度排序 , 提升算法收敛速度和收敛能力 ; 为避免算法陷入局部 收敛性, 引入混沌理论来增强全局搜索能力 。 预测结果

linux 系统如何进行nfs(第五节)

网上的截图: 自己的操作: 首先是 在虚拟机中的操作。 然后是在开发板上的操作。 已经是没有问题了。

AI绘画【Stable Diffusion】抽卡必备!时间管理大师Agent Scheduler插件,一键设置任务,让你的休息时间充分利用起来!

大家好,我是灵魂画师向阳 相信大家在玩 Stable Diffusion 的时候一直有一个痛点,每次出图抽卡时都只能等待上一次抽卡结束,才能继续下一次抽卡; 特别是当我们想抽大量的卡来测试不同的模型,不同的参数的效果时&#…

大学生社团管理系统

一、项目概述 Hi,大家好,今天分享的项目是《大学生社团管理系统》。 随着校园文化的不断丰富,大学里各种社团越来越多,社团活动也越来越频繁,社团管理就显得繁琐,传统的人工管理方式比较麻烦,…

Client客户端模块

一.Client模块介绍 二.Client具体实现 1.消费者/订阅者模块 2.信道管理模块 3.异步线程模块 4.连接管理模块 这个模块同样是针对muduo库客户端连接的二次封装,向用户提供创建channel信道的接口,创建信道后,可以通过信道来获取指定服务。 三…

游泳耳机哪个牌子好?四大硬核爆款游泳耳机推荐种草!

随着人们对健康生活方式的不断追求,游泳作为一项全身性的运动受到了越来越多人的喜爱。与此同时,为了在水下也能享受音乐的乐趣,游泳耳机应运而生,并迅速成为泳池和海滩上不可或缺的装备之一。面对市面上琳琅满目的游泳耳机产品&a…