You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在HPC环境下使用ffmpeg将大量非连续JPEG图片合成为视频

适配5万张不连续JPEG的FFmpeg合成脚本(Slurm+Singularity环境)

直接替换你原脚本中的合成命令即可,所有原有调度配置保留:

#!/bin/bash
#SBATCH -p general
#SBATCH -N 1
#SBATCH -t 03-00:00:00
#SBATCH --mem=8g
#SBATCH -n 1
#SBATCH --mail-type=BEGIN,REQUEUE,END,FAIL,REQUEUE   
#SBATCH --mail-user=<snip>

img_dir='foo/bar/1/2/123456'
folder='fooo'
# 输出帧率,可根据需求调整
FRAME_RATE=24

# 核心合成逻辑:用singularity内的for循环逐张输出图片到管道,规避参数长度限制
singularity exec /${img_dir}/foo_container bash -c "for img in /${img_dir}/processed_images/${folder}/*.jpeg; do cat \"\$img\"; done" | \
ffmpeg -f image2pipe -framerate ${FRAME_RATE} -i pipe:.jpeg \
-vf "crop=trunc(iw/2)*2:trunc(ih/2)*2,format=yuv420p" \
-c:v libx264 -crf 23 -preset medium -y \
/${img_dir}/processed_images/${folder}/${folder}.mp4

核心修改说明

  • 替换了原有cat *.jpeg的通配符写法,改为在Singularity容器内执行for循环逐张读取图片,不会触发Shell的ARG_MAX参数长度硬限制,且自动按文件名字典序遍历所有存在的JPEG文件,不受序号不连续的影响
  • 新增帧率参数-framerate可自定义视频每秒帧数,默认24帧符合通用场景
  • 新增format=yuv420p像素格式配置、H.264编码器参数,输出视频兼容性更强,可在绝大多数播放器直接播放
  • 新增-y参数自动覆盖已存在的输出文件,避免任务因交互提示卡住

注意事项

  • 如果你的图片需要按时间戳/其他规则排序而非文件名默认字典序,可修改for循环的遍历逻辑,替换为排序命令输出后再迭代即可
  • 8G内存、单核心的调度配置足够应对5万张图片的合成任务,无需调整
  • 合成速度主要取决于存储读写速度和编码器预设,可根据需求调整-preset参数:fast速度更快、压缩率更低,slow速度更慢、压缩率更高

内容的提问来源于stack exchange,提问作者TheCodeNovice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:21:03