gpt4 book ai didi

bash - 如何使用 FFMPEG 的输出作为可执行文件的命令行参数

转载 作者:行者123 更新时间:2023-12-04 23:08:41 26 4
gpt4 key购买 nike

我有一个 .wmv 文件,我想将其转换为 .wav 文件,我正在使用 ffmpeg,命令如下:

ffmpeg -i file.wmv -ar 8000 -sample_fmt s16 -f wav pipe:1

pipe:1 在 STDOUT 中输出输出波形文件。我想从 STDOUT 捕获该波形文件并将其作为命令行参数传递给我的名为 foo 的可执行文件。我想即时进行从 wmv 到 wav 的转换,而不是保存 .wav 文件。
我尝试过的事情如下,但它们似乎都不起作用:
./foo $(ffmpeg -i file.wmv -ar 8000 -sample_fmt s16 -f wav pipe:1)

./foo $(<(ffmpeg -i file.wmv -ar 8000 -sample_fmt s16 -f wav pipe:1))

ffmpeg -i file.wmv -ar 8000 -sample_fmt s16 -f wav pipe:1 | xargs ./foo

ffmpeg -i file.wmv -ar 8000 -sample_fmt s16 -f wav - | ./foo -

最佳答案

我认为您的第二次尝试很接近:

./foo <(ffmpeg ...)

进程替换扩展为一个名称, foo可以像任何其他文件一样打开。这个"file"的内容是 ffmpeg 的输出。 .

但是请注意,如果 foo需要一个可查找的文件; ffmpeg 的输出仍然是一个不在内存中缓冲的流。如果 foo期望能够在文件中来回移动,您需要使用实际文件。 ( ffmpeg ... > tmp; ./foo tmp)

在第一种情况下,您尝试将输出流的内容作为参数传递,类似于 ./foo "$(cat some.mp4)" .

在第三种情况下,您正在处理 ffmpeg 的输出。作为文件名。

如果 foo,第四种情况将起作用。写来理解 -作为标准输入的替代名称。这是一个程序约定,而不是 shell 提供的东西。

关于bash - 如何使用 FFMPEG 的输出作为可执行文件的命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42402663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com