发送seek命令以运行ffmpeg实例

时间:2015-10-19 13:09:30

标签: windows ffmpeg console seek

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

2 个答案:

答案 0 :(得分:2)

实际上,搜索命令是ffmpeg documentation中记录的

movieamovie都支持以下命令:

  • seek使用“ av_seek_frame”执行搜索。语法为:seek stream_index|timestamp|flags

    • stream_index:如果stream_index为-1,则选择默认流,并且时间戳会自动从AV_TIME_BASE单位转换为特定于流的time_base。
    • timestamp:以AVStream.time_base为单位的时间戳;如果未指定流,则以AV_TIME_BASE为单位的时间戳。
    • flags:用于选择方向和搜寻模式的标志。
  • get_duration以AV_TIME_BASE为单位获取电影时长。

我尝试运行这样的命令:

ffmpeg -f lavfi -i 'movie=filename=myvid.mp4' -codec:v libx264 -an -f mpegts - > /dev/null

然后我按c并输入命令all -1 seek 0|3|0,但是无论我尝试使用哪种组合,我都会遇到相同的错误Command reply for stream 0: ret:-78 res:

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

ffmpeg -i myvid.mp4 -codec:v libx264 -an -f mpegts - > /dev/null

关于互联网上搜索操作的信息很少,但是我设法找到了这个信息:http://ffmpeg.org/pipermail/ffmpeg-devel/2013-September/148070.html

他在这里说:

“ lavfi”解复用器具有自己的专用滤镜,不提供 意味着(我知道)从外部注入命令 将其过滤。

因此,所有这些都表明在正在运行的ffmpeg实例上可能会或可能不会找到。至少那些成功的人会自己去做。

答案 1 :(得分:-1)

如果你打了'?'当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

所以基本上没有。