FFMPEG:如何更快地拍摄3000张快照?

FFMPEG:如何更快地拍摄3000张快照?,ffmpeg,Ffmpeg,我有一段200分钟长的视频。 还获得了将要拍摄的每个快照的时间戳。 我尝试使用ffmpeg通过以下命令拍摄快照。 但是,它非常慢,每个快照大约需要10秒。 有什么办法可以加快速度吗?谢谢 操作系统:win10;个人电脑:英特尔NUC8i5 ffmpeg-i 1.mp4-ss 00:00:04-vframes 1 000004.jpg ffmpeg-i 1.mp4-ss 00:00:08-vframes 1 000008.jpg ffmpeg-i 1.mp4-ss 00:00:12-vframes

我有一段200分钟长的视频。 还获得了将要拍摄的每个快照的时间戳。 我尝试使用ffmpeg通过以下命令拍摄快照。 但是,它非常慢,每个快照大约需要10秒。 有什么办法可以加快速度吗?谢谢

操作系统:win10;个人电脑:英特尔NUC8i5

ffmpeg-i 1.mp4-ss 00:00:04-vframes 1 000004.jpg ffmpeg-i 1.mp4-ss 00:00:08-vframes 1 000008.jpg ffmpeg-i 1.mp4-ss 00:00:12-vframes 1 000012.jpg ffmpeg-i 1.mp4-ss 00:00:16-vframes 1 000016.jpg ffmpeg-i 1.mp4-ss 00:00:17-vframes 1 000017.jpg ffmpeg-i 1.mp4-ss 00:00:20-vframes 1 000020.jpg ffmpeg-i 1.mp4-ss 00:00:24-vframes 1 000024.jpg ffmpeg-i 1.mp4-ss 00:00:26-vframes 1 000026.jpg ffmpeg-i 1.mp4-ss 00:00:28-vframes 1 000028.jpg ffmpeg-i 1.mp4-ss 00:00:32-vframes 1 000032.jpg ffmpeg-i 1.mp4-ss 00:00:36-vframes 1 000036.jpg ffmpeg-i 1.mp4-ss 00:00:38-vframes 1 000038.jpg ffmpeg-i 1.mp4-ss 00:00:43-vframes 1 000043.jpg


尝试一次分割200分钟的视频,然后逐个加载。将整个视频加载到ram非常昂贵。尝试使用小视频,看看它将如何改进

如果时间戳的间隔不规则,如示例中所示,您可以使用选择过滤器:

ffmpeg-i1.mp4-filter:v\ 选择='ltprev_pts*TB\,4*gtepts*TB\,4\ +ltprev_pts*TB\,12*gtepts*TB\,12\ +ltprev_pts*TB\,17*gtepts*TB\,17\ +ltprev_pts*TB\,28*gtepts*TB\,28\ +ltprev_pts*TB\,43*gtepts*TB\,43'\ -vsync退出/%03d.jpg
这将捕获指定时间戳处的帧,如果在该精确时间戳处没有帧,它将捕获以下帧。

我使用VLC解决了这个问题。 基本思想是使用VLC的http接口控制VLC跳转到特定的时间戳并拍摄快照。 RAM的消耗非常低,速度更快。 拍摄3800张快照大约需要16分钟

下面的代码是自动热键

#Include, VLC_HTTP2.ahk
 
Loop, read, %A_ScriptDir%\TimeStamps.txt
{
    VLC_JumpTime:=A_LoopReadLine
    VLCHTTP2_Jumpto(VLC_JumpTime)
    Sleep, 100
    VLCHTTP2_Snapshot()
}
return

VLCHTTP2_Jumpto(VLC_JumpToTime)
{
    VLC_CurrentTime:=VLCHTTP2_TimeSeconds()
    SeekBackwardTime:=VLC_CurrentTime-VLC_JumpToTime
    if SeekBackwardTime >0    
        VLCHTTP2_JumpBackward(SeekBackwardTime) 
    else if SeekBackwardTime <0
    {
        SeekForwardTime:=-SeekBackwardTime
        VLCHTTP2_JumpForward(SeekForwardTime)
    }
}

时间戳的间隔不规则。我想出了一个解决办法。谢谢