我使用ffmpeg库创建了一个视频播放器,但想知道使用ffmpeg.exe和管道是否可行,特别是搜索部分。是否可以将seek命令发送到正在运行的ffmpeg.exe实例?这样的命令在帮助中不存在,但它确实显示了'c'命令,该命令可用于向过滤器发送命令。我找不到任何进一步的文档,但是如何以这种方式处理过滤器,所有示例都假设命令行参数,也不能使用过滤器来搜索视频。
答案 0 :(得分:2)
实际上,搜索命令是ffmpeg documentation中记录的种:
movie
和amovie
都支持以下命令:
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
所以基本上没有。