Как сделать и сохранить видео (avi) в 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

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)

Если avifile Matlab не работает (у него могут быть проблемы с кодеками 64-битной ОС), используйте mmwrite. http://www.mathworks.com/matlabcentral/fileexchange/15881-mmwrite

это просто, и это работает. Я использовал его для создания *.wmv файлы просто: mmwrite(filename, frames);

Edit: пример кода

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

один из способов сделать это -печати рисунок к изображению, а затем сшить полученную последовательность изображений в видео. ffmpeg и С mencoder отличные инструменты для этого. Есть некоторые большие ресурсы для описания этого, если вы знаете правильные условия поиска. Мне это нравится один

в mencoder, вы можете сшить ваши изображения вместе с командой, как:

mencoder "mf://*.jpg" -mf fps=10 -o test.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800

посмотреть VideoWriter или avifile