• 华为云云耀云服务器L实例评测|华为云云耀云服务器docker部署srs并调优,可使用webrtc与rtmp


    华为云云耀云服务器L实例评测|华为云云耀云服务器docker部署srs并调优,可使用webrtc与rtmp

    什么是华为云云耀云L实例

    • 云耀云服务器L实例,面向初创企业和开发者打造的全新轻量应用云服务器。提供丰富严选的应用镜像,实现应用一键部署,助力客户便捷高效的在云端构建电商网站、Web应用、小程序、学习环境、各类开发测试等。

    开始接触华为云云耀云L实例

    • 获取华为云云耀云服务器L实例后第一步就是先去华为云上重置服务器密码
      在这里插入图片描述

    在这里插入图片描述

    • 重置完毕后用finalshell登陆华为云服务器,这里也可以用其他工具登陆比如xshell或者Putty都可以
      在这里插入图片描述

    • 登陆上去df -h查看硬盘确实是40g,我这里是装完了docker与srs,但可以看到硬盘总大小是正常的40g

    [root@hcss-ecs-496b ~]# df -h
    文件系统        容量  已用  可用 已用% 挂载点
    devtmpfs        909M     0  909M    0% /dev
    tmpfs           919M     0  919M    0% /dev/shm
    tmpfs           919M  8.6M  910M    1% /run
    tmpfs           919M     0  919M    0% /sys/fs/cgroup
    /dev/vda1        40G  3.0G   35G    8% /
    overlay          40G  3.0G   35G    8% /var/lib/docker/overlay2/614c90f78c3233668e229b261f6c9a383207ac7dc501f521b0d6a77b903b4e1d/merged
    tmpfs           184M     0  184M    0% /run/user/0
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 然后输入 systemctl status firewalld可以看到默认防火墙是关闭的,因此我们就不需要额外再去配置端口开放相关的配置
    [root@hcss-ecs-496b ~]# systemctl status firewalld
    ● firewalld.service - firewalld - dynamic firewall daemon
       Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
       Active: inactive (dead)
         Docs: man:firewalld(1)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    docker相关

    什么是docker

    • Docker 是一个开源的平台,它允许开发者和系统管理员在容器中构建、打包和运行任何应用程序。容器类似于虚拟机,但比传统的虚拟机更为轻量,它们共享同一个操作系统内核,而不是每一个都有自己的操作系统

    docker环境的安装

    • 然后进行docker容器的安装,安装最新版本的docker
    ###装必须的一些工具
    yum install -y yum-utils device-mapper-persistent-data lvm2
    ###配置yum的源地址
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    ###查看docker有哪些版本
    yum list docker-ce --showduplicates | sort -r
    ###默认安装最新版本的docker
    yum install -y docker-ce
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 配置启动docker与docker的开机自启
    [root@hcss-ecs-496b ~]# systemctl start docker
    [root@hcss-ecs-496b ~]# systemctl enable docker
    
    • 1
    • 2
    • 查看安装的docker版本
    [root@hcss-ecs-496b ~]# docker -v
    Docker version 24.0.6, build ed223bc
    
    • 1
    • 2

    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
    • 用的版本为srs5.0稳定版
    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     registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 ./objs/srs -c conf/https.docker.conf
    
    • 1

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

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

    • 输入docker ps获取容器id

    • 在这里插入图片描述

    • 然后输入docker exce -it 0e7718538d0d /bin/bash这里的容器id换成你刚才获取的id

    [root@hcss-ecs-496b ~]# docker exec -it 0e7718538d0d /bin/bash
    root@0e7718538d0d:/usr/local/srs# ls
    conf  etc  objs  usr
    
    • 1
    • 2
    • 3
    • 进入容器后可以看到,默认的文件夹在/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 0e7718538d0d:/usr/local/srs/conf/https.docker.conf https.docker.conf,可以在本地获取我们需要的https.docker.conf文件,然后开始修改
      在这里插入图片描述

        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;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 把两个off修改为on即可
    • 配置文件修改好后,我们还需要把文件放进去,这里我们把改好的配置文件映射到容器内部,来达到我们想要的效果

    重新部署srs容器并启动

    • 之前部署的srs服务还启动着,我们需要先停止服务,重新起一个新的,docker stop 0e7718538d0d,然后docker rm 0e7718538d0d,停止容器,然后删除容器
    • 重新运行指令,并附上挂载的命令
    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     registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5 ./objs/srs -c conf/https.docker.conf
    
    • 1
    • 查看docker ps 可以看到容器正常运行着,这就代表着srs服务已经部署完毕了

    配置云耀云服务器L实例安全组

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

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

    • 点击创建安全组
      在这里插入图片描述

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

    • 配置规则
      在这里插入图片描述

    • 选择添加规则
      在这里插入图片描述

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

    • 把我们刚才的华为云实例加入安全组
      在这里插入图片描述

    • 然后把默认的安全组移除实例
      在这里插入图片描述

    • 这样我们的实例就只受一个安全组保护,我们的端口也就开放成功了


    srs功能测试

    srs服务器监控

    • 部署完毕srs后,那肯定是要对srs进行功能测试
      在这里插入图片描述

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

    webrtc推拉流测试

    • 点击进入SRS播放器,选择rtc推流,然后再另开一个页面选择rtc播流
    • 推流配置,把端口改为1990,这是https的端口,然后再把地址复制到播流那边,就可以看到摄像头的画面了
      在这里插入图片描述

    在这里插入图片描述

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

    rtmp推流

    • rtmp推流,我一般是使用ffmpeg,指令为ffmpeg -re -i test.mp4 -vcodec h264 -c copy -f flv rtmp://弹性公网ip:1935/live/live2001,然后同样的可以用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
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    文件内容相关
    [前端网页源码]基于HTML5,DIV CSS实现的旅游网站的设计与实现(静态网页设计)
    crontab 定时任务
    H265码流RTP封装方式详解
    nginx清除缓存
    新增标签未顶格显示(子盒子内容超出父盒子引起的bug)
    为了拿捏后端打工人都要会的 Redis 数据结构,我画了 20 张图
    云服务器ECS价格表出炉_2024年最新价格表——阿里云
    【HCIE】跨域MPLS-VPN Option C 方式一
    (Java高级教程)第三章Java网络编程-第七节3:Cookie和Session
  • 原文地址:https://blog.csdn.net/lgbisha/article/details/132814407