使用一批 400 张图像制作视频,每张图像的时间不同

使用一批 400 张图像制作视频,每张图像的时间不同

我想用一批 400 张具有不同时间间隔的图像(.jpg)创建视频或幻灯片(我有一个文本文件,以毫秒为单位显示每张图像的拍摄时间)

例如:

image 0001.jpg is 225 msec
image 0002.jpg is 480 msec
image 0003.jpg is 1200 msec

我怎样才能以最小的努力制作这样的视频?

答案1

一种方法是将每张图片制作成视频,然后将它们组合起来。mencoder您可以执行以下操作:

这会创建视频每秒 1 帧,来自image.jpg

mencoder "mf://image.jpg" -ovc x264 -mf  fps=1  -o output.avi

这将拍摄两个视频,合并它们合二为一:

mencoder -ovc copy -oac copy video1.avi video2.avi -o completevideos.avi 

它可能看起来像这样。每行durations.txt包含一个持续时间(此处以毫秒为单位),图像的命名方式与您的示例相同。这只是一个示例,可能无法按所示方式工作:

i = 0
while read line; do
    padded = $(printf "%04d\n" $i)
    fps = $(echo "scale=3; 1/$i/1000" | bc -q 2>/dev/null)
    if [ i -eq 0 ]; then
        mencoder "mf://image$padded.jpg" -ovc x264 -mf  fps=$fps -o previous.avi
    else
        mencoder "mf://image$padded.jpg" -ovc x264 -mf  fps=$fps -o next.avi
        mencoder -ovc copy -oac copy previous.avi next.avi -o building.avi
        rm previous.avi
        mv building.avi previous.avi
    fi
    i = $[i + 1];
done < durations.txt

ffmpeg工具具有相似的功能:

ffmpeg -loop 1 -i img.png -c:v libx264 -t 30 -pix_fmt yuv420p out.mp4
ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg

相关内容