• 华为云云耀云服务器L实例评测使用 | 通过程序实现直播流自动分段录制


    华为云云耀云服务器L实例评测使用 | 通过程序实现直播流自动分段录制

    1. 准备工作

      随着云计算时代的进一步深入,越来越多的中小企业企业与开发者需要一款简单易用、高能高效的云计算基础设施产品来支撑自身业务运营和创新开发。基于这种需求,华为云焕新推出华为云云服务器实例新品。
      华为云云服务器具有智能不卡顿、价优随心用、上手更简单、管理特省心这四个优点,从而帮您快速上云。
      本文将使用华为云云耀云服务器L实例实现一个通过程序实现直播流自动分段录制的小功能。

       ● 注册华为帐号、开通华为云,并进行实名认证、充值等操作。
       ● 购买并配置云耀云服务器L实例 ,具体步骤如下官方渠道链接-华为云耀云服务器L实例
    在这里插入图片描述
     
      云耀云服务器L实例提供了很多的镜像,包括Linux可视化宝塔面板、企业建站系统WordPress、网络统计分析平台Matomo、Docker可视化Portainer、一站式DevOps平台GitLab等,可以根据自己的实际需求进行购买。
      单击“去支付”,根据页面提示完成支付:
    在这里插入图片描述
     
    在这里插入图片描述
     
      单击“控制台”,查看已创建的云耀云服务器L实例:
    在这里插入图片描述
     

    型号实例操作系统系统CPU内存硬盘
    云耀云服务器L实例Ubuntu 22.04 server 64bit2核2G系统盘 40 GiB

    云服务器没有初始密码,在第一次使用云服务器时请先设置密码。密码丢失或密码过期时,也需要通过重置密码获取新的密码

    2. 环境搭建

      生成ffmpeg运行环境:

    root@hcss-ecs-63db:~# apt-get update
    root@hcss-ecs-63db:~# apt  install ffmpeg 
    
    • 1
    • 2

      写一个python脚本实现自动分段录制:

    root@hcss-ecs-63db:~# mkdir -p /data/record/stream/tsfiles/
    root@hcss-ecs-63db:~# mkdir -p /data/record/stream/logs/
    
    • 1
    • 2
    root@hcss-ecs-63db:~# vim record.py
    import time
    import os
    import sys
    channleurl = sys.argv[1]
    segment_time = sys.argv[2]
    dstdir = sys.argv[3]
    
    def record(url):
    	filepath, tmpfilename = os.path.split(url)
    	shortname, extension = os.path.splitext(tmpfilename)
    	format = "ts"
    	duration_day = 3
    	duration_sec = 3*24*3600
    
    	filetime = time.strftime('%Y%m%d%H%M%S',time.localtime(time.time()))
    	print(filetime,tmpfilename,shortname)
    	cmd = "ffmpeg -i " + url + " -map 0 -c copy  -f segment -segment_time " + segment_time +" -segment_format ts " + dstdir + shortname + '-' + filetime +"-%03d.ts"
    	try:
        		os.system(cmd)
    	except Exception as e:
        		print(e)
    record(channleurl)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

      测试流地址:rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid

    root@hcss-ecs-63db:~# nohup python3 \
    record.py \
    rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid \
    120 \
    /data/record/stream/tsfiles/ >> /data/record/stream/logs/liteavdemoplayerstreamid.log 2>&1 &
    
    # 每120秒切一个ts片段
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    root@hcss-ecs-63db:~# ps -ef | grep ffmpeg
    root       12248   12247  0 09:58 pts/0    00:00:00 sh -c ffmpeg -i rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid -map 0 -c copy  -f segment -segment_time 120 -segment_format ts /data/record/stream/tsfiles/liteavdemoplayerstreamid-20230928095815-%03d.ts
    root       12249   12248  2 09:58 pts/0    00:00:00 ffmpeg -i rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid -map 0 -c copy -f segment -segment_time 120 -segment_format ts /data/record/stream/tsfiles/liteavdemoplayerstreamid-20230928095815-%03d.ts
    
    • 1
    • 2
    • 3

      可以看到每120秒切一个ts文件,大小在35M左右,视频流如果一直播放就会一直切

    root@hcss-ecs-63db:~# ls -lh /data/record/stream/tsfiles/
    total 115M
    -rw-r--r-- 1 root root 35M Sep 28 10:00 liteavdemoplayerstreamid-20230928095815-000.ts
    -rw-r--r-- 1 root root 33M Sep 28 10:02 liteavdemoplayerstreamid-20230928095815-001.ts
    -rw-r--r-- 1 root root 34M Sep 28 10:04 liteavdemoplayerstreamid-20230928095815-002.ts
    -rw-r--r-- 1 root root 15M Sep 28 10:05 liteavdemoplayerstreamid-20230928095815-003.ts
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

      停止录制,当然可以写一个cron计划任务

    ps -ef|grep ffmpeg |awk '{print $2}'|xargs kill -9
    
    • 1

    3. 心得总结

      华为云云耀云服务器L实例在全国范围内内提供多个数据中心,可以选择最接近您的目标受众的地理位置来减少延迟。这对于流媒体和在线视频服务特别重要。而且华为云云耀云服务器L实例提供了多种操作系统和应用程序的预置镜像,这使得在云主机上安装和配置FFmpeg变得更加简单。总之华为云主机提供了一种高度可扩展、高性能、灵活和安全的环境,非常适合运行FFmpeg以进行视频处理和转码任务。这使得华为云成为许多媒体和视频处理应用程序的理想选择。

  • 相关阅读:
    pytorch笔记:conv2d
    基于GPIO子系统编写LED驱动,编写应用程序进行测试设置定时器,5秒钟打印一次hello world
    大型商场借力泛微,实现内外协同招商,合同、铺位、费用统一管理
    EtherNet/IP转profienrt协议网关连接EtherNet/IP协议的川崎机器人配置方法
    systemverilog:interface中端口方向、Clocking block的理解
    kibana 7安装
    网络基础-传输层协议-TCP/UDP
    【C++ Primer Plus】第2章 开始学习C++
    基于多能互补的热电联供型微网优化运行(Matlab代码实现)
    卡尔曼滤波器(二):Simulink卡尔曼滤波器模块使用
  • 原文地址:https://blog.csdn.net/wangzongyu/article/details/133345038