我有一个由电影帧组成的4D numpy数组。我想要一个函数,以给定的帧速率将它们写入电影中。在我的操作系统上,我已经安装了FFMPEG,并且从这些答案(如我所看到的)中,最有效的方法是通过管道实现。
然而,我对使用管道几乎没有经验,上面链接中的解释对我来说很难理解。此外,很少有答案实际上使用管道,而唯一使用管道的答案使用mencoder而不是FFMPEG。我对FFMPEG的经验相对较少,因此不知道如何修改来自mencoder答案的命令字符串以使其在FFMPEG中运行。 我想要什么: 一个以下形式的函数:
animate_np_array(4d_array,framerate)- >output.mp4(或其他视频编解码器)
采用管道的方式将帧一个接一个地发送到FFMPEG,并且可以将其复制粘贴到我的现有代码中。
此外,这个函数绝不能实际绘制任何帧,因为调用matplotlib.imshow()函数(如我通常看到的)会严重减慢速度。
然而,我对使用管道几乎没有经验,上面链接中的解释对我来说很难理解。此外,很少有答案实际上使用管道,而唯一使用管道的答案使用mencoder而不是FFMPEG。我对FFMPEG的经验相对较少,因此不知道如何修改来自mencoder答案的命令字符串以使其在FFMPEG中运行。 我想要什么: 一个以下形式的函数:
animate_np_array(4d_array,framerate)- >output.mp4(或其他视频编解码器)
采用管道的方式将帧一个接一个地发送到FFMPEG,并且可以将其复制粘贴到我的现有代码中。
此外,这个函数绝不能实际绘制任何帧,因为调用matplotlib.imshow()函数(如我通常看到的)会严重减慢速度。
imageio
和imageio-ffmpeg
两个模块。请执行以下命令进行安装:pip install imageio
,pip install imageio-ffmpeg
。 - Eduardo Pignatelli