xibosignage / xibo

Xibo Digital Signage
https://xibosignage.com
GNU Affero General Public License v3.0
550 stars 163 forks source link

Replacement Player for the discontinued Ubuntu Python Client #29

Closed dasgarner closed 9 years ago

dasgarner commented 9 years ago

General discussion for a replacement to the Ubuntu Python Client

pubblisoft commented 9 years ago

Chrome App client driven:

I have already developed three years ago an app built-in chrome for digital signage, but it was not a good solution. In public place there is not enough interaction control with chrome and a javascript chrome app works slowly. Basically it's hard to build a safe kiosk in chrome. An issue was: what i can do in the chrome crash case ? The most of the time I needed to connect to terminal services to reboot chrome.

I learned that I can not trust in a viewer that controls itself, especially if there are users touch interactions.

pubblisoft commented 9 years ago

Chrome App signage:

https://github.com/cooperhewitt/chromecast-signage

or

chromecast.com by google

or

https://code.google.com/p/risevision/source/checkout

or

http://www.novisign.com/android/android-based-digital-signage/

... anymore ?

pubblisoft commented 9 years ago

Xibo should provide the protocol specifications for create a generic client able to comunicate with xibo server. Xibo server should provide an infrastructure to: design, schedule, manage permissions, templates etc. Everyone should be able to make their own client with capatibilities to manage regions, levels, positions. I could write a simple client (c++, javascript, .net etc) that get web media regions from the server: the client will inherit the web page interactivity without any other changes. In that case the client app will manage the lifecycle of the application and web component render the interactive contents. I would like to spend my time to create a real cross-platform application with interaction capatibilities: the 80% of work has been done, because xibo server works well. The really needed thing is to have a client side protocol specifications.

dasgarner commented 9 years ago

Xibo contains a WSDL that explains the interactions between the player and CMS, and should also provide a Schema for the XLF (the layout XML sent to the player).

I totally agree with you that everyone should be able to make their own client - that would be great. However 99% of the user base have no interest in making their own client, all they want to do is download and use a solution that works and is free (cheap).

That is the ethos Xibo was born with and why we have developed the .NET and Pyclient players - unfortunately the Pyclient player didn't work out and the .NET player is built on ageing technology (I started coding it in 2006!).

What we want is a new client that can run cross platform and has an understanding of XMDS and XLF that rivals the current offerings.

I take your points about building signage that runs within a web page - Xibo started out as a .HTA application in 2004, which we of course abandoned due to all the problems you mentioned. However, Chrome Packaged Apps is a long way from a simple webpage and I have yet to see a better proposition for a client that could integrate well with the way Xibo functions (native content augmented with web content).

We have looked at:

I am happy to work with you on the XMDS specification (the WSDL is a great starting point) and the XLF schema. We will be looking to enhance both XMDS and the XLF schema to support things like monitor control, interactivity, etc, so we will need a detailed map of the current situation before we start anyway.

pubblisoft commented 9 years ago

My previous version of DS client was built on Air/chrome javascript app software. Beginning June 14 2011, Adobe AIR is no longer supported for desktop Linux distributions. I will upload on github that client. I agree to doc. the XMDS / XLF as first step. I can start to do that. Please let me know where sync the doc on git.

dasgarner commented 9 years ago

I suggest forking the wiki (very empty at the moment) https://github.com/xibosignage/xibo.wiki.git, adding the pages and then letting me know here where they are - I can then pull them in to the main documentation, making any necessary corrections as I go.

Sounds OK?

pubblisoft commented 9 years ago

yes,ok !

Speedy-Gonzalez commented 9 years ago

In your blog post you wrote "Unfortunately the Python Player development has been fraught with problems and limitations"

Is there no chance these limitations and problems could be fixed?

dasgarner commented 9 years ago

Well, there is always a chance :)

The big problem is that Xibo uses a lot of web content, because people want to show web content. Libavg is very good at displaying video and image content, but before Xibo did not support displaying web content at all.

We helped develop the libbrowsernode addition to libavg, with the help of the folks over at libavg HQ, but it was never that reliable and always a pain to build (hence the requirement for 10.04 until recently).

Unfortunately we just don't have the expertise required to keep libbrowsernode up to date or actually to keep 2 separate clients up to date (libbrowsernode never worked on windows).

In short it would have to:

If those are things that can be achieved, we'd be more than happy to keep it!

pubblisoft commented 9 years ago

i agree that libavg is not the best way for render web content.

dasgarner commented 9 years ago

