向 运行 ffmpeg 实例发送搜索命令
Send seek command to running ffmpeg instance
我已经使用 ffmpeg 库创建了一个视频播放器,但想知道是否可以使用 ffmpeg.exe 和管道,特别是搜索部分。是否可以将搜索命令发送到 运行 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
所以基本上没有。
实际上搜索命令是一种,记录在ffmpeg documentation:
Both movie
and amovie
support the following commands:
seek
Perform seek using "av_seek_frame". The syntax is: seek stream_index|timestamp|flags
stream_index
: If stream_index is -1, a default stream is selected, and timestamp is automatically converted from AV_TIME_BASE units to the stream specific time_base.
timestamp
: Timestamp in AVStream.time_base units or, if no stream is specified, in AV_TIME_BASE units.
flags
: Flags which select direction and seeking mode.
get_duration
Get movie duration in AV_TIME_BASE units.
我试过运行这样的命令:
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
网上关于seek操作的资料很少,但我设法找到了这个:http://ffmpeg.org/pipermail/ffmpeg-devel/2013-September/148070.html
这里他说:
the "lavfi" demuxer has its own private filtergraph and provides no
means (that i know of) to inject command from the outside of this
filtergraph into it.
所以所有这些都表明可能会或可能不会在 运行 ffmpeg 实例上进行搜索。至少那些可能已经成功的人已经知道如何去做了。
对于那些想要发送过滤器参数的人
首先如 docs 中那样获取特定的过滤器命令:
ffmpeg -h filter=filtername
注意 : 只有标有 T 的命令才能在运行时运行。
下一个 press c
然后 :
all -1 your_command value
我已经使用 ffmpeg 库创建了一个视频播放器,但想知道是否可以使用 ffmpeg.exe 和管道,特别是搜索部分。是否可以将搜索命令发送到 运行 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
所以基本上没有。
实际上搜索命令是一种,记录在ffmpeg documentation:
Both
movie
andamovie
support the following commands:
seek
Perform seek using "av_seek_frame". The syntax is:seek stream_index|timestamp|flags
stream_index
: If stream_index is -1, a default stream is selected, and timestamp is automatically converted from AV_TIME_BASE units to the stream specific time_base.timestamp
: Timestamp in AVStream.time_base units or, if no stream is specified, in AV_TIME_BASE units.flags
: Flags which select direction and seeking mode.
get_duration
Get movie duration in AV_TIME_BASE units.
我试过运行这样的命令:
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
网上关于seek操作的资料很少,但我设法找到了这个:http://ffmpeg.org/pipermail/ffmpeg-devel/2013-September/148070.html
这里他说:
the "lavfi" demuxer has its own private filtergraph and provides no means (that i know of) to inject command from the outside of this filtergraph into it.
所以所有这些都表明可能会或可能不会在 运行 ffmpeg 实例上进行搜索。至少那些可能已经成功的人已经知道如何去做了。
对于那些想要发送过滤器参数的人
首先如 docs 中那样获取特定的过滤器命令:
ffmpeg -h filter=filtername
注意 : 只有标有 T 的命令才能在运行时运行。
下一个 press c
然后 :
all -1 your_command value