【发布时间】:2011-11-05 19:40:14
【问题描述】:
Matlab 有以下制作 avi 格式电影的指南。我的目标是能够通过 powerpoint 播放演示文稿中的视频。
nFrames = 20;
% Preallocate movie structure.
mov(1:nFrames) = struct('cdata', [],...
'colormap', []);
% Create movie.
Z = peaks; surf(Z);
axis tight
set(gca,'nextplot','replacechildren');
for k = 1:nFrames
surf(sin(2*pi*k/20)*Z,Z)
mov(k) = getframe(gcf);
end
% Create AVI file.
movie2avi(mov, 'myPeaks.avi', 'compression', 'None');
我了解此示例,并且我不应该将压缩文件加载到 PowerPoint 中。但是我不明白如何使用 struct 正确预分配我的内存。
【问题讨论】:
-
您可能确实希望压缩视频,因为未压缩的视频会占用大量磁盘空间。您只需要确保选择您的 PowerPoint 版本支持的容器格式(例如 avi)和压缩方法。预分配应该是可选的,只会使生成电影文件的过程稍微快一些。您发布的代码看起来只是预分配了一个指针数组,而不是预分配了保存电影所需的所有内存,因此它的存在可能更多是为了抑制代码样式警告而不是加快速度。
-
感谢您的帮助。您是否知道如何在 addframe 命令中使用句柄,以便在我不在时 getframe 不会保存我的屏幕保护程序图像?
标签: matlab struct frames movie