news 2026/6/10 16:07:14

批量压缩对象存储中视频

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
批量压缩对象存储中视频

脚本说明与注意事项

  1. 运行环境:此脚本需要在能访问到视频文件的服务器(如转码服务器)上运行。
  2. 对象存储挂载
    • 如果您的对象存储(MinIO/Ceph)已经挂载为本地目录(例如通过 S3FS 挂载到了/mnt/video_source),直接配置路径即可。
    • 如果是纯API对接,需要配合mc(MinIO Client) 先下载后上传。本脚本默认采用“本地目录/挂载盘”模式,这是最通用的方式。
  3. 关键优化
    • 主动帮您加上了-movflags +faststart参数。虽然您提供的命令里没写,但作为点播系统,必须加这个参数,否则浏览器无法“边下边播”。
    • 增加了幂等性检查:如果目标文件已存在且大小正常,会自动跳过,防止重复跑。

脚本内容 (batch_transcode.sh)

您可以直接复制以下内容保存为batch_transcode.sh

#!/bin/bash# ================= 配置区域 =================# 源视频目录 (对象存储挂载目录或原始文件目录)SOURCE_DIR="/data/videos/raw"# 输出视频目录 (转码后的存放目录,建议与源分开,确认无误后再替换)OUTPUT_DIR="/data/videos/optimized"# 日志文件路径LOG_FILE="./transcode_task.log"# 设置并发数量 (H.265非常消耗CPU,建议设置为 CPU核心数 / 2)# 如果服务器要同时响应其他请求,请设为 1 保持单线程处理MAX_JOBS=1# ===========================================# 检查 FFmpeg 是否安装if!command-v ffmpeg&>/dev/null;thenecho"错误: 未找到 ffmpeg,请先安装。"exit1fi# 创建输出目录mkdir-p"$OUTPUT_DIR"echo"=== 开始批量压缩任务 ==="|tee-a"$LOG_FILE"echo"源目录:$SOURCE_DIR"|tee-a"$LOG_FILE"echo"输出目录:$OUTPUT_DIR"|tee-a"$LOG_FILE"echo"开始时间:$(date)"|tee-a"$LOG_FILE"# 统计计数器count_success=0count_skip=0count_fail=0# 递归查找所有 .mp4 文件# 注意:处理文件名中的空格find"$SOURCE_DIR"-type f -name"*.mp4"|whileread-r input_file;do# 1. 构建输出文件路径# 获取相对路径,保持原有的目录结构relative_path="${input_file#$SOURCE_DIR/}"output_file="$OUTPUT_DIR/$relative_path"output_dir_path=$(dirname"$output_file")# 自动创建子目录mkdir-p"$output_dir_path"# 2. 检查是否已处理(防止重复跑)if[-f"$output_file"];then# 如果目标文件存在,且大小大于 1KB (防止之前的空文件),则跳过if[$(stat-c%s"$output_file")-gt1024];thenecho"[跳过] 文件已存在:$relative_path"|tee-a"$LOG_FILE"continuefifiecho"------------------------------------------------"|tee-a"$LOG_FILE"echo"[正在处理]$input_file..."|tee-a"$LOG_FILE"# 3. 执行 FFmpeg 命令# -y: 覆盖输出文件# -nostdin: 防止ffmpeg吞掉while循环的标准输入# -movflags +faststart: 必须加!确保Web端能秒开播放ffmpeg -y -nostdin -i"$input_file"\-c:v libx265\-preset medium\-crf28\-r15\-tag:v hvc1\-c:a aac -b:a 64k\-movflags +faststart\"$output_file"</dev/null>>"$LOG_FILE"2>&1# 4. 检查转码结果if[$?-eq0];then# 获取压缩率orig_size=$(du-h"$input_file"|cut-f1)new_size=$(du-h"$output_file"|cut-f1)echo"[成功]$relative_path(原:$orig_size-> 新:$new_size)"|tee-a"$LOG_FILE"# 可以在这里添加删除源文件的命令,但建议人工确认后再删# rm "$input_file"elseecho"[失败]$relative_path- 请查看日志详情"|tee-a"$LOG_FILE"# 如果生成了错误的空文件,删除它rm-f"$output_file"fidoneecho"================================================"|tee-a"$LOG_FILE"echo"任务结束时间:$(date)"|tee-a"$LOG_FILE"echo"日志已保存至:$LOG_FILE"

