7

我自己在学习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

4

4 回答 4

5

使用 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)
于 2012-08-28T11:00:08.123 回答
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);
于 2012-08-28T12:42:48.953 回答
1

一种方法是将图形打印到图像上,然后将生成的图像序列拼接成视频。ffmpegmencoder是很好的工具。如果您知道正确的搜索词,有一些很好的资源可以描述这一点。我喜欢这个

在 mencoder 中,您可以使用以下命令将图像拼接在一起:

mencoder "mf://*.jpg" -mf fps=10 -o test.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800
于 2012-08-28T10:49:29.727 回答
1

看看VideoWriteravifile

于 2012-08-28T10:49:39.517 回答