华为云云耀云服务器L实例评测使用 | 通过程序实现直播流自动分段录制
华为云云耀云服务器L实例评测使用 | 通过程序实现直播流自动分段录制
- 1. 准备工作
- 2. 环境搭建
- 3. 心得总结
1. 准备工作
随着云计算时代的进一步深入,越来越多的中小企业企业与开发者需要一款简单易用、高能高效的云计算基础设施产品来支撑自身业务运营和创新开发。基于这种需求,华为云焕新推出华为云云服务器实例新品。
华为云云服务器具有智能不卡顿、价优随心用、上手更简单、管理特省心这四个优点,从而帮您快速上云。
本文将使用华为云云耀云服务器L实例实现一个通过程序实现直播流自动分段录制的小功能。
● 注册华为帐号、开通华为云,并进行实名认证、充值等操作。
● 购买并配置云耀云服务器L实例 ,具体步骤如下官方渠道链接-华为云耀云服务器L实例
云耀云服务器L实例提供了很多的镜像,包括Linux可视化宝塔面板、企业建站系统WordPress、网络统计分析平台Matomo、Docker可视化Portainer、一站式DevOps平台GitLab等,可以根据自己的实际需求进行购买。
单击“去支付”,根据页面提示完成支付:
单击“控制台”,查看已创建的云耀云服务器L实例:
型号 | 实例操作系统系统 | CPU | 内存 | 硬盘 |
---|---|---|---|---|
云耀云服务器L实例 | Ubuntu 22.04 server 64bit | 2核 | 2G | 系统盘 40 GiB |
云服务器没有初始密码,在第一次使用云服务器时请先设置密码。密码丢失或密码过期时,也需要通过重置密码获取新的密码
2. 环境搭建
生成ffmpeg运行环境:
root@hcss-ecs-63db:~# apt-get update
root@hcss-ecs-63db:~# apt install ffmpeg
写一个python脚本实现自动分段录制:
root@hcss-ecs-63db:~# mkdir -p /data/record/stream/tsfiles/
root@hcss-ecs-63db:~# mkdir -p /data/record/stream/logs/
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 = 3duration_sec = 3*24*3600filetime = 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)
测试流地址: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片段
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
可以看到每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
停止录制,当然可以写一个cron计划任务
ps -ef|grep ffmpeg |awk '{print $2}'|xargs kill -9
3. 心得总结
华为云云耀云服务器L实例在全国范围内内提供多个数据中心,可以选择最接近您的目标受众的地理位置来减少延迟。这对于流媒体和在线视频服务特别重要。而且华为云云耀云服务器L实例提供了多种操作系统和应用程序的预置镜像,这使得在云主机上安装和配置FFmpeg变得更加简单。总之华为云主机提供了一种高度可扩展、高性能、灵活和安全的环境,非常适合运行FFmpeg以进行视频处理和转码任务。这使得华为云成为许多媒体和视频处理应用程序的理想选择。
相关文章:

华为云云耀云服务器L实例评测使用 | 通过程序实现直播流自动分段录制
华为云云耀云服务器L实例评测使用 | 通过程序实现直播流自动分段录制 1. 准备工作2. 环境搭建3. 心得总结 1. 准备工作 随着云计算时代的进一步深入,越来越多的中小企业企业与开发者需要一款简单易用、高能高效的云计算基础设施产品来支撑自身业务运营和创新开发。基…...
前端教程-webpack
官网 webpack webpack基础 视频教程 尚硅谷Webpack5入门到原理(面试开发一条龙)...
white-space几种属性的用法(处理空格)
white-space:normal 文首的空格忽略,文本内部的换行符自动转成了空格。 white-space:nowrap 不换行,即使超出容器宽度 white-space:pre 与原文本一致,空格和换行符保留 white-space:pre-…...
Linux的历史
Linux的历史 前言: 关于Linux,你可能只是听说过它是一款操作系统,也许你还知道它是开源的,但在日常生活中,你更熟悉的是Windows。 那么我们为什么要了解、学习Linux,看完这一篇,你也许可以从…...
软考高级系统架构设计师系列论文真题八:论企业集成平台的技术与应用
软考高级系统架构设计师系列论文真题八:论企业集成平台的技术与应用 一、论企业集成平台的技术与应用二、找准核心论点三、理论素材准备四、精品范文赏析1.摘要2.正文3.总结软考高级系统架构设计师系列论文之:百篇软考高级架构设计师论文范文软考高级系统架构设计师系列之:论…...
[H5动画制作系列] 路径引导动画 Demo
代码参考1: <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>路径引导动画 Demo1</tit…...

