2012-08-28 12 views
6

Sto imparando il MATLAB io stesso e ho realizzato una trama animata usando MATLAB, ora voglio salvarlo come un file video. Puoi dirmi come convertire la mia animazione in un file video in matlab.Below è il mio codiceCome creare e salvare un video (avi) in 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 

versione di mATLAB 7.8 R2009a

risposta

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 serbatoi ho provato questo script bcoz suo look easy..But il video che ha fatto non è di buona non riesco a vedere i miei risultati, è irregolare .. – Eka

+0

Dall'esperienza passata alcuni giocatori hanno problemi con la compressione (VLC). prova un altro giocatore di compressione del cambiamento. Sotto cinapak funziona win32. – Mercury

+0

Nel mio Matlab R2014b, 'avifile' non è più presente:" AVIFILE è stato rimosso. Utilizza invece VIDEOWRITER. " – Bernhard

0

un modo per farlo è quello di print figura a un'immagine, e poi cucire la sequenza di immagine risultante in un video. ffmpeg e mencoder sono ottimi strumenti per farlo. Ci sono alcune grandi risorse per descriverlo se conosci i termini di ricerca giusti. Mi piace questo one

In mencoder, si potrebbe cucire le immagini insieme con un comando come:

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

Se avifile di Matlab non funziona (potrebbe avere problemi con i codec del sistema operativo a 64 bit), quindi utilizzare mmwrite. http://www.mathworks.com/matlabcentral/fileexchange/15881-mmwrite

È semplice e funziona. L'ho usato per creare i file * .wmv semplicemente: mmwrite(filename, frames);

Edit: Esempio di codice

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