我正在学习matlab,我用matlab制作了一个动画情节;现在我想将它保存为视频文件。你告诉我如何将我的动画转换成matlab中的视频文件。我的代码是
x=[1:2];
for i=1:25,
m=randi([3,5]);
n=randi([3,5]);
y=[m n];
bar(x,y)
axis equal
A(i) = getframe;
end
matlab版本7.8 R2009a
答案 0 :(得分:4)
使用avifile:
aviobj = avifile('example.avi','compression','None');
x=[1:2];
for i=1:25,
m=randi([3,5]);
n=randi([3,5]);
y=[m n];
bar(x,y)
axis equal
aviobj = addframe(aviobj,gcf);
drawnow
end
viobj = close(aviobj)
答案 1 :(得分:3)
如果Matlab的avifile不起作用(它可能与64位操作系统的编解码器有问题),那么使用mmwrite。 http://www.mathworks.com/matlabcentral/fileexchange/15881-mmwrite
这很简单,而且很有效。我用它来简单地创建* .wmv文件:
mmwrite(filename, frames);
编辑:代码示例
% set params
fps = 25;
n_samples = 5 * fps;
filename = 'd:/rand.wmv';
% allocate frames struct
fig = figure;
f = getframe(fig);
mov = struct('frames', repmat(f, n_samples, 1), ...
'times', (1 : n_samples)' / fps, ...
'width', size(f.cdata, 2), ...
'height', size(f.cdata, 1));
% generate frames
for k = 1 : n_samples
imagesc(rand(100), [0, 1]);
drawnow;
mov.frames(k) = getframe(fig);
end
% save (assuming mmwrite.m is in the path)
mmwrite(filename, mov);
答案 2 :(得分:0)
执行此操作的一种方法是将图形print映射到图像,然后将生成的图像序列拼接成视频。 ffmpeg和mencoder是执行此操作的绝佳工具。如果您知道正确的搜索词,那么可以使用一些很好的资源来描述它。我喜欢这个one
在mencoder中,您可以使用以下命令拼接图像:
mencoder "mf://*.jpg" -mf fps=10 -o test.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800
答案 3 :(得分:0)