[React] Context上下文的使用
文章目录 1.Context的介绍2.为什么需要Context3.Context的使用 1.Context的介绍 Context旨在为React复杂嵌套的各个组件提供一个生命周期内的统一属性访问对象,从而避免我们出现当出现复杂嵌套结构的组件需要一层层通过属性传递值得问题。 Context是为了提供一个组…...
高云FPGA系列教程(9):cmd-parser串口命令解析器移植
文章目录 @[toc]cmd-parser库简介cmd-parser库源码获取GW1NSR-4C移植cmd-parser实际测试cmd-parse命令解析器优化本文是高云FPGA系列教程的第9篇文章。 上一篇文章介绍片上ARM Cortex-M3硬核处理器串口外设的使用,演示轮询方式和中断方式接收串口数据,并进行回环测试。 本文…...

PHP8的静态变量和方法-PHP8知识详解
我们在上一课程讲到了public、private、protected这3个关键字,今天我们来讲解static关键字,明天再讲解final关键字。 如果不想通过创建对象来调用变量或方法,则可以将该变量或方法创建为静态变量或方法,也就是在变量或方法的前面…...

用AI写文章被百家号封禁
我是卢松松,点点上面的头像,欢迎关注我哦! 千万不要用AI创作,尤其是原文照搬!不要用ai,不要用,不要用!重要的事情说三遍。 近日ID名为“爸爸在家赚钱”用AI写了4-5篇文章投稿在百家号,随后百度就把他帐号…...
JVM--Java类加载器笔记
Java类加载器 代码经过编译变成了字节码打包成 Jar 文件。让 JVM 去加载需要的字节码,变成持久代/元数据区上的 Class 对象,接着执行程序逻辑。 类声明周期和加载过程 步骤:加载->链接(校验->准备->解析)-…...

【在Ubuntu部署Docker项目】— PROJECT#1
一、说明 让我们深入了解 Docker。用docker构建web服务器。我们正在计划开发JavaScript API,建立MySQL数据库,并创建一个 PHP 网站使用 API 服务。Php Node.js Mysql — DockerSeries — Episode#1 二、系统架构概述 我们要构建的容器,是三…...
【学习笔记】LOJ #6240. 仙人掌
毒瘤题😅 简单版本 CF235D Graph Game 首先,考虑建立圆方树,然后对于一个点双(简单环)上的两个点,有两条路径可以到达 和简单版本类似,考虑容斥。即枚举点对 i , j i,j i,j之间 哪些路径是联…...
java通过接口转发文件(上传下载)
java接口转发上传的文件 RequestMapping(value "/XXXX/fileUpload", method RequestMethod.POST) public String getFileUpload2(RequestParam("file") MultipartFile file, HttpServletRequest request) public static String hotMapPost3(String ur…...
Docker-部署docker-compose以及管理服务
部署docker-compose以及管理服务 文章目录 部署docker-compose以及管理服务[TOC] 前言一、docker-compose是什么?1、介绍2、 功能 二、安装docker-compose1.yum直接安装2.二进制安装3.pip安装 三、docker-compose部署服务1.编写docker-compose.yml文件 总结 前言 D…...
Android - Monkey 测试应用出现Crash报错IllegalStateException
问题描述 平时使用Lottie动画都是正常的,没出过这个crash问题,看下的报错信息,代码中文件夹也设置了,没看出来问题。 AndroidRuntime: java.lang.IllegalStateException: You must set an images folder before loading an imag…...

Spring源码分析 事务 实现原理
文章目录 什么是事务Spring事务管理Spring事务实现原理事务管理器事务定义事务的开启事务核心方法业务代码使用事务TransactionInterceptor 什么是事务 一般所指的事务是数据库事务,是指一批不可分割的数据库操作序列,也是数据库并发控制的基本单位。其…...

ADS-B及雷达显示终端8.3
新版本功能升级主要有如下: 1、地图更新 在上一版本8.2中使用的高程地图为由SRTM经过地形晕渲后,生成地形图片,然后对图片进行贴图,一一按规定位置、大小将地形图贴至底图上,而后在底图上进行二维矢量地图的绘制,包括…...
第二章:最新版零基础学习 PYTHON 教程(第二节 - Python 输入/输出–从 Python 控制台获取输入)
目录 Python 中的控制台是什么? 接受来自控制台的输入: 1. 将输入类型转换为整数:...

linux安装配置 flume
目录 一 解压安装包 二 配置部署 (1)修改配置 (2)下载工具 (3)创建配置文件 (4)启动监听测试 (5)flume监控文件 一 解压安装包 这里提供了网盘资源 链…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...