当前位置: 首页 > 知识库问答 >
问题:

如何使用ffmpeg从视频中简单地删除重复帧

郎飞航
2023-03-14

首先,我想说我不是视频操作专家,尽管我已经摆弄ffmpeg多年了(以相当有限的方式)。因此,我对人们经常使用的所有语言都不太熟悉...以及它如何影响我在操纵中试图做的事情...但我还是要试试看...

我在这里检查了几个链接,例如:ffmpeg-删除顺序重复帧

ffmpeg -hide_banner -y -f dshow ^
      -i video="screen-capture-recorder" ^
      -vf "setpts=1.00*PTS,crop=448:336:620:360" ^
      -an -r 25 -vcodec libx264 -crf 0 -qp 0 ^
      -preset ultrafast SAMPLE.flv
123456789 XXXXX 1234567 XXXXXXXXXXX 123456789 XXXXXXX
^---a---^ ^-P-^ ^--b--^ ^----Q----^ ^---c---^ ^--R--^ 

我们如何处理重复的帧?...如果“复制品”与ffmpeg不一样,但在浏览者看来或多或少是一样的,那么我们的方法如何改变呢?

如果我们简单地删除重复的帧,视频的“节奏”就会丢失,过去需要5秒钟才能显示的内容,现在只需要几秒钟,就会产生非常剧烈、不自然的运动,尽管视频中没有重复的图像。这似乎可以使用带有'mp_decimate'选项的ffmpeg实现,即:-

     ffmpeg -i SAMPLE.flv ^                      ... (i)
        -r 25 ^
        -vf mpdecimate,setpts=N/FRAME_RATE/TB DEC_SAMPLE.mp4

我引用的引用使用了一个命令,该命令显示当“mp_decimate”认为哪些帧是“相同的”时,它将删除哪些帧,即:-

     ffmpeg -i SAMPLE.flv ^                      ... (ii)
        -vf mpdecimate ^
        -loglevel debug -f null -
    null

我一直试图在Win7-SP1和Puppy Linux Slacko 5.6.4下使用ffmpeg N-79824-gcaee88d(另一个版本我不记得了)来实现所有这些。

多谢你提供任何线索。

共有1个答案

龙正初
2023-03-14

我在这个问题上做了一些工作...并找到了以下很好的作品...

似乎输入视频必须具有“恒定的帧率”才能正常工作,所以第一个命令是:-

ffmpeg -i test.mp4 ^
       -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" ^
       -vsync cfr test01.mp4

然后我需要查看每个帧的“分数”。此清单由以下机构制作:-

ffmpeg -i test01.mp4 ^
       -vf select="'gte(scene,0)',metadata=print" -f null - 
ffmpeg -i test01.mp4 ^
       -vf "select='if(gt(scene,0.021187),st(1,t),lte(t-ld(1),0.20))', 
                    setpts=N/FRAME_RATE/TB" output.mp4

编辑:这样做的另一个好处是,文件的持续时间更短(显然),它们的大小也更小。例如,一个运行时间为00:07:14、大小为22MB的示例视频转到了00:05:35和11MB。

 类似资料:
  • 我有一堆从Youtube下载的视频,我想从他们中提取帧。我使用的当前命令是: 但是我还想设置-r和-t选项。我想要的fps是每个视频的fps,持续时间是他们的持续时间。我知道如果我不设置-r选项,默认值是25 fps。

  • 问题内容: 加入主表时,我的视图工作正常: 但是我需要添加以下联接: 尽管我添加了,但仍然得到了“重复”行。我说“重复”是因为第二行具有不同的值。 但是,如果将更改为,则会丢失具有这些“重复”行的客户端的所有行。 我究竟做错了什么?如何从视图中删除这些“重复的”行? 笔记: 此问题在这种情况下不适用: 如何删除重复的行? 问题答案: 如果行中有任何不同的列,DISTINCT不会为您提供帮助。显然,

  • 我有一个视频,其中有多个音频。有一些对话和一些不同的配乐。但是,当我使用ffmpeg-i 1时。mp4仅显示2个流。 Stream#0:0(und): Video: h264(High)(avc1/0x31637661), yuv420p(tv, bt709),1920x1080[SAR 1:1 DAR 16:9],2964 kb/s,24 fps,24 tbr,90ktbn,48 tbc(默认)

  • 这行工作良好,但我想创建一个视频文件从图像在另一个文件夹。“我的文件夹”中的映像名称为: 我如何从不同的文件夹输入图像文件?示例: 我尝试了这个命令,但是只生成了第一个图像(img001.jpg)的视频。

  • 我得到了 致命信号11(SIGSEGV),代码1,tid 5823中的故障地址0x 5(e . mypc . video cut) 当我试着调试应用程序时,当我读到这一行时崩溃了: 视频修剪屏幕: