Windows 向正在运行的ffmpeg实例发送seek命令

Windows 向正在运行的ffmpeg实例发送seek命令,windows,ffmpeg,console,seek,Windows,Ffmpeg,Console,Seek,我已经使用ffmpeg库创建了一个视频播放器,但我想知道是否可以使用ffmpeg.exe和管道,特别是搜索部分来创建视频播放器。是否可以将seek命令发送到正在运行的ffmpeg.exe实例?此类命令不在帮助中,但它确实显示了可用于向筛选器发送命令的“c”命令。但是,我找不到任何关于如何以这种方式处理过滤器的进一步文档,所有示例都假定命令行参数,也找不到是否可以使用过滤器在视频中搜索的文档。如果在ffmpeg运行时点击“?”,您将获得所有可用选项 从我的本地安装版本起: key funct

我已经使用ffmpeg库创建了一个视频播放器,但我想知道是否可以使用ffmpeg.exe和管道,特别是搜索部分来创建视频播放器。是否可以将seek命令发送到正在运行的ffmpeg.exe实例?此类命令不在帮助中,但它确实显示了可用于向筛选器发送命令的“c”命令。但是,我找不到任何关于如何以这种方式处理过滤器的进一步文档,所有示例都假定命令行参数,也找不到是否可以使用过滤器在视频中搜索的文档。

如果在ffmpeg运行时点击“?”,您将获得所有可用选项

从我的本地安装版本起:

key    function
?      show this help
+      increase verbosity
-      decrease verbosity
c      Send command to first matching filter supporting it
C      Send/Que command to all matching filters
D      cycle through available debug modes
h      dump packets/hex press to cycle through the 3 states
q      quit
s      Show QP histogram

因此,基本上不是这样。

实际上,seek命令记录在:

movie
amovie
都支持以下命令:

  • seek
    使用“av_seek_帧”执行搜索。语法是:
    seek stream|u index | timestamp | flags

    • stream\u index
      :如果stream\u index为-1,则选择默认流,时间戳将自动从AV\u时间基本单位转换为流特定时间基本单位
    • 时间戳
      :时间戳以AVStream.time_为基本单位,如果未指定流,则以AV_time_为基本单位
    • 标志
      :选择方向和搜索模式的标志
  • get_duration
    get movie duration(以AV_时间为基本单位)

我已尝试运行如下命令:

ffmpeg-f lavfi-i'movie=filename=myvid.mp4'-codec:v libx264-an-f mpegts->/dev/null
然后我按下
c
并输入命令
all-1 seek 0 | 3 | 0
,但无论我尝试哪种组合,我都会返回流0:ret:-78 res:

我也尝试过此命令,但在尝试查找时,它会给出相同的错误:

ffmpeg-i myvid.mp4-codec:v libx264-an-f mpegts->/dev/null
互联网上关于seek操作的信息很少,但我设法找到了以下信息:

他在这里说:

“lavfi”解复用器有自己的专用filtergraph,不提供 意味着(据我所知)从外部注入命令 把它过滤掉


因此,所有这些都表明,在正在运行的ffmpeg实例上搜索可能是可能的,也可能是不可能的。至少那些可能已经成功地做到这一点的人已经学会了如何自己去做。

谢谢,我知道,这就是为什么我在问题中已经提到了这一点。这是“c”命令,我不确定什么是可能的。可以询问ffmpeg用户ML(或检查源代码):)是的,这将是我的下一步。谢谢。有什么解决办法吗?@Harry没有……谢谢。虽然这不是我问题的真正解决办法,但这可能是我得到的最好答案,它肯定表明了我的努力。