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

Discussion :

Phonon : lecture de vidéo

  1. #1
    Membre confirmé Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Par défaut Phonon : lecture de vidéo
    Bonjour,

    j'ai un probleme de lecture de la vidéo: l'audio se passe bien, mais j'ai l'erreur suivante pour la vidéo:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    WARNING: Phonon::createPath: Cannot connect  Phonon::MediaObject ( no objectName ) to  Phonon::VideoWidget ( no objectName ). 
    // d'ailleurs en faisant F5, j'ai une segmentation fault
    J'ai installé ffdshow mais sans succes ... Quelqu'un peut-il m'aider ?
    Je suis sous QtCreator 2.0.1 avec Qt 4.0.7, sous windows (mingw) ... Le media player de windows lit bien les fichiers mais je n'y arrive pas avec phonon ....

    Merci grandement de votre aide SVP.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Ta fonction createpath où est-elle ? Dans quelle fonction ? Dans le constructeur MainWindow ? Un autre ? As-tu essayé avec un fichier avi ?
    Peux-tu donner le contexte entier si ça gêne pas ? Merci bonne soirée.
    Cordialement, Gizmo.

  3. #3
    Membre confirmé Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Par défaut
    Bonjour et merci de ton attention.

    Voici un peu de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
     
        NomfichierVideo = "D:\\Jocelyne\\Barier\\Video\\Dzik_3_sound.avi";
     
     video = new Phonon::MediaObject(this->ui->m_VideoWindows);
     vwidget = new Phonon::VideoWidget(this->ui->m_VideoWindows);
     Phonon::createPath(video, vwidget); // NOK
     
     audioOutput = new Phonon::AudioOutput(Phonon::VideoCategory, this);
     Phonon::createPath(video, audioOutput); // OK
    }
     
    // NOK
    void MainWindow::on_m_pbVideo_clicked()
    {
        video->stop();
        video->setCurrentSource(NomfichierVideo);
        video->play();
     
    }
     
    // OK
    void MainWindow::on_m_pbAudio_clicked()
    {
        video->stop();
        video->setCurrentSource(NomfichierVideo);
        video->play();
    }
    J'ai essayé de déplacer le createPath dans la fonction du bouton mais sans succes ...
    Si tu as trouvé ton probleme (j'ai posté grâce à une de tes réponses sur un autre post) ou si tu as une idée, je serais bien contente, car je galère depuis plusieurs jours déjà sans succès !!!!
    J'ai essayé d'autres formats que avi mais alors même le son ne passe pas ...
    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,
    Le pointeur m_VideoWindows tu l'as crée toi-même ?

    Petite chose au sujet du code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    video->setCurrentSource(NomfichierVideo);
    video->play();
    J'ai récemment été confronté au même souci et j'ai pataugé pendant 2/3 jours.
    En fait là quand tu fais setCurrentSource() il est en train de charger ton avi : entre le moment où l'instruction de setCurrentSource() et le play() sont exécutées il n'y a presque pas d'attente (tu verras dans la doc il y a une histoire de loadingstate et stoping state : le avi n'est chargé que que le state est passé de loadingstate à stopingstate), mais ça tu pouvais pas le deviner

    Solution : essaies pour voir de faire setCurrentSource() dans le constructeur du mainwindow.
    Si veux garder ton setCurrentSource() dans l'accolade actuelle (cf celle de ton void MainWindow::on_m_pbVideo_clicked()
    ), tu peux peut-être utiliser un timer mais là je ne m'avance pas car j'ai jamais testé, mieux vaut demander à des membres plus expérimententés que moi
    Tu as aussi, si je ne m'abuse, dans la classe Phonon::MediaObject un signal statechanged.
    Merci à toi bonne journée.
    Cordialement, Gizmo.
    Dernière modification par Invité ; 29/04/2011 à 09h52.

  5. #5
    Membre confirmé Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Par défaut
    en fait, je n'ai pas encore des problemes à ce niveau-là mais je te remercie de tes conseils.
    Moi, ca bloque dès le début avec le createPath() : segmentation fault !!!
    sinon mon code fonctionne bien pour l'audio.

    m_VideoWindows est un QWidget posé sur la fenetre. Mais j'ai essayé la demo de Qt et j'ai le même soucis avec ! Il doit me manquer des dlls ou des codecs ou je ne sais pas quoi encore (c'est bien là le probleme) pour que ca fonctionne.

    J'espère que je ne devrais pas recomplier Qt .... ou phonon ... je pensais que tout fonctionnait ensemble !!

    Merci.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Salut j'espère que tu ne m'en veux pas je débute.
    Essaie de créer ton objet vwidget sans parent et fais un delete pour le supprimer.
    Ton objet vwidget crée est un enfant de mainwindow : quand j'avais spécifié this comme parent de mon vwidget j'avais eu un souci. Essaies ça pour voir ?
    Bonne journée.

  7. #7
    Membre confirmé Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Par défaut
    Bien sur que non je ne t'en veux pas !!! Tu donnes des idées, qui ne sont pas idiotes (et que j'ai déjà plus ou moins testées), et c'est super. J'ai posté à deux autres endroits et encore aucune réponse ...

    Moi, je débute en vidéo et donc avec phonon. Quant à mon Qt, on ne peut pas dire que je sois experte non plus

    Bon, je vais continuer à me pencher la dessus. Si tu as d'autres idées, n'hésites pas, ca me fait plaisir de voir quelqu'un m'aider, ca m'aide aussi.
    J'ai essayé de mettre à NULL, à "parent" et le mieux c'est encore mon widget ... mais j'ai toujours le même souci ...
    @+

  8. #8
    Invité
    Invité(e)
    Par défaut
    Je crois qu'il ne faut pas mettre NULL en c++ mais plutôt 0.
    Essaies de simplifier ton code : quand tu déclares dans le h le vwidget, mets-le en objet directement : pas en pointeur.
    Ca donne un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Phonon::VideoWidget vwidget;
    De cette manière tu n'auras pas à te soucier de faire un delete.
    C'est juste pour tester après tu pourras remettre comme c'était avant .

    EDIT : et dans creathPath n'oublies pas de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Phonon::createPath(video,&vwidget)
    pour que ça marche

  9. #9
    Membre confirmé Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Par défaut
    J'ai fait : toujours pareil !!! Snifff

    Par contre, depuis que j'ai mis ffdshow, le segmentation fault arrive dans mediaobject.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void WorkerThread::run()
    { 
    ...
    DWORD result = ::WaitForMultipleObjects(count, handles, FALSE, INFINITE);
    ...
    }
    et donc dans msvcrt.dll ...

  10. #10
    Invité
    Invité(e)
    Par défaut
    Sur la doc il est écrit qu'il faut avoir au moins Direct x 9.0 pour que cela marche.
    Quand tu as installé ton ffsdhow tu as tout coché dans les codecs vidéos à installer ?

  11. #11
    Membre confirmé Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Par défaut
    Normalement j'ai tout coché !
    Comment vérifier qu'on a bien direct x9.0 ???

  12. #12
    Invité
    Invité(e)
    Par défaut
    Normalement si je ne dis pas de bêtises tu devrais l'avoir dans ajout/suppr programmes du panneau de config
    Et tu ne peux pas avoir à la suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    video.setCurrentSource(...);
    video.play();
    Peut-être qu'il ne joue rien du tout car le mediaobjet n'a aucun fichier "à se mettre sous la dent". Du coup peut-être la connexion créee par le createPath est cassée.
    Essaies aussi de mettre le setCurrentSource() dans le constructeur de la mainwindow juste pour voir.
    Ca affiche segmenttion fault quand tu compiles et lances l'exe ou bien quand tu appuies sur le bouton lecture ?
    Dernière modification par Invité ; 29/04/2011 à 11h26.

  13. #13
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 111
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    WARNING: Phonon::createPath: Cannot connect  Phonon::MediaObject ( no objectName ) to  Phonon::VideoWidget ( no objectName ). 
    // d'ailleurs en faisant F5, j'ai une segmentation fault
    Bonjour,
    une petite recherche sur google de cette erreur : c'est un bug de Qt 4.7.0

  14. #14
    Membre confirmé Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Par défaut
    pas vu ... Mais le media player de windows fonctionne alors je devrais les avoir non ?

    sur quelques sites, j'ai trouvé que la version 4.7.0 ne fonctionnait pas avec phonon sous XP ... Je voulais télécharger la version "Qt SDK 1.1 rc" mais c'est super long.
    Je risque de passer sous VLC ...

    Merci abdou, nous avons posté en même temps.
    Bon, je vais vraiment devoir passer à la nouvelle version de Qt alors ???

    Autre question : est ce que c'est plus facile avec VLC et peut-on faire des applis commerciales avec VLC ?

    Merci

  15. #15
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Joccy Voir le message
    sur quelques sites, j'ai trouvé que la version 4.7.0 ne fonctionnait pas avec phonon sous XP ...
    J'ai xp et ça marche très bien j'arrive à lire les avi sans décalage son/image aucun.
    As-tu testé ? ça a marché ?
    Cordialement, Gizmo.

  16. #16
    Membre confirmé Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Par défaut
    J'ai bien directX 9.0c (vérifié avec DxDiag), et ca ne fonctionne toujours pas ...

    J'ai lancé le téléchargement de la version rc1.1, mais je ne l'aurais pas avant lundi ...
    Si tu as d'autres idées ???

    Merci

  17. #17
    Invité
    Invité(e)
    Par défaut
    Désolé je me suis mal exprimé : par tester j'entendais mettre le setCurrentSource dans le mainwindow soit comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    3456789101112131415161718192021222324252627282930313233  
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
     
        NomfichierVideo = "D:\\Jocelyne\\Barier\\Video\\Dzik_3_sound.avi";
     
     video = new Phonon::MediaObject(this->ui->m_VideoWindows);
     vwidget = new Phonon::VideoWidget(this->ui->m_VideoWindows);
     Phonon::createPath(video, vwidget); // NOK
     
     audioOutput = new Phonon::AudioOutput(Phonon::VideoCategory, this);
     Phonon::createPath(video, audioOutput); // OK
     video.setCurrentSource(NomfichierVideo);}
     
    // NOK
    void MainWindow::on_m_pbVideo_clicked()
    {
        video->stop();
        // video->setCurrentSource(NomfichierVideo); 
        video->play();
     
    }
    ?
    Ici j'ai mis en rouge les lignes à modifier.

    PS : tu peux toujours télécharger une version de Qt plus récente mais à mon avis que le problème vient d'ailleurs.

  18. #18
    Membre confirmé Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Par défaut
    oui, oui j'ai bien essayé mais cela n'a rien donné ....

    As tu visualStudio 8 ou QtCreator + Mingw ?

  19. #19
    Invité
    Invité(e)
    Par défaut
    Qt Creator 2.0.1 + Qt v4.7.0

  20. #20
    Membre confirmé Avatar de Joccy
    Profil pro
    Inscrit en
    Août 2007
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 153
    Par défaut
    et tu as recompilé Qt ? et phonon ?
    je suis en train de regarder un lien que l'on m'a donné:
    http://qt.developpez.com/doc/4.7/pho...talling-phonon

    Je vais voir...

    Voici ce que j'ai trouvé sur le lien précédent :
    Installing PhononWhen running the Qt configure script, you will be notified whether Phonon support is available on your system. As mentioned previously, to use develop and run Phonon applications, you also need to link to a backend, which provides the multimedia functionality.

    Note that Phonon applications will compile and run without a working backend, but will, of course, not work as expected.

    The following sections explains requirements for each backend.

    WindowsOn Windows, building Phonon requires DirectX and DirectShow version 9 or higher. You'll need additional SDKs you can download from Microsoft.

    Windows XP and later Windows versions
    If you develop for Windows XP and up, you should download the Windows SDK here. Before building Qt, just call the script: C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin\setenv.cmd

    Note: Visual C++ 2008 already contains the Windows SDK and doesn't need that package and has already the environment set up for a smooth compilation of phonon.

    Earlier Windows versions than Windows XP
    If you want to support previous Windows versions, you should download and install the Platform SDK. You find it here.

    Note: The platform SDK provided with Visual C++ is not complete and you'll need this one to have DirectShow 9.0 support. You can download the DirectX SDK here.

    Setting up the environment
    Once the SDKs are installed, please make sure to set your environment variables LIB and INCLUDE correctly. The paths to the include and lib directory of the SDKs should appear first. Typically, to setup your environment, you would execute the following script:

    Set DXSDK_DIR=C:\Program Files\Microsoft DirectX SDK (February 2007)
    %DXSDK_DIR%\utilities\bin\dx_setenv.cmd
    C:\program files\Microsoft Platform SDK\setenv.cmdIf your environment is setup correctly, executing configure.exe on your Qt installation should automatically activate Phonon.


    Warning: The MinGW version of Qt does not support building the Qt backend.
    Bon, que dois-je donc en penser ??? surtout de la dernière phrase ... Je n'ai pas envie de tout recompiler (c'est pour ça que je prends QtCreator, en plus que je le trouve sympa) et puis j'ai minggw .... Bon, je peux toujours installer le SDK de directX . Tu l'as fait ?

    @+

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

Discussions similaires

  1. Pb Carte Graphique lors de lecture de vidéos
    Par SamLeChiseuji dans le forum Composants
    Réponses: 7
    Dernier message: 27/09/2008, 14h31
  2. Problèmes de lectures audio/vidéo
    Par Z20500 dans le forum Vidéo
    Réponses: 1
    Dernier message: 11/08/2008, 11h11
  3. lecture de vidéo sous C#
    Par archer dans le forum C#
    Réponses: 6
    Dernier message: 04/02/2008, 09h57
  4. DirectX et lecture de vidéo
    Par robertledou dans le forum Vidéo
    Réponses: 6
    Dernier message: 20/09/2007, 14h06
  5. [JMF] Lecture de vidéo à l'envers possible ?
    Par mavina dans le forum Multimédia
    Réponses: 1
    Dernier message: 27/04/2007, 18h41

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