来自 png 图像不均匀序列的 ffmpeg 视频
ffmepg video from uneven sequence of png images
我将使用一系列屏幕截图(.png 文件)制作视频。对于每个屏幕截图,都有有关拍摄时间的相关时间戳信息。屏幕截图之间的时间间隔可能会有所不同,因此非常希望在视频中保留这种差异。
有没有一种方法可以使用单个 ffmpeg
command/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
这很好,虽然间隔很大,但整个方法在我看来有点脆弱。
如果你可以根据时间戳值对图片进行排序,并且图片大小相同,那么你可以通过以下命令获取视频:
ffmpeg -framerate X -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
参考下面的url,它为您提供了生成视频的各种命令选项:
使用 concat demuxer.
使用 2、4 和 0.25 秒的示例。
制作一个文本文件,指示每个文件所需的持续时间:
file 'image1.png'
duration 1.52
file 'image2.png'
duration 2.28
file 'image3.png'
duration 1.04
您可能需要重复最后 file
和 duration
行才能显示最后一帧。
运行 ffmpeg
命令:
ffmpeg -f concat -i input.txt -c:v libx264 -pix_fmt yuv420p -movflags +faststart output.mp4
我将使用一系列屏幕截图(.png 文件)制作视频。对于每个屏幕截图,都有有关拍摄时间的相关时间戳信息。屏幕截图之间的时间间隔可能会有所不同,因此非常希望在视频中保留这种差异。
有没有一种方法可以使用单个 ffmpeg
command/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
这很好,虽然间隔很大,但整个方法在我看来有点脆弱。
如果你可以根据时间戳值对图片进行排序,并且图片大小相同,那么你可以通过以下命令获取视频:
ffmpeg -framerate X -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
参考下面的url,它为您提供了生成视频的各种命令选项:
使用 concat demuxer.
使用 2、4 和 0.25 秒的示例。
制作一个文本文件,指示每个文件所需的持续时间:
file 'image1.png' duration 1.52 file 'image2.png' duration 2.28 file 'image3.png' duration 1.04
您可能需要重复最后
file
和duration
行才能显示最后一帧。运行
ffmpeg
命令:ffmpeg -f concat -i input.txt -c:v libx264 -pix_fmt yuv420p -movflags +faststart output.mp4