IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

video AVI, ne fonctionne pas [Débutant]


Sujet :

MATLAB

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut video AVI, ne fonctionne pas
    Bonjour tous,

    j'ai tenté de faire une video avec matlab mais ça ne fonctionne pas voici le message d'erreur:

    ??? Error using ==> avi
    Failed to open file.
    Error in ==> avifile.avifile at 173
      aviobj.FileHandle = avi('open',filename);
    ce que je ne comprends c'est qu'avant d'inclure dans mon code ce code j'avais testé quelque chose de similaire et sa fonctionnais

    Vous pourriez me dire qu'elle est l'erreur que j'ai fais ce coup ci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    figure(1)
    aviobj1 = avifile('Fv1.avi','fps',3)
     numframes=length(Fv1(:,1));
     set(gca,'NextPlot','replacechildren')
     axis equal
     for i=1:numframes
    	plot_mesh(node,IEN,Fv1(i,:));
        A(:,i)=getframe;
    	F=A(:,i);
    	aviobj1 = addframe(aviobj1,F);
     end
    aviobj1 = close(aviobj1);

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 93
    Points : 98
    Points
    98
    Par défaut
    N'ayant pas de fichier .avi sous la main, je ne peux pas tester ton code.

    Mais d'après l'erreur c'est l'ouverture de ton fichier qui pose problème ton surement la ligne : aviobj1 = avifile('Fv1.avi','fps',3)

    Peut être que ton fichier avi pose problème, test avec un autre ou vérifie son chemin d'accès

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par Pienpien Voir le message
    N'ayant pas de fichier .avi sous la main, je ne peux pas tester ton code.

    Mais d'après l'erreur c'est l'ouverture de ton fichier qui pose problème ton surement la ligne : aviobj1 = avifile('Fv1.avi','fps',3)

    Peut être que ton fichier avi pose problème, test avec un autre ou vérifie son chemin d'accès
    merci d'avoir pris le temsp de repondre,

    en fait je n'ai pas de fichier avi, en faisant cela je veux justement en faire 1

    EDIT:

    il semblerait qu'il ne faut pas de Nombre dans le titre! j'ai changé le titre et ça l'ouvre à présent!!!

    par contre j'ai encore d'autres erreur mais ça vient d'ailleur je pense

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 93
    Points : 98
    Points
    98
    Par défaut
    Ok, j'ai testé chez moi vu que c'est le fait de créer une vidéo (j'avais pas tout compris )

    Fv1 doit être un nom que tu ne peux utiliser en essayant avec d'autres nom ça a l'air de mieux marcher...

    Par contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    figure(1)
    fv1='exem.avi';
    aviobj1 = avifile(fv1,'fps',3)
     numframes=length(aviobj1(:,1));
     set(gca,'NextPlot','replacechildren')
     axis equal
     for i=1:numframes
    	plot_mesh(node,IEN,aviobj1(i,:));
        A(:,i)=getframe;
    	F=A(:,i);
    	aviobj1 = addframe(aviobj1,F);
     end
    aviobj1 = close(aviobj1);
    Il y a encore une autre erreur après je regarde ça

    edit : oups trop tard

  5. #5
    Membre émérite
    Avatar de Franck Dernoncourt
    Homme Profil pro
    PhD student in AI @ MIT
    Inscrit en
    Avril 2010
    Messages
    894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PhD student in AI @ MIT
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 894
    Points : 2 464
    Points
    2 464
    Par défaut
    http://www.mathworks.com/support/sol...ution=1-B3DT9O ?

    Si tu as R2010b ou R2011a, utilise la classe VideoWriter :
    Use VideoWriter rather than avifile to create AVI files. VideoWriter supports files larger than 2 GB, and by default, creates files with Motion JPEG compression, which all platforms support.
    (Source : http://www.mathworks.com/help/techdoc/ref/avifile.html)

    EDIT: Bon apparemment tu as trouvé une solution, je le laisse pour d'autres lecteurs potentiels du thread et la suggestion de VideoWriter est toujours valable.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 93
    Points : 98
    Points
    98
    Par défaut
    Sinon l'autre erreur provient de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numframes=length(aviobj1(:,1));
    En effet aviobj1 est une structure (tu peux le voir dans le workspace) donc length ne peut marcher.
    D'ailleurs vu que tu as créés la vidéo juste avant je suppose que le nombre de frame est de 0 et que c'est à toi de le fixer ensuite.

    de même pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot_mesh(node,IEN,aviobj1(i,:));

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci pour votre aide, je vais jeter un coup d'oeil !

    d'ailleurs j'ai encore une erreur qui s'affiche (et qui ne s'affiché pas tout à l'heure)

    ??? The following error occurred converting from struct to double:
    Error using ==> double
    Conversion to double from struct is not possible.
    le problème est que matlab ne me dit pas la ligne

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 93
    Points : 98
    Points
    98
    Par défaut
    Pour obtenir la ligne enregistre ton programme et lance le à partir de "CommandWindow"

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par Pienpien Voir le message
    Pour obtenir la ligne enregistre ton programme et lance le à partir de "CommandWindow"
    merci pour ces info mais peux tu me donner plus de détails je ne comprends pas (je suis débutant)

    => j'enregistre un .exe ? et je le lance à partir de dos?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 93
    Points : 98
    Points
    98
    Par défaut
    Non enregistre ton code en .m dans le dossier Matlab ou celui qui sert de "Current directory"( tu peux le voir en haut lorsque tu lances matlab)
    Puis dans Matlab tu as une fenêtre "Command Window" tu tappes le nom du fichier que tu viens d'enregistrer

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par Pienpien Voir le message
    Non enregistre ton code en .m dans le dossier Matlab ou celui qui sert de "Current directory"( tu peux le voir en haut lorsque tu lances matlab)
    Puis dans Matlab tu as une fenêtre "Command Window" tu tappes le nom du fichier que tu viens d'enregistrer
    ah ok !

    => je test dès que j'ai accès à matlab (dans 1h) et ensuite je te tiens informé.

    merci de ton aide

    edit:
    je ne peux pas tester de suite, je te tiens informé
    A+ et merci pour le coup de main

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    En fait tous fonctionne c'est que j'avais du faire une mauvaise manip

    => par contre j'ai un problème dans mes videos: "le cadrage" est très mauvais

    voici en pièce jointe une image qui ressemble à celle que j'ai initialement, cette image a ses couleurs qui evoluent (seulement les couleurs)

    Dans les frames de la video j'ai deux problèmes

    1°) la colorbar n'apparait pas sur les video car le cadrage a un zoom assez important

    2°) le cadrage varie légérement d'un frame à l'autre, du coup c'est pas très jolie, la video semble vibrer...

    Savez vous comment je peux résoudre ces 2 choses ?

    => pour illustrer mon probleme j'ai mis 2 exemples de frames que j'obtiens

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    1. Pourquoi ne pas simplement faire un getframe(gcf), voire getframe(gcf,rect) (Cf ce post)
    2. As-tu regardé cette discussion?

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    salut Jerome,

    Citation Envoyé par Winjerome Voir le message
    Bonsoir,
    1. Pourquoi ne pas simplement faire un getframe(gcf), voire getframe(gcf,rect) (Cf ce post)
    2. As-tu regardé cette discussion?
    ==> je vais regarder de ce coté merci

    edit:

    apparemment ça répond exactement à ma question, bravo Jerome encore une fois !

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    salut Jerome,

    j'ai regardé les liens, pour ne pas avoir de saut entre chaque images pas de problèmes ça fonctionne!

    par contre je ne suis toujours pas arrivé à afficher la legende du graphique dans mes frames...

    voici ce que j'ai fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    aviobj1 = avifile('FvOne.avi','fps',6)
     numframes1=length(Fv1(:,1));
     set(gca,'NextPlot','replacechildren')
     i=0;
     for i=1:numframes1
    	plot_figure(%fonction qui contient le plot);
        A(:,i)=getframe(gca);
    	F=A(:,i);
    	aviobj1 = addframe(aviobj1,F);
     end
    aviobj1 = close(aviobj1);
    je pense que j'ai du faire un oubli, en tout cas je n'ai pas très bien compris ces "gca" et gcf" et leur utilisation.
    Peux tu me dire qu'ex ce qui manque à mon code pour que les legendes apparaissent?

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 93
    Points : 98
    Points
    98
    Par défaut
    gca returns the handle to the current axes for the current figure.
    En gros ça te donne le nom de ton axes qui te permet de travailler ou de récupérer des choses dessus.

    Pour la légende ce n'est pas à mettre dans ton plot puisque c'est à partir de ces images que tu fais la vidéo ?

    regarde ça : http://www.mathworks.com/help/techdoc/ref/legend.html

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    désolé je me suis mal exprimé
    ce n'est pas la legende que je veux afficher mais les axes

    => en gros quand je fais "gca" je recupère les axes mais comment puis je dire ensuite à ma video d'afficher les axes que j'ai récupéré?

    => j'ai peut etre ce probleme car ma figure n'est pas directement dans la boucle du "frame" mais dans la fonction que j'appel à l'intérieur?
    (du coup je devrais mettre le gca dans la fonction?)

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 93
    Points : 98
    Points
    98
    Par défaut
    en gros quand je fais "gca" je recupère les axes mais comment puis je dire ensuite à ma video d'afficher les axes que j'ai récupéré?
    Non, tu utilises GCA tu "sélectionnes" l'axes et après tu lui appliques des choses. Du style récupérer les images qu'il affiche, créer un rectangle dedans etc. C'est utile quand tu as plusieurs axes dans une même figure par exemple.

    Quand tu dis les "axes" tu parles de l'objet matlab ou vraiment des axes en mathématique avec les échelles etc ?

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par Pienpien Voir le message
    Non, tu utilises GCA tu "sélectionnes" l'axes et après tu lui appliques des choses. Du style récupérer les images qu'il affiche, créer un rectangle dedans etc. C'est utile quand tu as plusieurs axes dans une même figure par exemple.

    Quand tu dis les "axes" tu parles de l'objet matlab ou vraiment des axes en mathématique avec les échelles etc ?
    quand je dis axes en fait je parle des axes mathematiques avec les echelles

    => en fait dans mes figures (qui servent à la video) j'ai fais un:
    => cela me permet d'avoir un chiffre attribué à une couleur, je probleme c'est que lors de la video ma barre "colorbar" n'apparait pas

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 93
    Points : 98
    Points
    98
    Par défaut
    http://www.mathworks.com/help/techdoc/ref/getframe.html


    Test sans mettre gca comme c'est écrit dans l'exemple

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Balise video qui ne fonctionne pas
    Par kurtbosh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/12/2011, 13h50
  2. [HTML 5] la balise video ne fonctionne pas sous FF 3.6
    Par saw-next dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 07/04/2010, 19h06
  3. [MySQL] vos avis sur un script qui fonctionne pas
    Par younek dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/12/2008, 17h47
  4. video ne fonctionne pas sur le site
    Par marssupilamis1 dans le forum Débuter
    Réponses: 13
    Dernier message: 18/10/2008, 17h26
  5. Video.Dispose() ne fonctionne pas correctement.
    Par LoST_MiNd dans le forum DirectX
    Réponses: 1
    Dernier message: 12/03/2008, 21h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo