Forum Linux.embarqué Lire une vidéo sur ARM avec Qt

Posté par .
Tags : aucun
1
19
oct.
2012

Bonjour à tous!

Je développe une appli Qt sur ARM et je souhaite y ajouter des vidéos.

J'ai tout d'abord opté pour une solution simple et rapide, en compilant mplayer. Il fonctionne bien, et j'ai voulu le piloter en ligne de commande via mon appli qt. Le problème étant que je suis en devfb, le passage d'argument -wid ne fonctionne pas et mes deux process (Qt et Mplayer) se batte pour l'accès au /dev/fb0 ce qui se traduit par un clignotement sur l'écran. Ok, je passe en fullscreen et je close mplayer sur un clique: 1 fois sur 2 je perds la main sur mon appli Qt malgré un refresh… (NB: peut être que je fais mal les choses?)

Suite à cet échec, je suis passé à l’artillerie lourde, en recompilant Qt avec phonon (donc le backend gstreamer, donc la glib). Après une petite semaine de bagarre, le ./configure de Qt trouve tout ce qu'il a besoin pour phonon. J'exécute donc la démo mediaplayer sur la cible mais je me prends des messages d'erreur:

(gst-plugin-scanner:886): GLib-GObject-CRITICAL **: gtype.c:2720: You forgot to call g_type_init()

Je lance directement gst-plugin-scanner et j'ai le même problème.

Très peu de chose à googliser sur ce problème, mais il semble qu'il me faille appeler g_type_init() de la glib avant tout utilisation. Je modifie donc la démo mediaplayer mais j'ai encore le même problème.

Finalement je trouve un wrapper appelé qt-gstreamer-0.10.2 mais je n'arrive pas à le cross-compiler…

Je suis donc revenu à ma première initiative avec mplayer en cherchant à l'afficher sur un second buffer vidéo (overlay et co) mais mon /dev/fb1 semble réservé à l'OSD…

J'arrive à court d'idée et j'ai besoin de vous pour me remotiver, j'y crois encore!!!

