我有一个 4D numpy 电影帧数组。我正在寻找一个函数以给定的帧速率将它们写入电影。我的操作系统上安装了 FFMPEG,并且从这些答案中我可以看出 https://stackoverflow.com/questions/4092927/generating-movie-from-python-without-saving-individual-frames-to-files,最有效的方法是通过管道。
不过,我有经验很少使用管道,上面链接中的解释对我来说毫无意义。此外,很少有答案似乎实际上实现了管道,并且那个做的人 http://vokicodder.blogspot.com/2011/02/numpy-arrays-to-video.html使用 mencoder,而不是 FFMPEG。我对 FFMPEG 相对缺乏经验,因此不确定如何修改 mencoder 答案中的命令字符串以使其在 FFMPEG 中工作。
我想要什么:
具有以下形式的函数:
animate_np_array(4d_array, 帧速率) -> output.mp4 (或其他视频编解码器)
它实现了将帧一个接一个发送到 FFMPEG 的管道,我可以将其复制粘贴到我现有的代码中。
此外,绝对有必要该函数永远不会真正绘制任何帧,因为调用 matplotlib.imshow() 函数(正如我最常看到的那样)会大大减慢速度。
The 图像IO接口 http://imageio.readthedocs.io/en/latest/userapi.html提供了一种非常简单的方法来做到这一点:
import imageio
imageio.mimwrite('output_filename.mp4', np_array , fps = [an int])
虽然我不确定这是否使用管道,但它的速度非常快。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)