ffmpeg说“从另一个进程管道时必须指定至少一个输出文件”

时间:2013-12-26 10:39:32

标签: ffmpeg

要强制ffmpeg只读取,解码和缩放一次以降低CPU使用率,我将这些步骤放在一个ffmpeg进程中,并将结果传送到执行编码的另一个ffmpeg进程。

这使整体处理时间缩短了15-20%。

INPUT_STREAM="ffmpeg -i $INPUT_FILE -vf scale=720:-1,crop=720:400 -threads auto -f yuv4mpegpipe -"

$INPUT_STREAM | ffmpeg -y -f yuv4mpegpipe -i - \
$AUDIO_OPTIONS_P2 $VIDEO_OPTIONS_P2 -b:v 250k -threads auto out-250.mp4 \
$AUDIO_OPTIONS_P2 $VIDEO_OPTIONS_P2 -b:v 500k -threads auto out-500.mp4 \
$AUDIO_OPTIONS_P2 $VIDEO_OPTIONS_P2 -b:v 700k -threads auto out-700.mp4

然后我尝试了下面的语法:

 ffmpeg -i c:\sample.mp4 -threads auto -f yuv4mpegpipe - |  ffmpeg -y -f yuv4mpegpipe -i -vcodec libx264 -b:v 250k -threads auto c:\out-250.mp4 -vcodec libx264 -b:v 260k -threads auto c:\out-260.mp4

...但出现此错误:

  

必须至少指定一个输出文件

但是我已经指定了输出文件:C:\out-260.mp4。它仍然不起作用

怎么了?

1 个答案:

答案 0 :(得分:1)

 ffmpeg -y -f yuv4mpegpipe -i -vcodec …

您没有指定任何输入文件。要从标准输入读取,请使用-

ffmpeg -y -f yuv4mpegpipe -i - -vcodec …