如何将 ffmpeg 输出通过管道传输到 ImageMagick 的转换工具?

How to pipe ffmpeg output to ImageMagick's convert tool?

经过大量搜索后,我想到了将帧从 ffmpeg 传输到 imagemagick 的转换工具。

ffmpeg -y -ss 00:02:01 -i ...\pano.mp4 -frames:v 1 -f png - | convert -sharpen 0x1 ...\pano_00_02_01.png

我不断收到此错误消息。

[NULL @ 000002e6cd1e00c0] Requested output format 'png' is not a suitable output format
pipe:: Invalid argument

我已经使用 ffmpeg -format 检查了对 png 的支持,并将其列为 png_pipe

我正在使用 ffmpeg 版本 4.3。1-2020-11-19-full_build https://www.gyan.dev/ffmpeg/builds/

ffmpeg 中没有名为 png 的混合器(参见 ffmpeg -muxers)。要通过管道传输单个图像,请将 -f png 替换为 -c:v png -f image2:

ffmpeg -y -ss 00:02:01 -i pano.mp4 -frames:v 1 -c:v png -f image2 - | convert - -sharpen 0x1 pano_00_02_01.png
  • 如果您对此进行多次迭代,请考虑将 -c:v png 更改为 -c:v pam,因为它速度更快(无需压缩)并且支持大多数相同的像素格式.

  • 我还在 convert 命令中添加了 - 作为管道输入。

  • 最初我建议 -f image2pipe 因为它应该与管道单图像和序列一起使用,因此对于更一般的答案会更灵活。它在 Linux 中有效,但在 Windows 中,OP 出现错误 av_interleaved_write_frame(): Invalid argument Error writing trailer of pipe:: Invalid argument。我不知道为什么(不是 Windows 用户)。