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

使用ffmpeg制作延时视频时无法匹配全部jpg文件问题求助

问题原因&修正方案
  • 第一处语法错误:while read -r 后直接换行,变量A没有接在read命令后,导致读取到的目录路径无法正确赋值,ffmpeg获取的路径为空自然找不到图片。
  • 第二处核心参数错误:-i "$(\"${A}\"*.jpg)" 写法完全错误,$()是命令替换语法,此处不需要执行命令,只需要拼接目录路径和jpg通配符,多余的转义引号和命令替换会导致路径解析失败,无法匹配到任何jpg文件。
  • 额外优化点:原脚本固定生成0.mp4再重命名,重复生成临时文件无意义,可以直接合并为一步生成目标视频,降低不必要的IO开销。

修正后可用脚本

#!/bin/bash
DIR_SOURCE="/volume1/homes/krislec/timelapse/test/"

find "${DIR_SOURCE}" -maxdepth 1 -type d ! -name 'test' ! -name '@eaDir' | while read -r A; do
  # 直接一步生成带正确宽高比的延时视频,兼容普通播放器、移动端播放
  ffmpeg -nostdin -framerate 5 -pattern_type glob -i "${A}/*.jpg" -c:v libx264 -pix_fmt yuv420p -aspect 16:9 "${A}.mp4"
done

可选补充:如果文件名未按时间顺序排列,可使用按修改时间排序的版本

#!/bin/bash
DIR_SOURCE="/volume1/homes/krislec/timelapse/test/"

find "${DIR_SOURCE}" -maxdepth 1 -type d ! -name 'test' ! -name '@eaDir' | while read -r A; do
  # 先按文件修改时间升序生成输入列表
  ls -1tr "${A}"/*.jpg > filelist.txt
  ffmpeg -nostdin -framerate 5 -f concat -safe 0 -i <(sed "s/^/file '/;s/$/'/" filelist.txt) -c:v libx264 -pix_fmt yuv420p -aspect 16:9 "${A}.mp4"
  rm -f filelist.txt
done

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:48:03