如何在matlab中制作和保存视频(avi)

如何在matlab中制作和保存视频(avi),matlab,Matlab,我自己在学习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实现这一点的一种方法是将图形转换为图像,然后

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

实现这一点的一种方法是将图形转换为图像,然后将生成的图像序列缝合到视频中。这些都是很好的工具。如果你知道正确的搜索词,有一些很好的资源来描述这一点。我喜欢这个

在mencoder中,您可以使用如下命令将图像缝合在一起:

mencoder "mf://*.jpg" -mf fps=10 -o test.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800
查看或使用AVI文件:

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)

如果Matlab的AVI文件不工作(它可能与64位操作系统的编解码器有问题),则使用mmwrite。

这很简单,而且很有效。我使用它创建*.wmv文件,方法很简单:
mmwrite(文件名、帧)

编辑:代码示例

% 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);

嘿,坦克,我试过这个脚本,因为它看起来很简单。但是它制作的视频质量不好。我看不到我的结果,它是不规则的。根据过去的经验,一些玩家在没有压缩(VLC)方面有问题。尝试不同的更改压缩播放器。在win32 Cinepak下工作。在我的Matlab R2014b中,
avifile
不再存在:“avifile已被删除。请改用VIDEOWRITER。”