FFmpeg:哪些文件格式支持stdin使用?

20

我知道ffmpeg可以从 stdin 读取数据,而不是使用 ffmpeg -i - 从磁盘读取。这对所有文件格式都支持吗?如果不支持,是否有一个列出支持哪些文件格式的列表?


你怎么知道的?这在文档中有吗? - lmat - Reinstate Monica
1个回答

21
你需要运行ffmpeg -protocols来确定你的版本的ffmpeg是否支持pipe协议(从标准输入和标准输出读写),然后运行ffmpeg -formats以查看支持的格式列表。在下面的摘录中,你将会看到有关输出管道的注释,它必须对某些协议进行可定位性限制。对于输入协议,它没有这样的限制。
man ffmpeg-protocols: PROTOCOLS 协议是FFmpeg中的配置元素,允许访问需要使用特定协议的资源。
当你配置你的FFmpeg构建时,默认情况下启用了所有支持的协议。你可以使用配置选项--list-protocols列出所有可用的协议。
你可以使用配置选项--disable-protocols禁用所有协议,并使用选项--enable-protocol=PROTOCOL选择性地启用一个协议,或者使用选项--disable-protocol=PROTOCOL禁用特定协议。
ff* 工具的选项-protocols将显示支持的协议列表。
以下是当前可用协议的描述。... pipe
UNIX管道访问协议。
允许从UNIX管道中读取和写入。
接受的语法是:
       pipe:[<number>]

number是文件描述符对应的数字(例如stdin为0,stdout为1,stderr为2)。如果未指定number,则默认使用stdout文件描述符进行写操作,使用stdin进行读操作。

请注意,某些格式(通常为MOV)要求输出协议可寻址,因此它们将无法使用管道输出协议。


谢谢,那完美地符合了我的要求 ;) - The Wavelength
17
在我使用的版本为1.2.1的ffmpeg中,查询支持协议的命令为 ffmpeg -protocols - Kevin Bullaughey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接