It is also interesting to say that the current windows player suffers with some of the same problems, although the .NET WebBrowser control is more reliable (but not cross platform). 1.7 started the integration of the CEF browser control, which also has its own problems.

pubblisoft commented 9 years ago

the windows player on linux should be use with mono, for the moment.

dasgarner commented 9 years ago

Unfortunately it is not that simple, the windows player uses activex for flash, video and the webbrowser control for webcontent (which marshals IE underneath).

None of those things work on Mono.

martialgallorini commented 9 years ago

What about writing client based in openFrameworks ? Free, open source, C++, multimedia oriented, cross platform...

http://openframeworks.cc/

dasgarner commented 9 years ago

I don't see support for web content (perhaps I am missing something!)

At first glance it looks a lot like libavg in terms of focus and feature set.

martialgallorini commented 9 years ago

there is a lot of addons which are not included in the core framework and i always find them to be of very good quality. Maybe you can find something useful there. See official addons page : http://www.ofxaddons.com/

nagyrobi commented 9 years ago

Maybe move with everything to HTML5 and use any browser in kiosk mode? On any OS?

dasgarner commented 9 years ago

We are leaning heavily towards that, except we'd want to wrap it in something a little more managed (like chrome packaged app, or firefox extension, simple application hosting a browser control, etc - or all of them).

That being said openframeworks.cc does look interesting.

martialgallorini commented 9 years ago

using openFrameworks, i would recommend going with ofxUI addon to design user interface : http://www.syedrezaali.com/ofxui/

pubblisoft commented 9 years ago

