来自png图像的不均匀序列的ffmepg视频

时间:2015-05-26 08:24:16

标签: video ffmpeg screencast

我要从一系列截图(.png文件)制作视频。对于每个屏幕截图,都会提供有关何时拍摄的时间戳信息。屏幕截图之间的时间间隔可能不同,并且非常希望保留视频中的差异。

有没有办法使用单ffmpeg命令/ API为它提供图像序列+时间(或帧)偏移并将一个视频文件作为输出? 到现在为止,我必须为每个图像生成自定义长度的短视频文件,然后手动合并它们:

ffmpeg -y -loop 1 -i image1.png -c:v libx264 -t 1.52 video1.avi
ffmpeg -y -loop 1 -i image2.png -c:v libx264 -t 2.28 video2.avi
...
ffmpeg -y -loop 1 -i imageN.png -c:v libx264 -t 1.04 videoN.avi


ffmpeg -i "concat:video1.avi|video2.avi|...videoN.avi" -c copy output.avi

这是相当不错的,虽然间隔很大,但整个方法在我看来有点脆弱。

2 个答案:

答案 0 :(得分:1)

使用concat demuxer

enter image description here
使用2秒,4秒和0.25秒的示例。

  1. 制作一个文本文件,指明每个文件所需的持续时间:

    file 'image1.png'
    duration 1.52
    file 'image2.png'
    duration 2.28
    file 'image3.png'
    duration 1.04
    

    您可能需要重复上一行fileduration行才能显示最后一帧。

  2. 运行ffmpeg命令:

    ffmpeg -f concat -i input.txt -c:v libx264 -pix_fmt yuv420p -movflags +faststart output.mp4
    

答案 1 :(得分:-1)

如果您可以根据时间戳值对图像进行排序,并且图像大小相同,那么您可以通过以下命令获取视频:

ffmpeg -framerate X -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4

请参阅以下网址,其中提供了生成视频的各种命令选项:

FFmpeg Wiki: Create a video slideshow from images