如何使用

  1. 保存脚本:将上述代码保存为transcode.sh
  2. 赋予权限
    chmod+x transcode.sh
  3. 修改路径
    使用vim transcode.sh修改前几行的配置:
    • SOURCE_DIR: 指向您存放原始大文件的目录。
    • OUTPUT_DIR: 指定您希望存放处理后文件的目录。
  4. 后台运行(推荐):
    由于视频压缩非常耗时(H.265可能只有 2-5倍 实时速度),建议使用nohup挂在后台运行,防止SSH断开导致任务中断。
    nohup./transcode.sh>/dev/null2>&1&
  5. 查看进度
    tail-f transcode_task.log

特别提醒:关于 H.265 的浏览器兼容性

您既然决定使用H.265 (HEVC),请务必告知前端开发人员注意以下事项:

  1. 浏览器支持现状
    • Safari (iOS/Mac):完美支持(原生硬件解码)。
    • Chrome / Edge:104+ 版本才开始较好支持,且通常依赖硬件加速。
    • Firefox:支持较差。
  2. 解决方案
    您之前提到的XGPlayer (西瓜播放器)支持集成 H.265 软解插件。
    务必让前端引入xgplayer-h265插件,否则部分旧电脑的 Chrome 浏览器可能会出现“只有声音没画面”的情况。

如果为了绝对的兼容性而不使用插件,请改回 H.264,但如果能控制前端播放器环境,H.265 是节省带宽的最佳选择。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 18:36:24

Move Mouse防锁屏工具全解析:让电脑永远保持在线状态

你是否经历过视频会议中途离开&#xff0c;回来时发现电脑已经锁屏的尴尬&#xff1f;或者远程演示时系统因无操作自动进入休眠模式&#xff1f;今天介绍的这款开源免费工具Move Mouse&#xff0c;正是为解决这类问题而生。它通过模拟用户活动让电脑保持清醒&#xff0c;彻底告…

作者头像 李华
网站建设 2026/6/8 14:23:50

IACheck优化碳足迹核算报告:精准校验活动数据与排放因子乘积

随着全球应对气候变化的日益加剧&#xff0c;碳足迹核算已成为各行业可持续发展战略的重要组成部分。企业和组织需要对自身的碳排放量进行准确的评估&#xff0c;以满足环境监管要求、提升企业社会责任形象以及实现碳中和目标。在碳足迹核算中&#xff0c;活动数据与排放因子的…

作者头像 李华
网站建设 2026/6/9 23:49:49

基于大数据技术的钢材表面缺陷

青岛黄海学院 毕业设计&#xff08;论文&#xff09;开题报告 题目名称&#xff1a; 基于大数据技术的钢材表面缺陷 识别系统的设计与实现 学 院&#xff1a; 大数据学院 专 业&#xff1a; 数据科学与大数据技术 学生姓名&#xff1a; 学 号&#xff1a;…

作者头像 李华
网站建设 2026/6/9 14:48:59

幻步智能网络的优势

性能 高速访问、全球节点覆盖、智能选路加速稳定性 自动故障切换、可靠连接保障灵活性 SD-WAN 支持多链路组合与灵活部署成本 相比传统专线更具成本效益&#xff08;广域网优化&#xff09;安全 安全传输与独立 IP 配置提升控制力

作者头像 李华
网站建设 2026/6/10 5:31:06

重磅!AI Agents优化终极指南,最新综述一篇彻底搞懂!

LLM优化技术在许多通用任务中提升了模型性能&#xff0c;但缺乏针对AI Agents关键功能&#xff08;如长期规划、动态环境交互和复杂决策&#xff09;的专门优化。为此&#xff0c;华东师大等提供了对LLM的AI Agents优化方法的全面回顾&#xff0c;将其分为参数驱动和非参数驱动…

作者头像 李华
网站建设 2026/6/10 13:00:48

小白也能懂:大模型训练与微调技术全解析(程序员必看收藏)

小白也能懂&#xff1a;大模型训练与微调技术全解析&#xff08;程序员必看收藏&#xff09; 文章详细解释了大模型的训练过程&#xff0c;包括预训练(获取基座模型)、后训练(监督微调SFT和强化学习RL)等核心概念。通过DeepSeek和Qwen两个实际案例&#xff0c;展示了如何在不同…

作者头像 李华