gpt4 book ai didi

ffmpeg:从视频中提取图像及其帧号?

转载 作者:行者123 更新时间:2023-12-04 22:49:26 48 4
gpt4 key购买 nike

我正在从(可变帧率).avi 文件中提取图像

ffmpeg -i movie.avi -r 25 %05d.png

( -r 选项应该等同于过滤器 -vf='fps=fps=25' ),但现在想知道每个生成的图像对应的原始视频流中的帧号。有没有简单的方法可以做到这一点?

最佳答案

我找到了一些方法来做我想做的事,这并不容易。使用“showinfo”过滤器,可以获得帧相对于源文件的位置,即运行

ffmpeg -i movie.avi -filter:v 'showinfo' output.avi

举个例子

[Parsed_showinfo_1 @ 0x7ffaebd01bc0] n: 0 pts: 0 pts_time:0 pos: 630548 fmt:yuv420p sar:1/1 s:1280x720 i:P iskey:0 type:P checksum:B4E5E664 plane_checksum:[6B3569DD 72B2AE10 31F8CE68] mean:[76 111 155] stdev:[13.1 3.8 8.7]



其中“pos: 630548”是源文件中第一帧的位置。给定源文件中哪个位置对应于哪个帧的信息,然后可以做
ffmpeg -i movie.avi -filter:v "fps=fps=25, showinfo" %05d.png > output.txt 2>&1

它像以前一样提取图像,但也给出了输入文件中提取的帧的位置,从这两个信息中可以拼凑出从提取的帧到输入文件中的帧的映射。

但是,我不认为这种解决方案可以称为“简单”(或漂亮)。

编辑 : 按照@Mulvya 的建议,您可以省去运行 ffmpeg -i movie.avi -filter:v 'showinfo' output.avi 的额外步骤。提取原始视频中帧的位置,如果您改为运行
ffmpeg -i movie.avi -filter:v "showinfo, fps=fps=25, showinfo" %05d.png > output.txt 2>&1

这将同时发出原始视频流和过滤后视频流的 showinfo,例如(原始视频流对应以 Parsed_showinfo_0 开头的行,过滤后的流对应于以 Parsed_showinfo_2 开头的行)
[Parsed_showinfo_0 @ 00a38820] n:   0 pts:      0 pts_time:0       pos:      508 fmt:pal8 sar:0/1 s:320x200 i:P iskey:1 type:I checksum:CF3AE73F plane_checksum:[CF3AE73F] mean:[117] stdev:[48.3]
[Parsed_showinfo_0 @ 00a38820] n: 1 pts: 1 pts_time:0.0285362 pos: 26710 fmt:pal8 sar:0/1 s:320x200 i:P iskey:0 type:P checksum:CF3AE73F plane_checksum:[CF3AE73F] mean:[117] stdev:[48.3]
[Parsed_showinfo_2 @ 00a38ca0] n: 0 pts: 0 pts_time:0 pos: 508 fmt:pal8 sar:0/1 s:320x200 i:P iskey:1 type:I checksum:CF3AE73F plane_checksum:[CF3AE73F] mean:[117] stdev:[48.3]
[Parsed_showinfo_0 @ 00a38820] n: 2 pts: 2 pts_time:0.0570725 pos: 31680 fmt:pal8 sar:0/1 s:320x200 i:P iskey:0 type:P checksum:512EEB5E plane_checksum:[512EEB5E] mean:[117] stdev:[48.2]

关于ffmpeg:从视频中提取图像及其帧号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45679873/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com