Video sous matlab : avifile plus efficace que VideoWriter ?

Fermé
matbator Messages postés 8 Date d'inscription mercredi 22 avril 2009 Statut Membre Dernière intervention 14 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