我可以使用以下命令使用 ffmpeg 从视频中提取图像,并将其保存到文件系统:
... | ffmpeg -i - -f image2 'img-%03d.png'
我想将这些图像通过管道传输到另一个应用程序,而不是将它们保存到文件系统 - 如何在管道中分离它们并不重要,因为它将是我自己控制的 NodeJS 脚本。
以下操作无效:
... | ffmpeg -i - -f image2 pipe: | ...
错误
[image2 @ 0xe1cfc0] Could not get frame filename number 2 from pattern 'pipe:' (either set updatefirst or use a pattern like %03d within the filename pattern)
av_interleaved_write_frame(): Invalid argument
有没有办法使用 ffmpeg 将从视频中提取的图像输出,而不使用文件系统?
答案1
就在这里!
添加参数-f image2pipe
,并将输出文件名指定为单个连字符(-
,在这种情况下它的意思是stdout
),并将输入文件名也指定为单个连字符(-i -
,在这种情况下它的意思是stdin
)并明确指定输出格式(例如对于 png: -c:v png
),这是一个完整的例子:
ffmpeg -i - -ss 00:00:3 -s 650x390 -vframes 1 -c:v png -f image2pipe -