Bonjour à vous !
Je me tourne vers vous en espérant que vous pourrez m'aider à trouver une solution à mon problème (ne dites pas 42! )
Je m'explique :Je souhaite donc utiliser la librairie de vlc dans un projet Qt afin de récupérer le flux de l'écran et le streamer (via RTSP/RTP), j'avais vu un truc pour faire ça assez facilement.
Cependant je rencontre un problème, hormis les erreurs de liens du début (oui oui la lib 32bits et le compilateur 64bits ne s'aiment pas vraiment) mais c'est réglé avec tout en 32bits.
Maintenant on programme plante au démarrage de celui-ci. Lorsque que je l'exécute avec qt il plante et si je souhaite le débugger il me renvoi le code d'erreur : 0xc0000135.
J'ai lu quelque part qu'il s'agissait d'une ou plusieurs .dll manquante mais les quelles j'en ai aucune idée, j'ai vérifié le chemin d'inclusion dans mon .pro, ou encore mon PATH pour les .dll de Qt mais rien n'y fait le problème persiste.
L'inclusion de la lib dans mon .pro :
J'ai constaté lors de différents essais que si je garde la lib incluse mais que je n'utilise aucun code venant a utiliser la lib j'ai aucun soucis de déploiement/exécution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 LIBS += -L$$PWD/lib/ -llibvlc INCLUDEPATH += $$PWD/include DEPENDPATH += $$PWD/include
Voici les code avec la lib :
Le .h
Le .cpp
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 #ifndef ICON_TRAY_H #define ICON_TRAY_H #include <QSystemTrayIcon> #include <QMenu> #include <vlc/vlc.h> #include "qconfigdialog.h" class icon_tray : public QSystemTrayIcon { Q_OBJECT public: explicit icon_tray(QObject *parent = 0); ~icon_tray(); signals: public slots: void trigg_start(); void trigg_stop(); void trigg_exit(); void trigg_ouvertureConfig(); private: // pointeur vers les affichage graphique : menu et fenetre config. QMenu *menuContextuel; QConfigDialog *fenConfig; // variable d'état de la diffusion bool etatStream; libvlc_instance_t *instVLC; }; #endif // ICON_TRAY_H
Donc si je commente les ligne 17, 18, 19, 21 et 35 dans le .cpp mon projet ce compile et ce lance.
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 void icon_tray::trigg_start() { qDebug() << "Start"; //démarrage du stream etatStream = true; // TODO le mettre après etre sur que le stream soit lancé menuContextuel->actions()[1]->setEnabled(true); menuContextuel->actions()[0]->setEnabled(false); this->showMessage("Démarrage du stream","Votre stream est lancé.",QSystemTrayIcon::Information,5000); const char* params[] = {"screen-top=0", "screen-left=0", "screen-width=640", "screen-height=480", "screen-fps=10"}; instVLC = libvlc_new(0,NULL); libvlc_vlm_add_broadcast(instVLC,"broadcast","screen://","#transcode{vcodec=mp2v,vb=800,scale=Auto,width=800,height=600,acodec=none}:rtp{sdp=rtsp://:8554/}", 5,params,1,0); qDebug() << libvlc_vlm_play_media(instVLC,"broadcast"); } void icon_tray::trigg_stop() { if(etatStream) { qDebug() << "Stop"; menuContextuel->actions()[1]->setEnabled(false); menuContextuel->actions()[0]->setEnabled(true); etatStream = false; this->showMessage("Arrêt du stream","Votre stream est arrêté.",QSystemTrayIcon::Information,5000); libvlc_vlm_stop_media(instVLC,"broadcast"); } return; }
Pour moi ça reste un grand mystère, donc si vous avez un quelconque avis ou suggestion je suis preneur
MrLeblond
Partager