Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. Trying to play a video .... such a problem
Forum Updated to NodeBB v4.3 + New Features

Trying to play a video .... such a problem

Scheduled Pinned Locked Moved QML and Qt Quick
10 Posts 3 Posters 6.9k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • O Offline
    O Offline
    OlivierH
    wrote on last edited by
    #1

    Hi everybody !

    I'm trying to make a QML plugin which can play a video. So I tryed some things :

    • using Multimedia Toolkit : but I am under Windows OS (XP for developping and 7 for the execution)
    • using Qt5.0 (great job guys ;)) on 7 looks great, but it still don't work on XP. Moreover QtQuick 2.0 have change the OpenGL version ... it can't work with my app ...
    • using Phonon : it's a good widget, but when I add OpenGL, perfs are soooo bad ....
    • using QMovie : I can't open a video file format :| just images are supported ....

    So ...

    Does anybody has the same problem or a resolution of this one (like the creation of a plugin ....) ?

    Thank you guys !

    1 Reply Last reply
    0
    • sierdzioS Offline
      sierdzioS Offline
      sierdzio
      Moderators
      wrote on last edited by
      #2

      You don't have to create anything. MultimediaPlayer, Audio and Video are the things ("link":http://doc-snapshot.qt-project.org/5.0-newdocs/qtmultimedia/qml-multimedia.html).

      (Z(:^

      1 Reply Last reply
      0
      • O Offline
        O Offline
        OlivierH
        wrote on last edited by
        #3

        In fact, I have already try QT5.0 with QtQuick 2.0 .... but it isn't compatible with my app : I really need to use OpenGL as it was in the last version ...

        Moreover : this doesn't work on my Win XP ....

        1 Reply Last reply
        0
        • M Offline
          M Offline
          mrcdrc
          wrote on last edited by
          #4

          I have done this recently based on Qt4.8/QtQuick1 using the VLC libraries (QtMediaHub was a good guidance on how to do this). Note that a VLC installation on Windows already contains the required VLC-Sdk. For me this works flawlessly on an XP machine. You can take a look at my code here: https://www.dropbox.com/s/djf3bav7ftcoa26/MediaPlayer.tar.gz This is of course work in progress...

          I tried to mimic the behavior of the MediaPlayer and VideoOutput components that are provided by QtQuick2.

          If you're buidling on a Windows machine don't forget to setup the paths to the VLC-Sdk in the MediaPlayer.pro file. On Linux you propably will have to install the vlc sdk separately.

          mrc

          1 Reply Last reply
          0
          • O Offline
            O Offline
            OlivierH
            wrote on last edited by
            #5

            Thank you so much mrcdrc ! This works quite well ... But I still face some problems ....

            First, the video output has to be the last thing that my QML file draw otherelse my video won't be played (qml error message : main vout display error: Failed to set on top.).

            Then, if I try to insert an Image object, my video don't play anymore ... Like a non-managed exception in qmlviewer, my app close and this qml error message : main vout display error: Failed to set on top.

            Have you ever face this bug ? And do you have any lead to resolve this problem ?

            Thank you folks !
            Olivier

            1 Reply Last reply
            0
            • M Offline
              M Offline
              mrcdrc
              wrote on last edited by
              #6

              Actually, the error message "main vout display error: Failed to set on top" is related to vlc. When i noticed it first, i googled a bit and found people stating that it can safely be ignored...
              Are you using QGLWidget as i proposed in the provided example code? I meanwhile changed this to be conditionally invoked only if at least OpenGL 2.1 is present, i otherwise experienced significant performance hits on an older XP machine.

              I did something like:

              @
              if(QGLFormat::openGLVersionFlags() & QGLFormat::OpenGL_Version_2_1) {
              QGLWidget *glw = new QGLWidget;
              viewer.setViewport(glw);
              }
              @

              So far i wasn't able to reproduce your problem when placing an 'Image {...}' on top - it shows up as expected while video is playing...

              Maybe you can provide a stripped down code snipped to see if i can reproduce the problem (and possibly fix it).

              Cheers
              mrc

              1 Reply Last reply
              0
              • O Offline
                O Offline
                OlivierH
                wrote on last edited by
                #7

                Ok, well I made a C++ plugin which use your abstractmediaplayer, videooutput, videopresenter and your videoplayer. This plugin is a DLL file which expose my VideoPlayer and VideoOutput types.

                Then, I made a Main.qml which contains @Rectangle
                {
                id:root
                width:1024
                height:768
                VideoPlayer{
                id: player
                source: "D:/Aspen.avi"
                autoPlay: true
                function togglePlayback() {
                if(!player.playing) {
                player.play()
                }else if(!player.paused)
                player.pause()
                else
                player.resume()
                }
                }

                Rectangle{
                    id:snd
                    width:root.width*2/3
                    height: root.height
                    x:root.width/3
                    color:"green"
                }
                Rectangle{
                    id:charts
                    width:root.width/3
                    height:root.height/2
                    y:root.height/2
                    Image{
                        width: parent.width
                        height: parent.height
                        fillMode: Image.PreserveAspectFit
                        source: "img/toto.png"
                    }
                }
                
                Rectangle{
                    width:root.width/3
                    height:root.height/2
                    color:"black"
                
                    VideoOutput {
                        id: videoOutput
                        source: player
                        anchors.fill: parent
                        fillMode: VideoOutput.PreserveAspectFit
                        smooth: true
                    }
                }
                

                }@

                This main imports the VideoOutput & VideoPlayer with a qmldir. When I load an Image, my VS Just in Time debogger is warning me and asks me if I want to debug my app .... But I don't know why... When I delete the Image tag, my Video runs as I want...

                Thank you !
                Oliv

                1 Reply Last reply
                0
                • O Offline
                  O Offline
                  OlivierH
                  wrote on last edited by
                  #8

                  Hey guys ! I don't know what happend but my plugin works quite well ! I just add some QDebug (I think that I previously have a compilation bug ...) and now my video is playing quite well !!

                  Thank you so much !

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    mrcdrc
                    wrote on last edited by
                    #9

                    Hey Oliv,

                    this is great news!

                    I meanwhile tried your Main.qml example with my non-plugin based code and it worked as expected. No matter were i place the VideoOutput element, with or without the Image element - makes no difference. So it really might be compiler related (my builds are all based on gcc - linux&win32).

                    Cheers
                    mrc

                    1 Reply Last reply
                    0
                    • O Offline
                      O Offline
                      OlivierH
                      wrote on last edited by
                      #10

                      Erf, actually, I have a bad news...

                      The video works... but just when my computer want it... So I can't tell what is my new bug... I will try to find an explanation or something...

                      Thank you guys !

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved