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 :

Sujet d'étude : intégration d'une vidéo à une IHM


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 18
    Par défaut Sujet d'étude : intégration d'une vidéo à une IHM
    Bonjour à tous !

    Voilà j'explique un peu mon souci, je suis actuellement étudiant et dans le cadre d'un projet, on me demande de réussir à créer via Qt une interface IHM capable de récupérer la vidéo d'une IP Camera et de la stream en direct sur l'IHM. Mon souci : je suis en dernière année d'ingénierie mécanique... autant vous dire que le développement et moi .... ça fait 36 !

    Qu'à cela ne tienne, j'ai commencé en faisant plusieurs tuto, et j'ai réussi à créer l'IHM permettant d'utiliser quelques boutons. Le souci intervient pour la partie vidéo, je n'ai absolument aucune idée de comment partir et/ou comment fragmenter cette partie de projet, et malgré de recherche je n'ai pas trouvé de tuto me permettant d'y arriver. Voilà quand même ma vision de ce que je dois effectuer, vous me direz rapidement si je suis dans le faux ou non :
    - Etablir la connexion avec la source envoyant la vidéo
    - Savoir récupérer un flux d'information via Qt
    - Ouvrir ce flux sous format H.264

    Je me répète encore je suis totalement novice en développement, j'essaye de m'intéresser à la doc Qt mais j'ai beaucoup de mal à y avancer et malgré mes recherche je ne trouve rien sur le "streaming" vidéo.

    Voilà ! Merci beaucoup d'avance

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 18
    Par défaut
    J'update ma situation, j'ai essayé d'intégrer Gstreamer et voilà ce que j'ai pu avoir :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    #include <iostream>
    #include <QCoreApplication>
    #include <QGlib/Error>
    #include <QGlib/Connect>
    #include <QGst/Init>
    #include <QGst/Bus>
    #include <QGst/Pipeline>
    #include <QGst/Parse>
    #include <QGst/Message>
    #include <QGst/Utils/ApplicationSink>
    #include <QGst/Utils/ApplicationSource>
     
     
    class MySink : public QGst::Utils::ApplicationSink
    {
    public:
        MySink(QGst::Utils::ApplicationSource *src)
            : QGst::Utils::ApplicationSink(), m_src(src) {}
    protected:
        virtual void eos()
        {
            m_src->endOfStream();
        }
        virtual QGst::FlowReturn newSample()
        {
            QGst::SamplePtr sample = pullSample();
            m_src->pushBuffer(sample->buffer());
            return QGst::FlowOk;
        }
    private:
        QGst::Utils::ApplicationSource *m_src;
    };
    class Player : public QCoreApplication
    {
    public:
        Player(int argc, char **argv);
        ~Player();
    private:
        void onBusMessage(const QGst::MessagePtr & message);
    private:
        QGst::Utils::ApplicationSource m_src;
        MySink m_sink;
        QGst::PipelinePtr pipeline1;
        QGst::PipelinePtr pipeline2;
    };
    Player::Player(int argc, char **argv)
        : QCoreApplication(argc, argv), m_sink(&m_src)
    {
        QGst::init(&argc, &argv);
        if (argc <= 1) {
            std::cerr << "Usage: " << argv[0] << " <audio_file>" << std::endl;
            std::exit(1);
        }
        const char *caps = "audio/x-raw, format=(string)S16LE, channels=(int)1,"
                           " rate=(int)44100, layout=(string)interleaved";
        /* source pipeline */
        QString pipe1Descr = QString("filesrc location=rtsp://admin:pwd@169.254.162.xx/axis-media/media.amp\"%1\" ! "
                                     "decodebin ! "
                                     "audioconvert ! "
                                     "audioresample ! "
                                     "appsink name=\"mysink\" caps=\"%2\"").arg(argv[1], caps);
        pipeline1 = QGst::Parse::launch(pipe1Descr).dynamicCast<QGst::Pipeline>();
        m_sink.setElement(pipeline1->getElementByName("mysink"));
        QGlib::connect(pipeline1->bus(), "message::error", this, &Player::onBusMessage);
        pipeline1->bus()->addSignalWatch();
        /* sink pipeline */
        QString pipe2Descr = QString("appsrc name=\"mysrc\" caps=\"%1\" is-live=true format=3 ! "
                                     "autoaudiosink").arg(caps);
        pipeline2 = QGst::Parse::launch(pipe2Descr).dynamicCast<QGst::Pipeline>();
        m_src.setElement(pipeline2->getElementByName("mysrc"));
        QGlib::connect(pipeline2->bus(), "message", this, &Player::onBusMessage);
        pipeline2->bus()->addSignalWatch();
        /* start playing */
        pipeline1->setState(QGst::StatePlaying);
        pipeline2->setState(QGst::StatePlaying);
    }
    Player::~Player()
    {
        pipeline1->setState(QGst::StateNull);
        pipeline2->setState(QGst::StateNull);
    }
    void Player::onBusMessage(const QGst::MessagePtr & message)
    {
        switch (message->type()) {
        case QGst::MessageEos:
            quit();
            break;
        case QGst::MessageError:
            qCritical() << message.staticCast<QGst::ErrorMessage>()->error();
            break;
        default:
            break;
        }
    }
    int main(int argc, char **argv)
    {
        Player p(argc, argv);
        return p.exec();
    }
    Mais mes erreur sont toutes concernant QtGst :
    /Bureau/Qt Clement/QtGsttest/player.cpp:16: erreur : undefined reference to QGst::Ui::VideoWidget::VideoWidget(QWidget*, QFlags<Qt::WindowType>)' /Bureau/Qt Clement/QtGsttest/player.cpp:16: erreur : undefined reference toQGst::Ui::VideoWidget::~VideoWidget()'
    /Bureau/Qt Clement/build-QtGsttest-Desktop-Debug/player.o:-1: In function Player::~Player()': /Bureau/Qt Clement/QtGsttest/player.cpp:25: erreur : undefined reference toQGst::Element::setState(QGst::State)'

    etc...

    j'ai la même chose pour chaque ligne intégrant "QGst::..."

    à l'aide svp

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut


    Qu'as-tu modifié dans ton fichier .pro ? Il faut aussi inclure les fichiers .lib/.a de QGst (https://doc.qt.io/qt-5/qmake-project...ther-libraries). Maintenant, le QGst que j'ai trouvé n'est plus maintenu… Sinon, tu as https://doc.qt.io/qt-5/videooverview.html.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 18
    Par défaut
    Merci Dourouc de la réponse ! Normalement j'ai bien tout inclus dans mon .pro
    Code qt-pro : 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
    QT       += core gui
     
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
     
    TARGET = testQtNetwork
    TEMPLATE = app
     
     
    SOURCES += main.cpp\
            mafenetre.cpp \
     
    HEADERS  += mafenetre.h \
     
     
    QT += network
    QT += widgets
     
    CONFIG += pkgconfig
     
     
     
     
     
    INCLUDEPATH += "/usr/include/Qt5GStreamer"


    Qu'est ce que ça voudrait dire pour moi que ce n'est plus maintenu ?

  5. #5
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Citation Envoyé par Clemschan Voir le message
    Normalement j'ai bien tout inclus dans mon .pro
    Justement, non : tu ne fais rien avec la variables LIBS.

    Citation Envoyé par Clemschan Voir le message
    Qu'est ce que ça voudrait dire pour moi que ce n'est plus maintenu ?
    Que ça pourrait ne plus fonctionner avec une version "future" de Qt (à partir de 2014), principalement. Si tu as un problème quelconque qui doit être corrigé dans la bibliothèque, il n'y aura personne pour le résoudre à ta place.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 18
    Par défaut
    Arf ... je suis un nooby en Qt et en dev orienté objet, qu'arait-il fallu que je fasse dans mon .pro pour être bon ?

    Ah ! Du coup tu me conseille de partir sur une version plus ancienne de Qt ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création ou Intégration d'une galerie vidéo dans mon site web
    Par [ced] dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 08/02/2010, 22h04
  2. Intégration d'une vidéo Flash via Dreamweaver CS4
    Par Winch44 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 10/12/2008, 16h52
  3. [GTK+] Capture vidéo avec OpenCV et intégration dans une GUI GTK+
    Par kurapix dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 21/04/2008, 10h12
  4. Intégration d'une vidéo dans un .swf
    Par kronos85 dans le forum Flash
    Réponses: 1
    Dernier message: 18/02/2008, 11h06
  5. [VB ou C++] intégration d'une page web dans une application
    Par devmat dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/10/2005, 15h14

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