如何指定无序图像列表?

Jon*_*ona 4 ffmpeg

我正在试图找出如何指定要转换为视频的特定图像列表.我知道我们可以这样做:

ffmpeg -i image_04%d.png
Run Code Online (Sandbox Code Playgroud)

这将从文件夹中选择与序列匹配的所有图像.但是在我的情况下,图像文件不一定按照其名称暗示的顺序.原因是订单保留在数据库中,文件名本质上是数据库行ID.

我怎样才能指定正确的输入序列?我基本上是从代码调用ffmpeg而不是从命令行调用.因此,对代码的任何改变想法也受到欢迎.

谢谢!

Wol*_*ahl 5

这是凯文的想法中的一个脚本,对我有用.您可能希望替换文件名模式(shot*.png)和输出文件名movie.mp4.完成后脚本将删除所有frame_ ...文件.

# script to create movie from multiple png files
# taken in choronoligcal order

# start at 0
count=0
# take all files named shot - something ordered by date
for f in `ls -rt shot*.png`
do 
  # get the index in 0000 format
  printf -v counts "%04d" $count
    # link file to a frame_0000  named symbolic link
    ln -s $f frame_$counts.png
    # increment counter
  count=`expr $count + 1`
done
# create movie
# slowed down by factor 5
# ffmpeg -f image2 -i frame_%04d.png -vcodec mpeg4 -vf "setpts=5*PTS" movie.mp4
ffmpeg -i frame_%04d.png movie.mp4
# remove the links
rm frame_*.png
Run Code Online (Sandbox Code Playgroud)


Jon*_*ona 0

好吧,解决方案是修补 image2 类以支持包含可供选择的数字的列表。我向 ffmpeg 提供了输入文件模式以及具有指定顺序的数字数组来读取输入。这非常有效。