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

C++ Discussion :

utilisation de libvlc 2.0.1


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut utilisation de libvlc 2.0.1
    bonjour à toutes et à tous,

    Actuellement en stage, mon sujet de stage implique la programmation d'une interface sous Qt en C++ pour le visionnage d'un flux vidéo (le principe de la webcam, avec quelques subtilités).

    Alors j'ai appris le C++ il y a environ un mois (donc je ne maitrise pas encore le langage dans toute sa splendeur, mais je me débrouille), et actuellement, j'ai programmé mon interface sous Qt4.

    à présent je m'attaque à la récupération d'un flux vidéo en streaming.
    J'avais commencé avec ffdshow, mais je ne peut pas lire tous les formats (surtout celui qui m'intéresse, le mpeg4), et je n'ai pas de fonctions pour récupérer du stream.

    Je me suis penché sur la libvlc, étant donné qu'elle résoudrais mes problèmes, mais je n'arrive pas à l'utiliser.
    J'ai récupéré le programme minimal du site de videoLAN

    J'ai suivi la procédure de ce topic, c'est à dire :
    - copie de VLC\sdk\include à la racine de mon projet
    - ajout des DLL via la commande QT : 'ajouter une bibliothèque' (clic droit sur le projet)
    - ajout de #include <vlc/vlc.h> dans le main.


    J'obtiens à l'exécution du programme (parce que la compilation ne me signale pas d'erreur) :

    Démarrage de C:\Documents and Settings\thomazop\Bureau\STAGE\Programmation\Qt_Projets\test_video_libvlc\test_video_libvlc-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Release\release\test_video_libvlc.exe...Le programme s'est terminé subitement.
    C:\Documents and Settings\thomazop\Bureau\STAGE\Programmation\Qt_Projets\test_video_libvlc\test_video_libvlc-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Release\release\test_video_libvlc.exe a quitté avec le code -1073741515
    à tout hasard, je vous met le code (j'ai pris le temps de voir le bêtisier...)

    le .pro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SOURCES += \
        main.cpp
     
    LIBS += -Llib -Lvlc
     
    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../../../../../VideoLAN/VLC/sdk/lib/ -llibvlc
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../../../../../VideoLAN/VLC/sdk/lib/ -llibvlcd
     
    INCLUDEPATH += $$PWD/../../../../../../../../VideoLAN/VLC/sdk/include
    DEPENDPATH += $$PWD/../../../../../../../../VideoLAN/VLC/sdk/include
    le main.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
    40
    41
     
    #include <windows.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <vlc/vlc.h>
     
    using namespace std;
     
    int main()
    {
        libvlc_instance_t * inst;
        libvlc_media_player_t *mp;
        libvlc_media_t *m;
     
        /* Load the VLC engine */
        inst = libvlc_new (0, NULL);
     
        /* Create a new item */
        m = libvlc_media_new_path (inst, "C:\test.avi");
     
        /* Create a media player playing environement */
        mp = libvlc_media_player_new_from_media (m);
     
        /* No need to keep the media now */
        libvlc_media_release (m);
     
        /* play the media_player */
        libvlc_media_player_play (mp);
     
        Sleep (10); /* Let it play a bit */
     
        /* Stop playing */
        libvlc_media_player_stop (mp);
     
        /* Free the media_player */
        libvlc_media_player_release (mp);
     
        libvlc_release (inst);
     
        return 0;
    }


    Voilà.
    Alors je pense qu'il s'agit d'un problème de version de libvlc, mais je ne suis pas certain, et si c'est le cas, je ne sais pas comment l'utiliser (même avec la doc...).

    Merci de votre aide !



    PS : je travaille sous windows xp.

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    google dit: "...and after run the project Qt gave me an errors VLC2.exe exited with code -1073741515. You should use libvlc.dll, not vlc.exe."

    j'imagine donc que tu devrais te pencher sur cet aspect du problème.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    au risque de paraître stupide :

    Je n'ai pas compris ta réponse (mais c'est gentil de répondre ).
    J'importe la libvlc dans mon projet (les .h), et je link vers les DLLs.

    alors, pourquoi tu pense que c'est dû à vlc.exe


    sinon, je trifouille encore, et au débogage, il me sort : "une exception a été déclenchée : DLL not found"
    Mais pourtant je lui ais mis les DLLs...

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    quel IDE utilises-tu ? es-tu sûr que l'execution path est correct ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    je suis sous QtCreator.

    Et non, je ne suis pas sûr de l'execution path.
    Comment dois je le configurer ?

  6. #6
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Essaye de coller les dlls à coté de ton exécutable.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    non plus hélas...

    j'en conclus que le problème est qu'il ne trouve pas les DLL, même si elles sont dans le même dossier... (digne de captain obvious, celle là).
    Pour info, j'ai essayé de mettre les DLLs un peu partout autour du projet, sans amélioration.

    J'imagine que j'ai un souci avec l'édition des liens, donc y-a t'il une méthode pour cela ?

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par leternel Voir le message
    Essaye de coller les dlls à coté de ton exécutable.
    Puis de lancer l'exécutable sans passer par l'IDE.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    je pensais que c'était évident...
    j'ai lancé l’exécutable en double-cliquant dessus, sans oublier les DLLs nécessaires à son fonctionnement (libvlc.dll et libvlccore.dll, ainsi que celles relatives à Qt)

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bon, j'apporte quelques info :

    j'avais bien un souci de DLLs pas trouvable, et j'ai corrigé ce problème en mettant mes DLLs dans C:/Windows/system32

    par contre, ça fait que mon programme n'est pas portable (enfin, je vois pas comment...)
    à vos avis, quelle pourrait être la solution ?



    autre souci (corrigé), il faut faire attention à ce genre de chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m = libvlc_media_new_path (inst, "C:\test.avi");
    à remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m = libvlc_media_new_path (inst, "C:\\test.avi");
    Sinon, ben l'instruction renvoi NULL... (et tout plante derrière).

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par piotres Voir le message
    je pensais que c'était évident...
    j'ai lancé l’exécutable en double-cliquant dessus, sans oublier les DLLs nécessaires à son fonctionnement (libvlc.dll et libvlccore.dll, ainsi que celles relatives à Qt)
    - Si on parle d'execution path c'est parce qu'on lance via l'IDE
    - l'anti-slash est un caractère spécial dans une chaîne de caractères
    - C:/Windows/system32 est un des emplacements où une application va chercher ses DLL, l'autre étant le dossier où se trouve l'application
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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