Binaries for POT 5.3.0-beta1 on Qt 5.6.0 and Experimental Accelerated QtWebKit

Featured Video Play Icon

This is an experimental version of POT that includes a few new features. The driver now includes an experimental version of playback of remote content including proper buffering of the media and the QtWebKit library is able to play videos using proper hardware acceleration.

Features

The driver can now be used through the regular Qt/QML interface to play content over protocols different from file://. I only tested HTTP but others should be available.
This new feature allowed me to also implement a new player in QtWebKit using the POT driver to stream content to the regular Qt QWebView. Unfortunately I could only find the time to implement this in the WebKit 1 branch, not in WebKit 2 which requires more work. This makes the implementation hardly useful, but it is a start. If anyone wanted to contribute this is where to start. This video shows the new implementation in action:

As QtWebKit now uses the GPU properly, I could also implement a YouTube player app using the same QWebView with just a few lines of regular Qt code:

In the video you can also see an application I wrote to implement a YouTube fullscreen player using the YouTube iframe API. Such a sample app is also included in the package.

Of course the real target would be to implement this in QtWebEngine. I was never able to find a version of QtWebEngine with video acceleration for Pi. Anyone who knows one?

Package

The package now includes:

  • build_valgrind.tar: a build of valgrind to analyse your code;
  • libpiomxtextures_qmlutils.so: QML plugin to provide a video probe in QML;
  • piomxtextures_browser_we: an application that tests the QtWebEngine module (run passing a URL, ./piomxtextures_browser_we http://www.youtube.com);
  • piomxtextures_browser_wk: an application that tests the QtWebKit module:
    • you can run on WebKit 1 like ./piomxtextures_browser_wk http://www.youtube.com;
    • or you can run on WebKit 2 like ./piomxtextures_browser_wk –wk2 http://www.youtube.com;
  • piomxtextures_pocplayer: a sample QML player;
  • piomxtextures_pocplayer_yt: a youtube sample player (run passing a video ID like ./piomxtextures_pocplayer_yt 71UvXMzVgx4);
  • qtdeps.tar: the usual libs needed by Qt and POT;
  • Qt-rasp2-5.6.0.tar: a build of Qt 5.6.0 stable including:
    • regular Qt 5.6.0 modules;
    • untested bluetooth module including BLE support;
    • untested MySQL plugin;
    • untested QtFtp module;
    • untested Qt hat tools module;
    • QtWebEngine;
    • QtWebKit.

Download POT 5.3.0-beta1 for Raspbian Jessie Lite Pi2 (also tested on Pi3) here (md5: edbe0ad2a552a5c8280e3876d16b237d).

45 thoughts on “Binaries for POT 5.3.0-beta1 on Qt 5.6.0 and Experimental Accelerated QtWebKit”

  1. Hello!

    I have compiled and tested your project.
    I try to use your video component in qml script on raspberry pi2 and pi3.
    It seems to me that qt5.6 draws the qml scene in eglfs (without x) very slow.
    I have created one layer with fullhd video (10-15mbits) and 20 transparent pictures 150×150.
    In this case video is twitching (bad quality). For 10 pictures quality is good.

    Is it true, that qt is to slow on raspberry?

  2. Hello!
    Download POT 5.3.0-beta1 for Raspbian Jessie Lite Pi2 (also tested on Pi3) here (extraction code is: adb1, md5: edbe0ad2a552a5c8280e3876d16b237d).

    The link not working now…

  3. Sorry, but my solution at the moment only works in OpenGL or QML scenes. This version includes a WebKit1 patched build that uses it to render efficiently, but WebKit1 is almost useless for production applications nowadays.

  4. Hey, Hello

    I work at a Digital Signage company and we use Raspberry Pi as video player. I'm able to play html5 videos inside a iframe but it use more then 100% of the CPU and the movies are not smooth. We use electron to build our app (it uses chromium engine) and i'm thinking if your solution maybe will help us a little bit. I'm asking because your solution is a little bit complicated to me (it security guy hehe) so i need to know if it will actually help us before start to learn how to do. Thanks and regards from Brazil 😛

  5. I'm sorry but I didn't implement anything like this. You can only interface with the decoder using Qt API (and not everything is implemented). If you need something like this you need to implement that yourself.

  6. Hi!
    Thanks a lot for your work!!!

    How can I pass params to omx and/or ffmpeg?

    I can successfully run

    ./omxplayer –avdict 'rtsp_transport:tcp' rtsp://

    and see video.

    But pocplayer does not (obviously) set TCP param, so I see no video. Local files played correctly.

    How can I pass params?

    Thanks again!!!!

  7. Can someone please put me out of my misery and tell me how to decompress this file on OS X, please?

  8. Hello Luca,

    Any plan to share your cross build environment ? I'm not (yet) using POT, but I'm having troubles building the entire Qt modules, especially qtwebengine !

  9. It does seem to work for me. Created a stream with VLC, opened it with QML samples in the repo or with POCPlayer. Everything worked as expected.

  10. I tried but only the samples because I don't know which input should I give to the POT to opwn the stream. I'm waiting for the samples sources to try understand that.

  11. It is nothing special. I was sharing that I was able to open a strem video, I had created on host using VLC, with omxplayer and since you use omx it means I'll be able to open that stream on a qml app using POT, right?

  12. Hi lucas and thanks for your share !
    Your examples work fine and i can deploy from my host pc (kubuntu 15.10 64) to the rasp with qt5.6 but i have a problem with another library.
    I have downloaded and compile openZwave and enocean stack on the raspberry (pi 2). The examples give with this 2 library work fine on pi.
    Now i'm trying to add this library in my project (with qt5.6 and your image from my host pc). When i add this library to my project, for example in my .pro file :

    unix:!macx: LIBS += -L$$PWD/../../../../opt/rpi/sysroot/usr/local/lib/ -lopenzwave

    INCLUDEPATH += $$PWD/../../../../opt/rpi/sysroot/usr/local/include/openzwave
    DEPENDPATH += $$PWD/../../../../opt/rpi/sysroot/usr/local/include/openzwave

    when i'm trying to build my project i have this error :

    /opt/rpi/sysroot/usr/local/lib/libopenzwave.so:-1: erreur : undefined reference to `std::__throw_out_of_range_fmt(char const*, …)@GLIBCXX_3.4.20'

    i have find a thread on the web that talk about this :
    http://stackoverflow.com/questions/33239805/libopencv-calib3d-undefined-reference-to-std-throw-out-of-range-fmtchar-co
    –> see the last post

    apparently it's a problem with the version of the gcc toolchain version. I have downloaded the lasted version of raspi toolchain from github to have gcc 4.9.3 but same result during the build.
    Do you have an idea how to resolve this please ?

  13. This is a library, so you would need to write the player yourself in Qt. Otherwise you can try POCPlayer, which is a test app, but you'll probably need to modify it a bit as it probably expects a video extension.

  14. I installed these binaries and the examples are working.
    Now on my host I create a http stream with a video I can play on your examples (big buck bunny h264 720p). I can open the stream on my host with ffplay http://192.168.1.74:8080 so how can I use it on your player?

  15. Just to clarify, on a Pi with lrzip 0.6 I'm getting this:

    pi@pi3:~/Downloads $ lrunzip -t PiOmxTextures_5.3.0-beta1_pi2_jessiel_5.6.0.tar.lrz
    Decompressing…
    Illegal instruction ZPAQ 1:0%

  16. Hello there,

    I can't seem to be able to download and uncompress the file properly. Have you considered using GitHub to release those tarballs and using a more common format?

Leave a Reply

Your email address will not be published.