【问题标题】:timelapse images into a movie, 500 at a time延时摄影图像到电影中,一次 500 张
【发布时间】:2017-07-21 17:54:06
【问题描述】:

我正在尝试使用 ffmpeg 制作一个脚本,将一堆延时摄影图像变成一部电影。

最新的问题是如何循环遍历图像,比如 500 个批次。

一天可能有 100 张图片,或者可能有 5000 张图片。

将其分开的原因是内存不足。

之后我需要使用 MP4Box 将它们聚集在一起...

我对 bash 完全陌生,但并不完全是编程。

我认为需要发生的事情是这样的

1) 读取文件夹内容,因为图像可能不连续命名

2) 一次向 ffmpeg 发送 500 个列表进行处理 (https://trac.ffmpeg.org/wiki/Concatenate)

2b) 当你循环通过这个时,设置一个计数器来确定你已经完成了多少循环

3) 使用循环数创建 MP4Box cat 命令行以将它们全部连接到最后。

如果只有 500 张图片,则可以使用的基本脚本是:

#!/bin/bash

dy=$(date '+%Y-%m-%d')

ffmpeg -framerate 24 -s hd1080 -pattern_type glob -i "/mnt/cams/Camera1/$dy/*.jpg" -vcodec libx264 -pix_fmt yuv420p Cam1-"$dy".mp4

MP4Box 的 cat 命令如下:

MP4Box -cat Cam1-$dy7.mp4 -cat Cam1-$dy6.mp4 -cat Cam1-$dy5.mp4 -cat Cam1-$dy4.mp4 -cat Cam1-$dy3.mp4 -cat Cam1-$dy2.mp4 -cat Cam1-$dy1.mp4 "Cam1 - $dy1 to $dy7.mp4"

毋庸置疑,我的项目非常感谢您的帮助

【问题讨论】:

  • 为什么需要使用 mp4box? ffmpeg 能够处理这个问题。
  • 我知道这篇文章很长,但man ffmpeg 是一个不错的起点。

标签: bash ffmpeg timelapse


【解决方案1】:

这里有一些东西可以帮助您入门。它将各个帧按时间顺序排序,然后将它们分成 500 个块并循环遍历所有块:

#!/bin/bash

# User-changeable number of frames per chunk
chunksize=500

# Rename files by date/time so they collate in order
jhead -n%Y-%m-%d_%H-%M-%S *.jpg

# Remove any remnants from previous runs (which may have been longer)
rm chunk* sub-*mp4

# Split filename list into chunks - chunkaa, chunkab, chunkac ...
ls *jpg | split -l $chunksize - chunk

# Put 'file' keyword before each filename
sed -i.bak 's/^/file /' chunk*

n=0
for c in chunk*; do
   # Generate zero-padded output filename so that collates for final assembly too
   out=$(printf "sub-%03d.mp4" $n)
   echo Processing chunk $c into sequence $out
   ffmpeg -f concat -i "$c" ... "$out"
   ((n+=1))
done

# Final assembly of "sub-*.mp4"
ffmpeg ... sub-*mp4 ...

【讨论】:

  • 非常感谢马克的回复——我会通读这个直到我明白它在做什么!
  • 没问题 :-) 如有任何问题,请咨询。
  • 好的,如果文件名已经是这样的: 18-06-30.jpg 18-06-31.jpg 18-06-47.jpg 18-06-49.jpg 18-06 -50.jpg 是否需要重命名? - 问题是它们将是随机的,对于 HH-MM-SS 来说不是连续的
  • 在我看来,这似乎是让它们按顺序列出的最简单方法,只需一条线。如果你有一个更简单的方法,那就用吧:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-09
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多