Que me conseillez vous?

  • # qwebview et html5 ?

    Posté par . Évalué à 0.

    Sans se casser la tête si t'a moyen de choisir les formats vidéos utilisés … un qwebview et de l'html5 ?

    a+
    Éric

    • [^] # Re: qwebview et html5 ?

      Posté par . Évalué à 2.

      Là, je suis hyper-content ! Enfin je sais pas si je suis hyper-content, mais en tout cas j'ai vomi.

    • [^] # Re: qwebview et html5 ?

      Posté par . Évalué à 0.

      Peux tu me donner plus d'info la dessus? Veux-tu dire que le QtWebKit 1.0 du QML est capable de lire des vidéos simplement du fait qu'il supporte du html5 ???

      J'affiche déjà quelques pages html (docbook) pour de l'aide en ligne.

      Comment puis-je tester tes dires?

      • [^] # Re: qwebview et html5 ?

        Posté par . Évalué à 2.

        Ben il me semble bien avoir fait ça oui !

        une page html, une vidéo webm ou ogv en fonction de ta version de Qt et roulez les enfants.

        <html>
        <video controls="controls" autoplay="true" width="640" height="480">
          <source src="20120721-demonstration_abuledu_data.webm" type="video/webm" />
          <source src="20120721-demonstration_abuledu_data.ogv" type="video/ogg" />
        </video>
        </html>
        
        

        a+
        Éric

    • [^] # Re: qwebview et html5 ?

      Posté par . Évalué à 2.

      Je ne comprends pas pourquoi je me choppe un -1 comme éval sur ce commentaire … c'est si idiot que ça comme idée ?

      Éric

  • # X11

    Posté par . Évalué à 1.

    En passant par Xorg c'est facile, car les appli n'écrivent pas directement dans le framebuffer, et c'est Xorg qui s'occupe de placer la video par dessus le programme Qt.

    Quel est l'intérêt d'utiliser Qt en mode framebuffer ?

    • [^] # Re: X11

      Posté par . Évalué à 2.

      De ne pas utiliser de serveur X ? A priori trop lourd pour une petite bête en ARM.

      • [^] # Re: X11

        Posté par . Évalué à 1.

        C'est pas énorme non plus

        apt-get install -o APT::Install-Recommends=false" xserver-xorg-core xserver-xorg-video-fbdev xserver-xorg-input-evdev :

        Après cette opération, 12,8 Mo d'espace disque supplémentaires seront utilisés.

        apt-get install -o APT::Install-Recommends=false" libqtcore4 libqtgui4 :

        Après cette opération, 27,2 Mo d'espace disque supplémentaires seront utilisés.

        Après au niveau performances CPU et quantité RAM pour Xorg je sais pas trop

        • [^] # Re: X11

          Posté par . Évalué à 1.

          Oui, lourd dans ce sens.
          Un point important est que Xorg ne bénéficie pas de l'accélération graphique potentielle de la bête.
          Il suffit de voir la lenteur d'un Raspberry Pi sous lxde, alors que les gens font des trucs de ouf' avec Qt/OpenGl & co.

          • [^] # Re: X11

            Posté par . Évalué à 1.

            Mais si par exemple Qt est compilé avec le support openGL ES de la puce graphique, sachant que c'est Qt qui dessine tout ses Widget / animations, alors Xorg n'a pas besoin d'accélération graphique ?

            Pareil par exemple pour GStreamer ?

            Xorg ne fait que fournir des framebuffers intermédiaires qu'il va ensuite superposer (role du compositeur) ?

            • [^] # Re: X11

              Posté par . Évalué à 1.

              Mais dans ce cas il n'y a pas besoin de X, je me trompes ?

              • [^] # Re: X11

                Posté par . Évalué à 0.

                justement, dans ce cas X regle le probleme d'acces concurrent au framebuffer, en placant la video par dessus la fenetre Qt

                • [^] # Re: X11

                  Posté par . Évalué à 0.

                  par contre une question technique
                  pour les architectures ARM, pourquoi est il necessaire de tout recompiler (Qt ou GStreamer par exemple) pour profiter de l'acceleration graphique d une puce, alors que c pas le cas pour des cartes graphiques normales (Radeon, Geforce …) ?

  • # Lire une vidéo sur ARM avec Qt

    Posté par . Évalué à 1.

    Bonjour,

    Merci de ta réponse!

    L'intérêt est de ne pas avoir à embarquer X11 sur un petit micro avec une petite mémoire !!!

    Je suis sur un micro ARM11 (plateforme type mini6410)

    • [^] # Re: Lire une vidéo sur ARM avec Qt

      Posté par . Évalué à 1.

      Ok,

      Moi je fais du développement sur des processeurs ARM Omap Cortex-A8 fréquence 1GHz, donc c'est suffisament performant pour faire tourner Xorg.

      Par contre pour économiser de la place je n'installe que les parties de Xorg qui me sont nécessaires.
      Sur Debian ça donne :

      /etc/apt/apt.conf :
      APT::Install-Recommends "false";

      apt-get install xserver-xorg-core xserver-xorg-video-fbdev xserver-xorg-input-evdev

      Ca évite d'installer tout les packages inutiles pour ma plateforme :
      xserver-xorg-input-synaptics xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-apm xserver-xorg-video-ark xserver-xorg-video-ati xserver-xorg-video-chips xserver-xorg-video-cirrus xserver-xorg-video-i128 xserver-xorg-video-i740 xserver-xorg-video-mach64 xserver-xorg-video-mga xserver-xorg-video-neomagic xserver-xorg-video-nv xserver-xorg-video-r128 xserver-xorg-video-radeon xserver-xorg-video-rendition xserver-xorg-video-s3 xserver-xorg-video-s3virge xserver-xorg-video-savage xserver-xorg-video-siliconmotion xserver-xorg-video-sis xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident xserver-xorg-video-tseng xserver-xorg-video-vesa xserver-xorg-video-voodoo
      (et leurs dépendances)

      Sinon j'avais testé à l'époque une version allégée du serveur Xorg pour démarrer plus rapidement : Xfbdev

      Mais je n'avais pas réussi a faire fonctionner une dalle tactile avec…

  • # VLC ?

    Posté par (page perso) . Évalué à 2.

    Il existe des wrappers (ils simplifient juste l'api) pour utiliser la lib VLC dans des applications Qt. Je sais pas si cela peut t'aider: http://projects.tano.si/en/library/download

  • # Merci...

    Posté par . Évalué à 1.

    Merci à tous pour ces pistes! Je regarde ça __^

  • # RESOLU

    Posté par . Évalué à 0.

    Bonjour/Bonsoir!

    Et bien j'ai finalement réussi à faire ce que je souhaitais. J'ai modifier un des drivers de mplayer (celui qui écrit des images pnm au lieu d'ouvrir le buffer vidéo). Les images ne sont plus écrites sur le disque mais envoyé par messagerie IPC. Mon appli les récupèrent puis les affiche.

    Ca marche niquel et c'est assez fluide B)

    Merci pour votre participation!

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.