用于生成与视频长度相关的固定数量图像的 FFmpeg 标志
FFmpeg Flags for generating fixed amount of images related to video length
我正在使用这个命令:
ffmpeg -i file.mp4 -vf fps=1/60 -s 274x175 thumb%d.png
每分钟从视频中提取 1 帧。
我想学习如何做的是:
从视频中提取总共 10 张图像,无论其长度与视频的距离有关。
示例:
1.If 视频长度为 15 分钟(900 秒)它会从每 90 秒的视频中提取一张图像。
2.If 视频长度为 22 分钟(1320 秒)它会从每 132 秒的视频中提取一张图像。
还有一件事,是否可以使用 ffmpeg 设置这些图像的输出质量或限制每个图像的最大尺寸(如文件大小,不是 尺寸)会被输出吗?
没有真正的方法可以做到这一点,因为 FFmpeg 并不真正 "know" 每个流的确切长度。但是,如果你事先 运行 ffmpeg -i input
,你可以使用它来 "guess" 流的长度(基于容器是什么)并使用它,我想。
你必须编写脚本。
快速简单的方法
将从 ffprobe
:
获取持续时间
$ ffprobe -v error -select_streams 0:v -show_entries format=duration -of default=nw=1 input.mkv
duration=600.032000
但是,这可能不准确。
持续时间可以是 "fragile"
如果您的输入被损坏或损坏,它可能 return 不正确的持续时间。 (您可以通过使用 dd
截断它来使用某些格式对其进行测试。)如果您确信您的输入没有问题,那么 ffprobe
可能是一种快速简便的方法。
一种更慢但更可靠的方法
如果您发现 ffprobe
return 值不正确,那么您必须完全解码文件:
$ ffmpeg -i input -f null -
解析控制台输出的倒数第二行,您将看到列出的实际持续时间如下所示:
time=00:04:44.95
这几乎是瞬间完成的,也可能需要很多秒。这需要多长时间取决于您的输入持续时间、输入复杂性和您的硬件。
图像质量
你问过:
is it possible to use ffmpeg to set output quality of those images
PNG
不,因为它是无损的。您可以使用 -compression_level
选项控制压缩量,但 ffmpeg
已经默认使用最高压缩。
JPG
是的,使用 -q:v
或 -b:v
。 -q:v
合理的测试范围是 2-8:值越高,质量越低,文件越小。
我正在使用这个命令:
ffmpeg -i file.mp4 -vf fps=1/60 -s 274x175 thumb%d.png
每分钟从视频中提取 1 帧。 我想学习如何做的是: 从视频中提取总共 10 张图像,无论其长度与视频的距离有关。
示例:
1.If 视频长度为 15 分钟(900 秒)它会从每 90 秒的视频中提取一张图像。 2.If 视频长度为 22 分钟(1320 秒)它会从每 132 秒的视频中提取一张图像。
还有一件事,是否可以使用 ffmpeg 设置这些图像的输出质量或限制每个图像的最大尺寸(如文件大小,不是 尺寸)会被输出吗?
没有真正的方法可以做到这一点,因为 FFmpeg 并不真正 "know" 每个流的确切长度。但是,如果你事先 运行 ffmpeg -i input
,你可以使用它来 "guess" 流的长度(基于容器是什么)并使用它,我想。
你必须编写脚本。
快速简单的方法
将从 ffprobe
:
$ ffprobe -v error -select_streams 0:v -show_entries format=duration -of default=nw=1 input.mkv
duration=600.032000
但是,这可能不准确。
持续时间可以是 "fragile"
如果您的输入被损坏或损坏,它可能 return 不正确的持续时间。 (您可以通过使用 dd
截断它来使用某些格式对其进行测试。)如果您确信您的输入没有问题,那么 ffprobe
可能是一种快速简便的方法。
一种更慢但更可靠的方法
如果您发现 ffprobe
return 值不正确,那么您必须完全解码文件:
$ ffmpeg -i input -f null -
解析控制台输出的倒数第二行,您将看到列出的实际持续时间如下所示:
time=00:04:44.95
这几乎是瞬间完成的,也可能需要很多秒。这需要多长时间取决于您的输入持续时间、输入复杂性和您的硬件。
图像质量
你问过:
is it possible to use ffmpeg to set output quality of those images
PNG
不,因为它是无损的。您可以使用 -compression_level
选项控制压缩量,但 ffmpeg
已经默认使用最高压缩。
JPG
是的,使用 -q:v
或 -b:v
。 -q:v
合理的测试范围是 2-8:值越高,质量越低,文件越小。