... there is a good kiosk extension for Opera browser (it's most used for digital signage) , but the problem of clients built on browser is: what can we do if something changed in the browser and the plugin doesn't works anymore ?

nagyrobi commented 9 years ago

I'd say that the layout itself should be able to be shown directly without any extension. The extension should provide just the extra things like remote screenshot.

And since the displays use dedicated PCs, one should perhaps delay updating the browser to the latest version until xibo supports it.

martialgallorini commented 9 years ago

Qt (http://qt-project.org/) seems also a very good alternative with its cross platform ability. Using Qt/QML to build the application for desktop and mobile. There are great multimedia features + a good integration of Web see QtWebEngine : http://qt-project.org/wiki/QtWebEngine#5ef787a743aaa025fb1edb5f7086eab1

The problem may be the license though

freibuis commented 9 years ago

has any one tried to port the windows version over via mono or god forbid run the installer on linux via wine?

dasgarner commented 9 years ago

@freibuis one of the issues is that the current implementation of the windows player is at its end of life - its build on Windows Forms which means we are limited with the visual things we can do. It also uses ActiveX to hook into Windows Media Player, etc which won't work on Linux.

@martialgallorini We've explored Qt before and hit several brick walls - we've not had massive time on it, so they may be "overcome-able".

@nagyrobi - this is in line with our current thinking, use HTML5 for rendering as a lot of modules are already rendered in this way, but wrap the whole thing in a more controllable technology - where this will fall down is video.

Speedy-Gonzalez commented 9 years ago

For me the PowerPoint feature is very important. I hope a new cross-plattform player could still come with this feature.

dasgarner commented 9 years ago

I think it would be highly unlikely to be honest - supporting PowerPoint basically means being tied to Internet Explorer and to a technology that can spawn ActiveX to embed internet explorer in another application - I think that would mean sticking with what we have, which isn't an option.

I had though that an Office application that plugged into PowerPoint and automatically uploaded videos to Xibo may be a workaround - but I have no idea if that is possible and even if it would be sufficient for peoples needs.

pubblisoft commented 9 years ago

I do not think that the support for Powerpoint will become a problem. There are various solutions regarding the PowerPoint viewer implemementation:

1) to use openoffice API : https://wiki.openoffice.org/wiki/API 2) to use a chrome extension like: https://chrome.google.com/webstore/detail/docs-pdfpowerpoint-viewer/nnbmlagghjjcbdhgmkedmbmedengocbn?hl=it 3) to use a chrome extension like: https://chrome.google.com/webstore/detail/office-editing-for-docs-s/gbkeegbaiigmenfmjfclcdgdpimamgkj 4) to use a javascript extension: http://viewerjs.org/examples/ 5) simply embed in to html5 web page: http://stackoverflow.com/questions/39855/embed-a-powerpoint-presentation-into-html

... search for more solutions googling...

martialgallorini commented 9 years ago

I would prefer a standalone application, but if you prefer using a webapp, between openFrameworks (which i really love !) and HTML/JS there is another great tool used a lot by creative coders called Processing (https://processing.org/) . It is open source, and of course cross platform, based on Javascript and supports a lot a multimedia formats, PDF, XML, OpenGL, python and a great bunch of additional libraries. It is also possible to embed the app into web page using ProcessingJS (http://p5js.org/)

But because it is an interpreted language which needs a runtime environment, it might use more ressources than an openFrameworks app though. Might be an issue for full HD video player but never tested.

pikseng commented 9 years ago

There was an earlier xibo java client project.. Why not continue from there using JavaFX?

freibuis commented 9 years ago

I think its time to drop support for power point. Its nice to have, but not worth holding back the client.

I believe the client should be able to work on any platform with out any baggage.

maybe a tool that can read powerpoint and create a html5 slide show or output as mp4/webm. Lets face it. powerpoints are not that interactive.

nagyrobi commented 9 years ago

I'm currently struggling to display some presentation created on http://prezi.com/ and the only way to do it in a fashionable manner and offline is to make a Full HD fullscreen screencap at 25-30fps and save it as an MP4 video file. That should be the way to go with powerpoints too imho...

dasgarner commented 9 years ago

I totally agree - we try to encourage people to export powerpoint as MP4 where-ever possible. An office plugin that made that process simple might just be enough to get people to switch over.

dasgarner commented 9 years ago

JavaFX might be a contender...

stanleysct commented 9 years ago

Hi,

Is there a way we get Xibo Android source code?

dasgarner commented 9 years ago

No, sorry. Xibo for Android is a proprietary software and protected by licence and copyright law. Its the main thing keeping this project alive in terms of funding and without it the project would cease.

pb7892 commented 9 years ago

What could be the problematic issues about creating a Xibo Linux player fully installable as a deb package for Ubuntu or any Debian like OS ? Working on a chrome kernel about the web contents and VLC for other media contents ?

dasgarner commented 9 years ago

:smile: you make it sound simple

The saying "the devil is in the detail" is most appropriate here - there are lots of options and lots of ways this can be done... we've tried 4 different ones now and they all have their pros and cons.

Given we have no expertise with C++, we are leaning towards either JavaFX or Chrome Apps with a slight preference for JavaFX.

debain commented 9 years ago

Another solution (not a replacement for a "real" cross plattform desktop client!) i am currently testing:

Scripting chromium - didn't test it and i am not sure if it is possible to compile on all plattforms: http://breach.cc/ (and http://tampermonkey.net/ or http://www.greasespot.net/ for userscripts)

This is how i keep software running on linux (Answer one - http://stackoverflow.com/questions/696839/how-do-i-write-a-bash-script-to-restart-a-process-if-it-dies):

until myserver; do
    echo "Server 'myserver' crashed with exit code $?.  Respawning.." >&2
    sleep 1
done

Interaction with remote controled browser or disabling some input on linux would be easy (event device/hid/etc), for example https://github.com/billroy/bitlash-commander is implemented in nodejs

fogsag commented 9 years ago

https://crosswalk-project.org/

riondluz commented 9 years ago

Hi Dan et al:

I'm late to this thread and also #27 (interactivity), both of which are of serious interest to me. i indend to post my thoughts on the matter on the community forum. Either as a new post or in reply to others of like mindedness. But I wanted to catch-up with the github posts before going there.

I have 0 interest in windows for anything and i realize I am likely in the minority, but would like to contribute to that end. Having built Lib_Browsernode's libberkelium from source and understanding (mostly) the reasons for transiting to CEF is a large undertaking and good reason to pause to design a better client.

I saw your comment on the difficulty of maintaining two client players and would like to forsee a time when LAMP dev grows strong in the community at large because windows does not hold 1/2 a candle to linux in any regard (solely the opinion of a LAMP programmer and sysaadmin).

I've been side-linded for a bit, and am in process of up'ing to 1.6.0 server, and get up2speed with CEF and have high hopes for its future. I look forward to seeing more on the 'community' forums!

Thanks for everything and my finding a place/people of like-mindedness (pubblisoft, Speedy-Gonzalez, martialgallorini, et al)!

dasgarner commented 9 years ago

Great - we look forward to hearing from you (all of you in fact!)

Please don't take my short replies in the wrong way - I just have a lot to read though :smile: it will be great to discuss with you on the forums.

With that in mind I have summarised here: https://community.xibo.org.uk/t/replacement-player-for-the-discontinued-ubuntu-python-client/77