2012-08-28 696 views
6

Estoy aprendiendo matlab y he hecho una trama animada usando matlab; ahora quiero guardarla como un archivo de video. ¿Pueden decirme cómo convertir mi animación en un archivo de vídeo en matlab.Below es mi códigoCómo hacer y guardar un video (avi) en 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 

versión de Matlab 7.8 R2009a

Respuesta

4

uso 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) 
+0

hey tanques que probamos este script bcoz su aspecto easy..But el video que hizo no es de buena qualitiy..i no puedo ver mis resultados, es irregular .. – Eka

+0

Por experiencia anterior, algunos jugadores tienen problemas sin compresión (VLC). Pruebe con la compresión de diferentes jugadores de cambio. Bajo Win32 Cinepak funciona. – Mercury

+0

En mi Matlab R2014b, 'avifile' ya no está presente:" AVIFILE ha sido eliminado. Use VIDEOWRITER en su lugar ". – Bernhard

0

una forma de hacer esto es print la figura de una imagen, y luego coser la secuencia de imágenes que resulta en un vídeo. ffmpeg y mencoder son excelentes herramientas para hacer esto. Hay algunos recursos geniales para describir esto si conoce los términos de búsqueda correctos. Me gusta este one

En mencoder, se podría unir sus imágenes junto con un comando como:

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

Si el avifile de Matlab no funciona (puede tener problemas con los códecs de sistema operativo de 64 bits), utilice mmwrite. http://www.mathworks.com/matlabcentral/fileexchange/15881-mmwrite

Es simple, y funciona. Lo utilicé para crear archivos * .wmv simplemente por: mmwrite(filename, frames);

Editar: ejemplo de código

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