当将-filter_complex和split过滤器一起使用时,FFmpeg提取不同数量的帧

康斯坦丁

我不喜欢ffmpeg,从视频中提取jpg图片。我使用-filter_complex将输入流分成两个输出流,因为我从直接的http链接处理了我的视频(VPS上没有可用空间),并且我不想两次读取整个视频(流量配额也很稀缺) )。此外,我需要两个系列的陷阱,一个用于应用一些滤镜(更改fps,缩放,不锐化,裁剪,缩放),然后用肉眼从中选择,而另一系列则不受影响(希望更改fps并裁剪黑色边框) ),然后从第一个系列中进行选择后将其用于进一步处理。我从Ruby脚本调用ffmpeg命令,因此它以#{}的形式包含一些字符串插值/替换。我的工作命令行如下所示:

ffmpeg -y -fflags +genpts -loglevel verbose -i #{url} -filter_complex "[0:v]fps=fps=#{new_fps.round(5).to_s},split=2[in1][in2];[in1]crop=iw-#{crop[0]+crop[2]}:ih-#{crop[1]+crop[3]}:#{crop[0]}:#{crop[1]},scale=#{thumb_width}:-1:flags=lanczos,unsharp,lutyuv=y=gammaval(#{gammaval})[out1];[in2]crop=iw-#{crop[0]+crop[2]}:ih-#{crop[1]+crop[3]}:#{crop[0]}:#{crop[1]}[out2]" -f #{format} -c copy #{options} -map_chapters -1 - -map '[out1]' -f image2 -q 1 %06d.jpg -map '[out2]' -f image2 -q 1 big_%06d.jpg

#{options}在输出为MP4时设置,然后其值为“ -movflags frag_keyframe + empty_moov”,因此我可以将其发送到标准输出而无需寻找功能并将其上传到某处而无需制作巨大的临时视频文件。因此,我得到了两张图片,其中一张被过滤,锐化,而另一张实际上却未触及。而且,我还在标准输出上获得了视频的输出流,该视频由Open3.popen3库处理,该库连接了其他两个命令的输入的输出流。

当我想在视频中搜索到给定点并忽略STDOUT上的流式视频输出时,就会出现问题。我尝试在给定的时间码之前应用组合搜索,快速搜索,并在浮点秒数中将慢速搜索应用于确切的时间代码:

ffmpeg -report -y -fflags +genpts -loglevel verbose -ss #{(seek_to-seek_before).to_s} -i #{url} -ss #{seek_before.to_s} -t #{t_duration.to_s} -filter_complex "[0:v]fps=fps=#{pics_per_sec},split=2[in1][in2];[in1]crop=iw-#{crop[0]+crop[2]}:ih-#{crop[1]+crop[3]}:#{crop[0]}:#{crop[1]},scale=#{thumb_width}:-1:flags=lanczos,unsharp,lutyuv=y=gammaval(#{gammaval})[out1];[in2]crop=iw-#{crop[0]+crop[2]}:ih-#{crop[1]+crop[3]}:#{crop[0]}:#{crop[1]}[out2]" -map '[out1]' -f image2 -q 1  %06d.jpg -map '[out2]' -f image2 -q 1  big_%06d.jpg

运行此命令,我得到了所需的两套图片,但是它们包含不同数量的图片,分别是233对484。

可以从此内插/替换命令行中读取实际值:

ffmpeg -report -y -fflags +genpts -loglevel verbose -ss 1619.0443599999999 -i fabf.avi -ss 50.0 -t 46.505879999999934 -filter_complex "[0:v]fps=fps=5,split=2[in1][in2];[in1]crop=iw-0:ih-0:0:0,scale=280:-1:flags=lanczos,unsharp,lutyuv=y=gammaval(0.526316)[out1];[in2]crop=iw-0:ih-0:0:0[out2]" -map '[out1]' -f image2 -q 1  %06d.jpg -map '[out2]' -f image2 -q 1  big_%06d.jpg

详细的日志可以在这里找到:http : //www.filefactory.com/file/1yih17k2hrmp/ffmpeg-20160610-223820.txt在最后一行之前,它显示188个重复的帧。

我也尝试传递“ -vsync 0”选项,但没有帮助。当我用两个不同的命令行在两个连续的步骤中生成两个系列的图像时,那么就没有问题了,当然在这两个系列中我得到的图像数量都是相同的。所以我的问题是,我如何才能使用后面的命令行,仅通过一次读取/解析远程视频文件来生成两个系列的图像?

吉安

您还必须复制-ss -t第二个输出选项,即

...-f image2 -q 1 %06d.jpg -map '[out2]' -ss 50 -t 46.5 -f image2 -q 1 big_%06d.jpg

每个输出选项(不在之前的输出选项-i)仅适用于紧随其后的输出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将NReco ffmpeg ConvertMedia与filter_complex一起使用

