【发布时间】:2017-08-21 22:47:22
【问题描述】:
我有一些时间序列数据想要制作成电影。数据可以是 2D(约 500x10000)或 3D(500x500x10000)。对于 2D 数据,电影帧是使用 plot 的简单线图,对于 3D 数据,我们可以使用 surf、imagesc、contour 等。然后我们在 MATLAB 中使用这些帧创建一个视频文件,然后使用ffmpeg压缩视频文件。
为了快速完成,我们会尽量不要渲染所有要显示的图像,也不要将数据保存到磁盘然后在此过程中再次读取。通常,人们会使用 getframe 或 VideoWriter 在 MATLAB 中创建电影,但如果尝试不将数字显示到屏幕上,它们似乎很容易变得棘手。有些人甚至建议绘制隐藏图形,然后将它们作为图像保存到磁盘作为.png 文件,然后使用ffmpeg 压缩它们(例如使用x265 编码器到.mp4)。但是,在我的 iMac 中保存imagesc 的输出第一次需要 3.5 秒,然后是 0.5 秒。我还发现它不够快,无法将这么多文件保存到磁盘上,只是要求ffmpeg 再次读取它们。可以hardcopythis 建议的数据,但我不确定无论绘图方法如何(例如plot、surf 等)它是否有效,以及如何将数据传输到ffmpeg使用最少的磁盘访问。
【问题讨论】:
标签: matlab animation video ffmpeg