我想知道我们是否可以将编码操作的输出提供给" filter_complex"使用如下命令:
ffmpeg -i input.mp4 -c:v libx264 -s:v 1920x1080 -b:v 10000k "[encoder-output-1]" \
-c:v libx264 -s:v 1280x720 -b:v 5000k "[encoder-output-2]" \
-c:v libx264 -s:v 640x360 -b:v 2000k "[encoder-output-3]" \
-filter_complex "[encoder-output-1][0:v]psnr" -f null - \
-filter_complex "[encoder-output-2][0:v]psnr" -f null -\
-filter_complex "[encoder-output-3][0:v]psnr" -f null -
如果我们可以这样做,应该如何命名编码器的输出垫,以便可以在filter_complex中引用/映射它 如果没有,请让我知道实现这样的最简单方法是什么。
注意:
答案 0 :(得分:0)
过滤器需要解码帧,因此编码输出不能直接使用。你可以将它传递给另一个ffmpeg进程。
ffmpeg -i input.mp4 -map 0:v -map 0:v -map 0:v
-c:v libx264 -b:v:0 10000k -b:v:1 5000k -b:v:2 2000k -f nut - |
ffmpeg -i input.mp4 -f nut -i -
-filter_complex "[1:v:0][0:v]psnr;[1:v:1][0:v]psnr;[1:v:2][0:v]psnr" -f null -
要避免两次解码视频,请使用
ffmpeg -i input.mp4 -map 0:v -map 0:v -map 0:v -map 0:v
-c:v libx264 -c:v:3 rawvideo -b:v:0 10000k -b:v:1 5000k -b:v:2 2000k -f nut - |
ffmpeg -f nut -i -
-filter_complex "[1:v:0][1:v:3]psnr;[1:v:1][1:v:3]psnr;[1:v:2][1:v:3]psnr" -f null -