基于这篇文章,似乎可以使用FFMPEG来检测视频中的场景变化:http: //www.luckydinosaur.com/u/ffmpeg-scene-change-detector
现在我有一个显示书籍文本的视频,当说出文本(单词或句子)时,它会突出显示.像这本有声读物的东西:https://youtu.be/lA7L6ZNVKjc
我需要知道文本突出显示时的时间戳(因此场景更改),这将允许我在我的YouTube视频上添加时间戳标签,这样听众就可以更轻松地浏览有声读物.
执行此操作的神奇命令行是什么?
非常感谢你!
首先,尽管我已经多年(以相当有限的方式)对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提取视频“片段”以供以后重新组合的情况下重新组织视频呢? …