20

我知道 ffmpeg 能够stdin从磁盘读取数据,而不是使用ffmpeg -i -. 是否支持所有文件格式?如果不是,是否有支持哪些文件格式的列表?

4

1 回答 1

21

您需要运行ffmpeg -protocols以确定pipe您的 ffmpeg 版本是否支持协议(从标准输入和标准输出读取和写入),然后ffmpeg -formats查看支持的格式列表。在下面的摘录中,您将看到输出管道上的注释,它必须可用于某些协议。对于输入协议,它没有这样的限制。

来自man ffmpeg-protocols

协议

协议是 FFmpeg 中的配置元素,允许访问需要使用特定协议的资源。

当您配置您的 FFmpeg 构建时,所有支持的协议都默认启用。您可以使用配置选项列出所有可用的选项--list-protocols

您可以使用配置选项禁用所有协议 --disable-protocols,并使用该选项选择性地启用协议--enable-protocol=PROTOCOL,或者您可以使用该选项禁用特定协议--disable-protocol=PROTOCOL

ff* 工具的选项-protocols将显示支持的协议列表。

以下是对当前可用协议的描述。... 管道
UNIX 管道访问协议。

允许从 UNIX 管道读取和写入。

接受的语法是:

       pipe:[<number>]

number 是与管道的文件描述符对应的数字(例如,0 表示标准输入,1 表示标准输出,2 表示标准错误)。如果未指定 number,默认情况下,stdout 文件描述符将用于写入,stdin 用于读取。

请注意,某些格式(通常是 MOV)要求输出协议是可搜索的,因此它们会因管道输出协议而失败。

于 2012-10-21T17:16:27.117 回答