我正在使用VideoWriter
制作一系列情节中的视频。它的工作原理很好(按照this SO answer中的建议)。但是,似乎Matlab尝试在完成动画后将所有3000帧渲染到屏幕上,这会导致我的窗口管理器发生故障,计算机会冻结几分钟。
有没有办法将视频帧直接写入磁盘,绕过屏幕渲染?似乎getframe
中的writeVideo(vid, getframe(f))
必然会使图形可见;有没有办法避免这种情况?
答案 0 :(得分:2)
如果你只有3000帧,你可以将它们保存为图像,并使用像ffmpeg这样的图像制作视频。请记住对图像使用无损格式,例如PNG。
答案 1 :(得分:1)
请勿使用get frame,但请使用 im2frame
writerObj = VideoWriter('awesomeMovie.mp4', 'MPEG-4');
open(writerObj);
masterFrame = rand(10,10,3);
f = im2frame(masterFrame);
writeVideo(writerObj,f);
答案 2 :(得分:0)
使用avifile和addframe将允许您创建视频而不将其显示在屏幕上。这似乎是一种较慢的做事方式。
以下是基于推荐帖子的示例:
mov = avifile('myPeaks2.avi','fps',15);
set(gcf, 'visible', 'off')
for k=1:20
surf(sin(2*pi*k/20)*Z,Z);
mov = addframe(mov, gcf);
end
mov = close(mov);
当然,这种方法已被弃用,因此最终您将无法使用它。