小编Ske*_*eve的帖子

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

首先,尽管我已经多年(以相当有限的方式)对ffmpeg情有独钟,但我还是以我不是视频操作专家来开头。因此,我不太喜欢人们经常使用的所有语言 ...以及它如何影响我在操作中试图做的事情...但是无论如何我还是会尝试的...

我在这里检查了一些链接,例如: ffmpeg-依次删除重复的帧

...但是内容并没有真正帮助我。

我有几百个使用ffmpeg和其他类似应用程序在Windows和Linux下创建的视频剪辑。但是,它们在视频显示不动的情况下存在时间问题。

例如,假设我们有一个网站,该网站将实时视频流式传输到Web浏览器中的Flash视频播放器/插件中。例如,在这种情况下,我们谈论的是交通摄像头视频流。

运行ffmpeg的一个实例正在将(Windows)桌面的某个区域捕获到视频文件中,即:

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
Run Code Online (Sandbox Code Playgroud)

假设正在捕获的实际“显示”看起来像这样:

123456789 XXXXX 1234567 XXXXXXXXXXX 123456789 XXXXXXX
^---a---^ ^-P-^ ^--b--^ ^----Q----^ ^---c---^ ^--R--^ 
Run Code Online (Sandbox Code Playgroud)

...其中每个字符位置代表一帧(序列)。由于互联网连接状况不佳,可以长时间显示“单个框架”(“ X”字符是前一个框架的(几乎)精确副本)。因此,这意味着我们捕获的视频片段中的图像根本没有变化(无论如何用裸眼)。

我们该如何处理重复的帧?...并且如果ffmpeg的“重复项”不相同,但查看者看起来或多或少相同,我们的方法将如何改变?

如果我们简单地删除重复的帧,则视频的“步调”将丢失,以前需要花费5秒钟才能显示的视频现在只需花费一秒钟的时间,从而产生了非常不自然的运动,尽管视频中没有重复的图像。使用ffmpeg的'mp_decimate'选项似乎可以实现,即:

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

我引用的参考使用一条命令,该命令显示当“ mp_decimate”帧被视为“相同”时将删除哪些帧,即:

     ffmpeg -i SAMPLE.flv ^                      ... (ii)
        -vf mpdecimate ^
        -loglevel debug -f null -
Run Code Online (Sandbox Code Playgroud)

...但是知道了(复杂格式的)信息之后,如何在不执行多次ffmpeg提取视频“片段”以供以后重新组合的情况下重新组织视频呢? …

linux windows video ffmpeg duplicates

4
推荐指数
2
解决办法
5336
查看次数

标签 统计

duplicates ×1

ffmpeg ×1

linux ×1

video ×1

windows ×1