Video sous matlab : avifile plus efficace que VideoWriter ?
Fermé
matbator
Messages postés8Date d'inscriptionmercredi 22 avril 2009StatutMembreDernière intervention14 janvier 2013
-
14 janv. 2013 à 12:41
Bonjour,
Je cherche à utiliser 'VideoWriter' pour créer une video sous MATLAB (R2012a) mais impossible de retrouver la même efficacité qu'avec 'avifile' !
En particulier, il est possible d'utiliser 'addframe' avec 'avifile' ce qui permet d'ajouter des frames à la vidéo sans l'afficher à l'écran (propriété 'Visible','off'). Tandis qu'avec 'VideoWriter' on est obligé d'utiliser 'getframe' qui lui, impose l'affichage de la figure.
Ci-dessous 2 petits bouts de code pour mieux comprendre le problème :
%%%%%%%% avifile %%%%%%%%%
Matrice = zeros(20,20,100);
scrsz = get(0,'ScreenSize');
figure('Position',[1.5*scrsz(4) 0.8*scrsz(4) 0.9*scrsz(4) 0.7*scrsz(4)],'Visible','off');
aviobj = avifile('Monfilm.avi');
for ii = 1 : 100
imagesc(Matrice(:,:,ii))
set(gca,'FontSize',25,'FontName','Times','linewidth',2,'Ydir','normal')
title('Mon titre'), grid on
drawnow
aviobj = addframe(aviobj,gcf);
clf
end
close all
aviobj = close(aviobj);
%%%%%%%%%%% VideoWriter %%%%%%%%%%%
Matrice = zeros(20,20,100);
scrsz = get(0,'ScreenSize');
figure('Position',[1.5*scrsz(4) 0.8*scrsz(4) 0.9*scrsz(4) 0.7*scrsz(4)],'Visible','off');
writerObj = VideoWriter('Monfilm');
writerObj.FrameRate = 25;
open(writerObj);
for ii = 1 : 100
imagesc(Matrice(:,:,ii))
set(gca,'FontSize',25,'FontName','Times','linewidth',2,'Ydir','normal')
title('Mon titre'), grid on
drawnow
writeVideo(writerObj,getframe(gcf));
clf
end
close all
close(writerObj);
Quelqu'un connaitrait-il un moyen de retrouver l'efficacité de la solution 'avifile' mais avec 'VideoWriter' (ce dernier étant destiné à définitivement remplacer le premier dans les futures versions de matlab) ?
Merci d'avance
A voir également:
Video sous matlab : avifile plus efficace que VideoWriter ?