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

Qt Discussion :

Afficher du texte sur Phonon::VideoWidget


Sujet :

Qt

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 61
    Points : 96
    Points
    96
    Par défaut Afficher du texte sur Phonon::VideoWidget
    Bonjour,

    je développe actuellement un lecteur vidéo avec Qt en C++ qui intègre la gestion des sous-titres, je souhaite intégrer les sous-titres dans la vidéo, c'est à dire que l'on voit la vidéo et que le texte s'affiche dans la zone de lecture.
    Pour cela, j'ai donc essayé:
    • Un QLabel
      Résultat: si je fais hériter le QLabel du Phonon::VideoWidget, mon QLabel s'affiche en noir, si je fais hériter le Phonon::VideoWidget du QLabel, mon QLabel ne s'affiche pas.
    • Un QPainter::drawText()
      Résultat: rien ne se passe, j'ai fait hériter mon QPainter du Phonon::VideoWidget, puis applique la méthode drawText() mais rien.


    Je pense qu'il faudrait que je mette à jour le QLabel toutes les secondes, mais le problème c'est que j'ai déjà essayé avec update() et repaint(), cela ne change rien.

    Avez-vous une idée qui me permettrait de réaliser ce que je souhaite ? (c'est à dire afficher du texte sur un Phonon::VideoWidget).

    Merci d'avance.

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bonjour

    Il suffit d'afficher ton QLabel contenant les sous-titres après le widget (en le redimensionnant si nécessaire)
    Par exemple (j'utilise une image à la place d'une vidéo) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        QPixmap pixmap(":/images/fond.png");
        resize(pixmap.size());
     
        QLabel* image = new QLabel(this);
        image->resize(pixmap.size());
        image->setPixmap(pixmap); // on dessine l'image
     
        QLabel* title = new QLabel(this);
        title->setAlignment(Qt::AlignHCenter | Qt::AlignBottom);
        title->setText("le sous-titre");
        title->resize(pixmap.size()); // on dessine le texte par dessus
    Ensuite, à toi de gérer le redimensionnement de la fenêtre, l'apparence du texte, etc.

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 61
    Points : 96
    Points
    96
    Par défaut
    Merci pour cette réponse qui m'a effectivement aidé dans le placement du texte, mais les problèmes sont que le QLabel reste noir, que le texte se met mal à jour et que le QLabel ne change pas de taille en fonction de la fenetre malgré la méthode resizeEvent(QResizeEvent *event) implémenté.

    Screen:


  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Un peu de code ? En particulier le code pour créer le QLabel, le Phonon::VideoWidget et le resizeEvent.

    Chez moi (linux) le fond du QLabel est transparent. Tu peux modifier la couleur et le fond avec les styles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    title->setStyleSheet("color: red; background-color: transparent"); // en rouge sur fond blanc
    http://qt.developpez.com/doc/4.7-sna...eet-reference/ // toutes les propriétés
    http://qt.developpez.com/doc/4.7-sna...ference/#color // les couleurs personnalisées
    http://qt.developpez.com/doc/4.7-sna...obalcolor-enum // les couleurs prédéfinies

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 61
    Points : 96
    Points
    96
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    video =new Phonon::VideoWidget(this);
    subtitleLabel = new QLabel(this);
    	subtitleLabel->setAlignment(Qt::AlignCenter);
    	subtitleLabel->resize(video->size());
    	subtitleLabel->setStyleSheet("color: red; background-color: transparent");
    this->setCentralWidget(video);
    (si tu veux plus de code, n'hésite pas, j'ai mis le strict minimum )
    Cela me donne le même résultat.

    Ton fond est transparent même sur une vidéo ? :o

    EDIT: concernant le resizeEvent, je pense que c'est lié à la non-transparence, donc je ne l'ai pas mis

  6. #6
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bon, pas de bonne nouvelle.

    J'ai installé phonon pour tester... et ça ne fonctionne pas

    Il semblerait que la vidéo n'emet pas de signal ou d'event pour mettre à jour le QLabel et que donc le fond du QLabel (normalement transparent et qui devrait donc afficher la vidéo aussi) ne se redessine pas.
    Je pense à problème de mask. Je regarderais un peu plus dans cette direction.

    J'ai regardé un peu le code de vlc (qui utilise aussi Qt) mais il semblerait que l'incrustation des sous-titres est réalisé directement dans gstreamer

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Es ce que QtMultimedia ne serait pas plus adapté pour cela?

  8. #8
    Membre régulier

    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 61
    Points : 96
    Points
    96
    Par défaut
    Je vais essayer la classe QtMultimedia, mais elle permet de lire autant de format que Phonon ?
    Sinon peut être que la lib VLC pourra m'aider, je vous tiens au courant

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Video sous QT linux
    Citation Envoyé par feda12 Voir le message
    Merci pour cette réponse qui m'a effectivement aidé dans le placement du texte, mais les problèmes sont que le QLabel reste noir, que le texte se met mal à jour et que le QLabel ne change pas de taille en fonction de la fenetre malgré la méthode resizeEvent(QResizeEvent *event) implémenté.

    Screen:

    Bonjour tout le monde,
    je viens de voir votre petit sujet de conversation qui m'interesse beaucoup.
    Je fais une application QT, qui permet à l'éducation (collegien). Mon application est un logiciel de telechargement de paquets centrés sur l'éducation. Pour expliquer les differents logiciels, j'ai fait des vidéos de mon bureau. Je souhaite donc les mettres dans mon application à côté du bouton de téléchargement. J'ai réussi à enclencher la video via VLC et un QProcess mais il faut appuyer sur un bouton. Moi ce que je voudrais c'est l'afficher dans une "zone video" a coté du bouton de telechargement. J'ai essayer d'utiliser Phonon mais j'ai beaucoup de messages d'erreurs, même pour le déclarer... je sais pas c'est bizarre. Alors j'ai essayer avec votre petit bout de code mais sa ne donne rien
    Merci pour vos réponses
    A+

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Video sur qt
    Voici mon Logiciel
    merci à tous
    A+
    Images attachées Images attachées  

  11. #11
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    J'ai regardé un peu la différence entre phonon et QtMultimedia :
    - http://labs.trolltech.com/blogs/2009...ats-the-story/
    - http://labs.trolltech.com/blogs/2010...y-100-package/

    Pour résumé (j'ai lu en diagonale) : phonon est le support multimédia sur kde. Qt a assuré dans un premier temps le support de phonon mais intègre progressivement le support multimédia directement dans Qt.
    QtMultimedia est l'interface bas-niveau et QtMobility Multimedia l'interface plus haut niveau.

    Il y a 2 tutoriels sur l'affichage de video avec Qt :
    - http://qt.developpez.com/doc/latest/...deowidget.html
    - http://qt.developpez.com/doc/latest/...phicsitem.html

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Points : 248
    Points
    248
    Par défaut
    Bonjour,

    Les deux tutoriels ne permette que d'afficher des animations type gif.
    quand au module multimédia, j'ai fais des test pour afficher une vidéo en passant par ffmpeg (Qt n'a rien pour décoder pour le moment) je n'arrive pas a afficher proprement une image, sa saute un peu (j'ai créé mon prog en me basant sur QAbstractVideoSurface comme dans ton tuto mais j'ai remplacer QMovie avec par une classe a moi basé sur QAbstractBuffer et QVideoFrame).
    En revanche le module multimédia de la 4.7 promet d'être plus fournis.

Discussions similaires

  1. [Système] Afficher un texte sur la même ligne
    Par Bridou dans le forum Langage
    Réponses: 4
    Dernier message: 08/10/2007, 16h17
  2. Réponses: 4
    Dernier message: 02/06/2007, 12h35
  3. Afficher du texte sur un bureau virtuel
    Par Olivier Regnier dans le forum Linux
    Réponses: 1
    Dernier message: 17/02/2007, 12h54
  4. comment afficher du text sur le bureau?
    Par fomazou dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/11/2006, 18h46
  5. [DEBUTANT][NB] Afficher du texte sur le Output de NB
    Par oussam dans le forum NetBeans
    Réponses: 1
    Dernier message: 09/06/2006, 19h10

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