Binaries for POT 5.3.0-beta1 on Qt 5.6.0 and Experimental Accelerated QtWebKit
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).
Hello, the link should be fixed now.
Hello Sir
May i know what it the password for the mega link above. Thank you.
https://goo.gl/nZ9VJG
I'm sorry but your question is unclear to me.
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?
I'm sorry, the service has closed. I'll re-upload somewhere else.
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…
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.
This comment has been removed by the author.
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 😛
Can you give a tip how to cross compile qmake utility and the like?
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.
./omxplayer –avdict 'rtsp_transport:tcp' rtsp://x.x.x.x/path-to-video-stream/
Deleted misplaced comment…
Probably community might help with this, I'm very interested in this information and wanna help in any way it can be useful.
This comment has been removed by the author.
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!!!!
Doesn't seem to be very difficult: https://trac.macports.org/browser/trunk/dports/archivers/lrzip/Portfile.
I commonly use it on osx and linux. https://trac.macports.org/browser/trunk/dports/archivers/lrzip/Portfile
Can someone please put me out of my misery and tell me how to decompress this file on OS X, please?
Any tips for decompressing the .lrz file on OS X, please? I've only got OS X or ARM Linux available.
I just tested qtbluetooth module and qtsensehat and it work fine ! great work !
I'm sorry, it would take too long. It is the reason why I provide the modules in the package.
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 !
Have a look at the new article. See if it helps.
Can you share what kind of stream did you create and what URL did you use as argument?
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.
Create a regular Qt application using the public API.
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.
To be clearer: POT uses omx like omxplayer does, IT DOES NOT USE omxplayer binary.
Yes, POT uses omx. But this does not mean everything is supposed to magically work without code. Did you try this version of the library?
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?
I do not understand your point sorry.
I can play a stream with omxplayer with the following cmd line "omxplayer -o hdmi –win 0,0,800,480 –live rtsp://192.168.1.74:8554/" so create a stream server with VLC and play it with omxplayer is possible what means it should also work with your library 🙂
Will be uploaded soon. But at the moment this is just a beta version.
Yes likely a gcc version issue. Gcc crossbuilder 4.9 is not working properly. Possible solution: rebuild those two libs with with gcc 4.8.
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 ?
Can you upload the source of pot 5.3?
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.
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?
Yes streaming is only supported here. Any version before this is not good for streaming.
I'm going to try the stream feature on this version 🙂
PS: why do you upload on 360? https://meocloud.pt/ per example gives you 16GB with very nice speeds.
You are the best Luca!!!
I'm in vacations now, but as soon as I arrive work I'll test that mysql plugin.
I'm sharing many gigabytes for free. Use a pc to decompress, not your pi.
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%
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?