来自分类Dev

当将`track by $ index`与过滤器一起使用时,出现错误。怎么解决呢?

来自分类Dev

如何将归一化视频过滤器与FFMPEG一起使用?

来自分类Dev

将范围值与过滤器一起使用

来自分类Dev

将findAll PagingAndSortingRepository与过滤器一起使用

来自分类Dev

是否可以将独立过滤器与列过滤器一起使用?

来自分类Dev

将验证过滤器与async / await一起使用时,如何处理空的HttpContext.Current?

来自分类Dev

使用ajax时,将外部过滤器与tablesorter一起使用

来自分类Dev

使用ajax时,将外部过滤器与tablesorter一起使用

来自分类Dev

将@Autowired与在SpringBoot中配置的过滤器一起使用

来自分类Dev

将dgrid / dstore的REST存储与过滤器一起使用

来自分类Dev

如何将withcolumn方法与基于多个条件的过滤器一起使用?

来自分类Dev

如何将django_tables2与过滤器一起使用?

来自分类Dev

Django-如何将分页功能与过滤器功能一起使用?

来自分类Dev

如何将UTC时区与Angular日期过滤器一起使用?

来自分类Dev

将tshark过滤器与SIP TCP跟踪一起使用

来自分类Dev

将dgrid / dstore的REST存储与过滤器一起使用

来自分类Dev

如何将REGEX与多个过滤器一起使用

来自分类Dev

将Jinja的groupby过滤器与元组一起使用

来自分类Dev

将 attr.asdict() 过滤器与可调用对象一起使用

来自分类Dev

如何将某些过滤器与恢复初始对象一起使用?

来自分类Dev

将两个 -filter_complex 命令组合在一起

来自分类Dev

同位素将搜索和按钮与初始过滤器结合在一起

来自分类Dev

将Prune过滤器与KV过滤器一起添加后-日志不会进入弹性搜索

来自分类Dev

使用AngularJS将OData过滤器的字符串串联在一起的问题

来自分类Dev

将导出的函数(与参数一起使用)设置为物料日期选择器的过滤器

来自分类Dev

如何将扫描过滤器与 boto3 一起用于 dynamodb

来自分类Dev

如何将 Slider 与附加复选框过滤器放在一起

来自分类Dev

Django-如何将多个过滤器参数组合在一起,其中参数的数量是可变的

Related 相关文章

  1. 1

    如何将NReco ffmpeg ConvertMedia与filter_complex一起使用

  2. 2

    当将`track by $ index`与过滤器一起使用时,出现错误。怎么解决呢?

  3. 3

    如何将归一化视频过滤器与FFMPEG一起使用?

  4. 4

    将范围值与过滤器一起使用

  5. 5

    将findAll PagingAndSortingRepository与过滤器一起使用

  6. 6

    是否可以将独立过滤器与列过滤器一起使用?

  7. 7

    将验证过滤器与async / await一起使用时,如何处理空的HttpContext.Current?

  8. 8

    使用ajax时,将外部过滤器与tablesorter一起使用

  9. 9

    使用ajax时,将外部过滤器与tablesorter一起使用

  10. 10

    将@Autowired与在SpringBoot中配置的过滤器一起使用

  11. 11

    将dgrid / dstore的REST存储与过滤器一起使用

  12. 12

    如何将withcolumn方法与基于多个条件的过滤器一起使用?

  13. 13

    如何将django_tables2与过滤器一起使用?

  14. 14

    Django-如何将分页功能与过滤器功能一起使用?

  15. 15

    如何将UTC时区与Angular日期过滤器一起使用?

  16. 16

    将tshark过滤器与SIP TCP跟踪一起使用

  17. 17

    将dgrid / dstore的REST存储与过滤器一起使用

  18. 18

    如何将REGEX与多个过滤器一起使用

  19. 19

    将Jinja的groupby过滤器与元组一起使用

  20. 20

    将 attr.asdict() 过滤器与可调用对象一起使用

  21. 21

    如何将某些过滤器与恢复初始对象一起使用?

  22. 22

    将两个 -filter_complex 命令组合在一起

  23. 23

    同位素将搜索和按钮与初始过滤器结合在一起

  24. 24

    将Prune过滤器与KV过滤器一起添加后-日志不会进入弹性搜索

  25. 25

    使用AngularJS将OData过滤器的字符串串联在一起的问题

  26. 26

    将导出的函数(与参数一起使用)设置为物料日期选择器的过滤器

  27. 27

    如何将扫描过滤器与 boto3 一起用于 dynamodb

  28. 28

    如何将 Slider 与附加复选框过滤器放在一起

  29. 29

    Django-如何将多个过滤器参数组合在一起,其中参数的数量是可变的

热门标签

归档