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

Bibliothèques C++ Discussion :

Lecture vidéo, quelle bibliothèque est le plus adapté ?


Sujet :

Bibliothèques C++

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 356
    Points : 206
    Points
    206
    Par défaut Lecture vidéo, quelle bibliothèque est le plus adapté ?
    Bonjour à tous, mon objectif est de pouvoir lire une vidéo (avec le plus de format possibles supportés). Pour cela, il y a quelques fonctions dont j'ai réellement besoin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    uint32_t* GetNextImage(); /*Au format RGBA*/
    void SetReadPosition(unsigned int pos);
    unsigned int GetNumberImagePerSec();
    unsigned int GetNumberImageTotalInVideo();
     
    /*Et la même chose pour le son*/
    D'après mes recherches, j'ai trouvé 3 bibliothèques :
    -ffmpeg
    -OpenCV
    -libvlc

    Y en t-il d'autres (de portable) ?
    Laquelle est-elle le plus adaptée à mon utilisation ?

    Merci à tous.

  2. #2
    Membre averti Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Points : 302
    Points
    302
    Par défaut
    Hello,
    Personnellement j'utilise ffmpeg (en fait libavcodec et libavformat) et j'en suis très satisfait, même si son utilisation est un poil ardue. Il s'agit probablement de la lib prenant en charge le plus de format et par conséquent une des plus utilisées (la libvlc n'est qu'une surcouche de ffmpeg). Tu trouveras ici un exemple d'utilisation pour l'extraction des frames video d'un film.

  3. #3
    Membre actif

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 356
    Points : 206
    Points
    206
    Par défaut
    Merci, j'ai commencer à lire une vidéo avec ffmpeg, j'y arrive. Malheuresement, la bibliothèque que j'utilise n'est capable de charger des images que de format RGBA. Ceci me pose donc un problème de performance :
    -On decode le frame avec ffmpeg.
    -On le convertit avec sws_scale (img_convert n'est plus fournit).
    -Je le reconvertit à la main en RGBA.

    Ma question est : quel est le format par défaut de ffmpeg et quels sont les changements à faire au niveau de AVPictureFill et autre pour me laisser faire la conversion à la main.

    De plus, je n'est pas compris ce que contenait ce buffer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    buffer=new uint8_t[numBytes];
     
        // Assign appropriate parts of buffer to image planes in pFrameRGB
        avpicture_fill((AVPicture *)pFrameRGB, buffer, PIX_FMT_RGB24,
            pCodecCtx->width, pCodecCtx->height);
    Que changer si je n'utilise pas le format RGB mais celui par défaut de ffmpeg ?

  4. #4
    Membre averti Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Points : 302
    Points
    302
    Par défaut
    Hello,
    Effectivement tu n'as pas le choix, tu dois convertir de YUV->RGB->RGBA. Les étapes sont alors:
    - lecture du packet
    - décodage du packet dans un AVFrame. A ce moment, l'image est stockée dans cette frame au format YUV (généralement)
    - Conversion en RGB et éventuel resize avec sws_scale et le SwsContext associé.
    - Remplissage de ta structure RGBA.

    Je ne connais pas le format que tu utilises, mais il est possible de faire pointer le champ data de l'AVFrame de destination (sortie de la conversion YUV->RGB) vers ta structure de donnée si tu peux l'avoir en RGB plutôt que RGBA. Quelle est la lib que tu utilise?

  5. #5
    Membre averti Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Points : 302
    Points
    302
    Par défaut
    Après vérification, il existe le format PIX_FMT_RGB32 (type ARGB) dans ffmpeg. Il est donc probablement possible de rediriger la sortie de sws_scale vers ta structure ARGB.

  6. #6
    Membre actif

    Profil pro
    Inscrit en
    Avril 2010
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 356
    Points : 206
    Points
    206
    Par défaut
    Le ffmpeg que j'utilise me dis que PIX_FMT_RGBA32 n'est pas définit. Par contre, PIX_FMT_RGBA est définit mais ne semble pas être en 32 bits.
    Je vais voir en installant une autre version de ffmpeg.

  7. #7
    Membre averti Avatar de vikki
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 292
    Points : 302
    Points
    302
    Par défaut
    Tu dois également avoir PIX_FMT_ARGB, plus proche de ce que tu cherches.

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/07/2015, 18h12
  2. silverlight ou adobe air et flex qui est le plus adapté
    Par zup17 dans le forum Silverlight
    Réponses: 0
    Dernier message: 18/04/2009, 14h46
  3. regex quelle librairie est la plus rapide
    Par ouiouioui dans le forum Débuter
    Réponses: 11
    Dernier message: 28/01/2009, 15h23
  4. Quel langage est le plus adapté pour faire ce script ?
    Par koKoTis dans le forum Langages de programmation
    Réponses: 8
    Dernier message: 15/08/2006, 19h00
  5. [Copie de Fichier] Quelle méthode est la plus rapide ?
    Par n@n¤u dans le forum Entrée/Sortie
    Réponses: 16
    Dernier message: 04/05/2006, 13h59

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