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

API graphiques Discussion :

[Newbie] utilisation de ffmpeg


Sujet :

API graphiques

  1. #1
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut [Newbie] utilisation de ffmpeg
    J'ai trouvé un tuto sur ffmpeg ici :

    http://www.dranger.com/ffmpeg/tutorial01.html

    quand je compile j'ai cette erreur, si quelqu'un à une idée.

    D:\ls\prod\testffmpeg>mingw32-gcc -o main main.c -Id:\ffmpeg -Ld:\sources\ffmpeg -lavformat -lavcodec
    main.c: In function `int main(int, char**)':
    main.c:82: error: request for member `streams' in `pFormatCtx', which is of non-class type `AVFormatContext*'
    main.c:90: error: cannot convert `AVCodecContext' to `AVCodecContext*' in assignment
    main.c:123: error: `av_read_frame' was not declared in this scope
    Merci.

  2. #2
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    corriges moi si je me trompe mais il me semble que tu compiles avec mingw, probablement sous code blocks ?

    pour ma part je n'ai pas de soucis pour compiler cet exemple sous code blocks
    à moins de passer par un makefile, ce qui n'est pas mon cas, il faut créer un projet avec le fichier c et linker avec les bibliothèques suivantes :
    libavformat.a
    libavcodec.a
    libavutil.a
    assures toi d'avoir correctement installé les fichiers de ffmpeg (includes et libs) et ça devrait passer

    un problème tout de même, la fonction "img_convert" utilisée dans le tutoriel a été dépréciée et ne fait plus partie de la lib (su moins la version que j'ai)
    si tu as ce problème il faut donc mettre la ligne en commentaire pour compiler mais il faut chercher commencer faire la même chose avec d'autres méthodes à la place pour que ça marche
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  3. #3
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Citation Envoyé par shenron666
    corriges moi si je me trompe mais il me semble que tu compiles avec mingw, probablement sous code blocks ?


    Non t'as tout a fait raison!!

    J'ai fait quelques modifs depuis j'ai récupéré les sources du svn donc les dernières j'ai compilé pour avoir les différents .a.

    Je les ai linker sous code::blocks et du coup j'ai moins d'erreurs.. en faite j'en ai 1 au lieu de 3.

    D:\sources\ffmpeg\avcodec.h|2329|warning: `ImgReSampleContext' is deprecated (declared at D:/sources/ffmpeg/avcodec.h:2323)|
    D:\sources\ffmpeg\avcodec.h|2339|warning: `ImgReSampleContext' is deprecated (declared at D:/sources/ffmpeg/avcodec.h:2323)|
    D:\ls\prod\testffmpeg\main.cpp||In function `int main(int, char**)'
    D:\ls\prod\testffmpeg\main.cpp|81|warning: comparison between signed and unsigned integer expressions|

    D:\ls\prod\testffmpeg\main.cpp|82|error: request for member `streams' in `pFormatCtx', which is of non-class type `AVFormatContext*'|

    D:\ls\prod\testffmpeg\main.cpp|133|warning: `img_convert' is deprecated (declared at D:/sources/ffmpeg/avcodec.h:2491)|
    D:\ls\prod\testffmpeg\main.cpp|135|warning: `img_convert' is deprecated (declared at D:/sources/ffmpeg/avcodec.h:2491)|
    ||=== Build finished: 1 errors, 5 warnings ===|
    l'erreur qui reste était là avant!

    Merci pour ton aide.

  4. #4
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    je n'ai pas cette erreur, j'ai bien regardé réfléchi dans tous les sens à ton problème et j'ai remarqué un détail qui a peut-etre son importance :
    tu compiles un main.cpp
    un fichier cpp est un fichier c++ et le compilateur travaille donc en c++
    essaies de le renommer en main.c pour utiliser le compilateur c
    ffmpeg étant une bibliothèque c à la base

    perso si je nomme ma source en main.cpp j'ai des erreurs
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  5. #5
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Merci pour ton aide.

    Ca compile mais j'ai pleins de "undefined reference" c'est que le linkage ne se fait pas?

    J'ai pourtant paramétré en rajoutant les librairies dans les chemins ou il me demande des linker et j'ai rajouter les fichiers .a aussi.

    J'ai essayé de lancer en ligne de commande j'ai les mêmes messages d'erreur, pourtant j'ai bien mis mes librairies après le -L et mes -lavcodec etc.. si je mets des fautes dans le nom des librairies exemple -lavcodksjdfhjk au lieu de -lavcodec il me mets un message comme quoi il ne trouve pas -lavcodksjdlskf...

    Donc mes liens doivent être bon?

  6. #6
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    oui ce sont bien des erreurs de lien
    l'ordre des bibliothèques peut avoir une influence sur le linker
    dans l'ordre je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    avformat
    avcodec
    avutils
    swscale
    si les erreurs persistent, tu n'as peut-etre pas la bonne version des bibliothèques et les méthodes sont manquantes dans le binaire
    je ne vois pas ce que ça pourrait être d'autre
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  7. #7
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    J'ai mis les lib dans l'ordre que t'as dis mais j'ai pas la lib swscale (j'ai pas le .a). J'ai compilé les dernières sources récupérés sur svn et il ne m'a pas créer le fichier swscale alors qu'il m'a bien créer les autres.

    En gros mes messages d'erreur ressemble à ca :

    d:\sources\ffmpeg\libavformat\rtsp.c|672|undefined reference to `ntohl@4'|

    et l'erreur de undefined reference est sur un fichier source de libavformat, ca doit être un autre problème, doit y avoir une autre manip à faire!

  8. #8
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Je viens de tester le tuto n°2 et j'ai les mêmes messages d'erreurs :

    C:\Documents and Settings\grab\Bureau\tuto2>mingw32-gcc -o tuto2 tuto2.c -Id
    :\sources\SDL-1.2.13\include\SDL -Id:\sources\ -Ld:\sources\ffmpeg\lib -Ld:\sour
    ces\SDL-1.2.13\lib -lavformat -lavcodec -lavutil -lm -lSDL -lSDLmain

    tuto2.c: In function `main':
    tuto2.c:137: warning: `img_convert' is deprecated (declared at d:/sources/ffmpeg
    /avcodec.h:2491)

    d:\sources\ffmpeg\lib/libavformat.a(rtsp.o): In function `rtsp_parse_line':
    d:/sources/ffmpeg/libavformat/rtsp.c:672: undefined reference to `ntohl@4'

    d:\sources\ffmpeg\lib/libavformat.a(rtsp.o): In function `rtsp_read_header':
    d:/sources/ffmpeg/libavformat/rtsp.c:976: undefined reference to `htonl@4'
    d:/sources/ffmpeg/libavformat/rtsp.c:977: undefined reference to `inet_ntoa@4'
    d:\sources\ffmpeg\lib/libavformat.a(rtsp.o): In function `rtsp_read_packet':
    d:/sources/ffmpeg/libavformat/rtsp.c:1195: undefined reference to `select@20'
    d:/sources/ffmpeg/libavformat/rtsp.c:1200: undefined reference to `__WSAFDIsSet@
    8'
    d:\sources\ffmpeg\lib/libavformat.a(rtsp.o): In function `sdp_read_header':
    d:/sources/ffmpeg/libavformat/rtsp.c:1417: undefined reference to `inet_ntoa@4'
    d:\sources\ffmpeg\lib/libavformat.a(rtpproto.o): In function `rtp_read':
    d:/sources/ffmpeg/libavformat/rtpproto.c:214: undefined reference to `select@20'

    d:/sources/ffmpeg/libavformat/rtpproto.c:217: undefined reference to `__WSAFDIsS
    et@8'
    Je file la ligne de commande ca sera plus simple si je me suis trompé quelque part pour trouver une solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Documents and Settings\grab\Bureau\tuto2>mingw32-gcc -o tuto2 tuto2.c -Id:\sources\SDL-1.2.13\include\SDL -Id:\sources\ -Ld:\sources\ffmpeg\lib -Ld:\sources\SDL-1.2.13\lib -lavformat -lavcodec -lavutil -lm -lSDL -lSDLmain
    Peut etre c'est pas compilable avec mingw?

    Sachant que j'ai le même message d'erreur sous code::blocks.

  9. #9
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    je l'ai bien compilé sous code::blocks avec mingw32
    je me demande s'il n'y a pas une histoire de fine là derrière, je crois me souvenir qu'il faut définir WIN32 si tu compiles sous windoze
    je vais recréer le projet sous code::blocks pour voir ce que ça donne
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  10. #10
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    C'est pas très simple d'utiliser ffmpeg...
    J'ai utilisé ce tutoriel pour réussir à recompiler une version et la paramétrer (en shared dans mon cas)

    Tu peux naviguer grâce au menu à droite et c'est assez bien fait pour à chaque fois indiquer les étapes qu'il faut connaitre avant de compiler ffmpeg.

    Installer MSys+MinGW etc... Tout est indiqué du début à la fin.

    Je te conseil aussi d'utiliser FOBS en surcouche si tes besoins sont assez "basique".

  11. #11
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    Salut,

    je vais recréer le projet sous code::blocks pour voir ce que ça donne
    Te donne pas trop de mal de toute façon j'ai compris le principe je l'ai intégré à mon projet et ca fonctionne du coup je ne fait que lire les tutos pour m'en inspirer (faire des copier/coller) pour mon programme.


    Je te conseil aussi d'utiliser FOBS en surcouche si tes besoins sont assez "basique".
    Je dois vraiment être mauvais parce que j'ai pas réussi à le faire fonctionner .

    De toute façon ce tuto commence à dater, même s' il m'est très utile, je suis obligé de remettre au gout du jour certaines fonctions déprécié... rien n'est simple.

    Merci pour votre aide.

    PS : je persévère et j'espère bien réussir à compiler ce tuto .

  12. #12
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 184
    Points
    5 184
    Par défaut
    bon courage, je trouve ffmpeg vraiment tordu à compiler, en tout cas sous windows
    je m'intéresse plus à libvlc et pour l'instant j'ai bien l'impression que c'est pire
    moi qui pensais pouvoir m'en sortir après avoir réussi à me dépatouiller avec ffmpeg
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  13. #13
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Points : 730
    Points
    730
    Par défaut
    C'est pas encourageant!!!

  14. #14
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 23
    Points : 20
    Points
    20
    Par défaut
    j'ai utilisé le wizard codeblocks pour créer un projet wxwidgets , j'ai linké les lib (dynamique) de ffmpeg sous codeblocks et j'ai linké les llib sdl, ca compile sans probleme, mais je sais pas pourquoi ca compile pas avec les lib statique de ffmpeg. et si je link directement sans creer un projet wxwidgets par codeblocks ca compile pas aussi, je croi qu'il y a des lib qu'il faut linker et c'est fai automatiquement avec le wizard de codeblocks-> wxwidgets, il faut les chercher. mais en generale avec ca j'ai reussi à compilé sans probleme le tuto http://dranger.com/ffmpeg/tutorial08.html.

Discussions similaires

  1. utilisation de FFmpeg
    Par didou91 dans le forum Langage
    Réponses: 6
    Dernier message: 16/02/2013, 16h01
  2. Utilisation de FFMPEG avec Tcl
    Par AlexDD dans le forum Tcl/Tk
    Réponses: 2
    Dernier message: 06/12/2012, 02h59
  3. Utilisation de FFMPEG
    Par Electroniktor dans le forum Bibliothèques
    Réponses: 4
    Dernier message: 22/06/2011, 10h35
  4. [Newbie] Utilisation des classes
    Par v4np13 dans le forum Langage
    Réponses: 7
    Dernier message: 03/05/2007, 21h12
  5. [mySQL] Newbie : Utilisation de CASE
    Par SergeF dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 14/07/2005, 00h39

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