Giter Site home page Giter Site logo

xibosignage / xibo-linux Goto Github PK

View Code? Open in Web Editor NEW
71.0 23.0 51.0 2.61 MB

Xibo for Linux - Digital Signage Player

Home Page: https://xibo.org.uk/xibo-for-linux

License: GNU Affero General Public License v3.0

CMake 3.26% C++ 96.23% Shell 0.14% Dockerfile 0.37%
digital-signage xibo ubuntu

xibo-linux's Introduction

Xibo for Linux

xibo-player

Xibo for Linux is a Digital Signage Player for Xibo.

It is in its early stages of development and supports a subset of Xibo's overall features. It can be used in production, but should be thoroughly tested with the intended content. It is not recommended to assume that any of Xibo's features will function. Please test yourself to confirm.

To discuss this Player with us, please join our community.

Installation

Installation and upgrade instructions can be found here.

Contributing

We use GitHub Issues to track development and the next milestone is full of issues for which we would happily accept contributions. In addition, if a Xibo feature you want is not mile-stoned, or mile-stoned against a later version, please get in touch if you'd like to work on it. We maintain a Kanban Board to ensure we're not doing overlapping work.

Please check that you're happy for your work to be available under the project licence - the AGPLv3 or later.

Let us know you'd like to contribute by joining our community.

Build

If you would like to work on the Player you can build it locally using the instructions below.

Building from sources

We recommend you use snapcraft to build Xibo.

Building with Snapcraft

  • Install snapcraft, making sure you have version 4 or later (snap install snapcraft --classic)
  • Clone this repository
  • Run snapcraft in the root of the repository
  • A .snap file will be created which you can use to install from

Debugging

We provide a VSCode dev container that has everything needed to build/debug the application using VSCode. This devcontainer uses a base image which is built from the Dockerfile in the root folder.

To debug this application using VSCode.

  1. Copy the settings folder from a working player install into the /build/bin folder, making sure you have cmsSettings.xml and playerSettings.xml.
  2. Open cmsSettings.xml and adjust the localLibrary setting to be /workspaces/vscode/build/bin/library.
  3. Open the application directory using the remote containers plugin.
  4. Go to the aplication debug extesion at left panel and click on the green play button.

Tutorial video: https://user-images.githubusercontent.com/6628028/162645464-5eadcb2b-a53a-450e-805f-9589fba6f8f0.mp4

Issue 260 will improve steps 1 and 2 so that the options app can be used.

xibo-linux's People

Contributors

alexharrington avatar allcontributors[bot] avatar birkenfeld avatar dasgarner avatar davidkennedydev avatar dmitttri avatar maurofmferrao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xibo-linux's Issues

alpha9 snap error

running debian sid.
downloaded snap alpha9 14

I get a fail to load plugin for gstreamer-1.0/libgstaasink.so, libgpm.so.2

When trying to rerun I do not get file lists only glib::fileerror

Player closes

No errors in the log (in trace mode), player closes.

Last logs are:

[16:51:51.767] [009095] [debug]: Collection finished. Next collection will start in 60 seconds
[16:52:06.204] [009095] [debug]: Region expired
[16:52:06.204] [009095] [debug]: Duration expired layout sent
[16:52:06.227] [009185] [debug]: [MediaPlayer] Pad added
[16:52:06.227] [009185] [debug]: [MediaPlayer] Video pad
[16:52:06.227] [009185] [debug]: [MediaPlayer] Pad added
[16:52:06.228] [009185] [debug]: [MediaPlayer] Audio pad
[16:52:06.229] [009185] [debug]: [MediaPlayer] No more pads
[16:52:06.267] [009095] [debug]: Discovered file:///home/dan/snap/xibo-player/current/resources/98428.m4v

Error drawing a paged widget with animations

Step by step:

  • Create a Dataset with images
  • Create an empty layout with a Ticker
  • Select previous Dataset and configure the text field to display text and image
  • Run the player, the widget will fail to reproduce most of  the times

Error message:
{code:java}
"(player:19942): Gtk-WARNING **: 16:57:00.486: drawing failure for widget 'gtkmm__GtkFixed': out of memory

(player:19942): Gtk-WARNING **: 16:57:00.486: drawing failure for widget 'gtkmm__GtkOverlay': out of memory

(player:19942): Gtk-WARNING **: 16:57:00.486: drawing failure for widget 'gtkmm__GtkWindow': out of memory
"
{code}
Example layout:
[https://linuxplayer.xibo.co.uk/layout/view]
"Linux Player Test - Paged widget render fail"

Widget with transparent background not showing

When creating a widget with a background colour with transparency, the background for that widget will render fully transparent.

Step by step:

  • Create a layout with 3 regions
  • Add a Currency widget for each region, the first with no BG colour, second with a semi-transparent colour and third with an opaque colour
  • Preview the layout in the player, the first to widgets will show no background, only the third

Example layout:
https://linuxplayer.xibo.co.uk/layout/view
"Linux Player Test - Widgets with transp background"

First run after CMS approval fails

Player settings updated
[11:15:57.461] [027952] [debug]: Collection started
[11:15:57.462] [027952] [debug]: Scheme: 0 HostType: 0 Host: localhost Port: 80 Target: /xmds.php?v=5
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::property_tree::ptree_bad_path> >'
  what():  No such node (sizeX)
Aborted (core dumped)

Proof of Play Statistics

The Player should record Proof of Play events for the Layout and Media and transmit them to the CMS.

XMR on status screen shows in UTC

The status screen shows that the last heartbeat is from 1 hour ago (when the player is in GMT):

General Info:
Date - 2019-May-28 18:34:57
~
XMR Info:
Host - tcp://develop.xibo.co.uk:9505
Last heartbeat - 2019-May-28 17:34:48
Last message - 2019-May-28 16:38:22

Play and start up offline

The Player can't start up offline, it logs "Host not found".

When not connected to the CMS, the Player should Play through its currently cached content.

XMR on status screen shows in UTC

The status screen shows that the last heartbeat is from 1 hour ago (when the player is in GMT):

General Info:
Date - 2019-May-28 18:34:57
~
XMR Info:
Host - tcp://develop.xibo.co.uk:9505
Last heartbeat - 2019-May-28 17:34:48
Last message - 2019-May-28 16:38:22

Wrong Background image ratio

Background image should stretch to the layout dimensions, if the ratio is different from the layout's

Step by step:

  • Create a simple Layout
  • Set the Background image to one with a different ratio
  • Play the Layout on the player and notice that the background kept the original ratio, and it should stretch to the layout dimensions

Example layout:
https://linuxplayer.xibo.co.uk/layout/view
"Linux Player Test - Background ratio"

Full Screen Video Option

A video/video in/local video module can have a widget option for "showFullScreen" which expands the video over the top of existing content and shows it full screen.

Player cant play a Mpeg-TS stream

Same downloaded video plays on Totem player, but xibo-player throws error.
Ubuntu 18.04 desktop minimal install, installed all gstreamer found.

(player:2359): Gtk-CRITICAL **: 21:47:41.276: gtk_widget_set_size_request: assertion 'width >= -1' failed
[21:47:41.352] [002359] [error]: [MediaPlayer] Your GStreamer installation is missing a plug-in.
[21:47:41.352] [002359] [error]: [MediaPlayer] GStreamer encountered a general stream error.

Splash Screen during first run and when nothing valid to show

When it is first started the Player takes a long time to open while it checks all of its resources and makes a connection to XMDS.

During this time the Player should show a splash screen, with a Xibo logo at the bottom right of the window.

This splash screen should also be shown any time the Player doesn't have anything valid to show from the CMS.

Config form fields

( based on Windows player )

Connect Tab:

  • CMS Address: basically the host
  • Key: server key
  • Local Library: local storage location

Advanced Tab:

  • Proxy Server Username/Password/Domain: proxy details and credentials
  • Display ID: Hardware key ( auto generated if empty )
  • Splash Screen: file to override the default splash screen

Buttons and status:

  • Status message: showing if the player is not configured properly ( like server key not matching ) or if the Display is ready to play
  • Save button: saves config and syncs with the server
  • Launch Client: runs the player's window
  • Display Admin: link to the CMS
  • Exit: exit the app/config

XMR Actions

Layout Change Action
Support XMR messages causing the Player to immediately swap to a different layout on demand for either 1 play through, or for a period of time, before returning to the normal schedule.

Screenshot Action
Take a screenshot immediately

Collect Now Action
Run XMDS collection immediately

Overlay Layouts

Support overlaying multiple layouts concurrently on to the running layout with an Overlay schedule.

Wrong Video widget aspect ratio

Video scale type Aspect does not maintain the ratio and stretches

Step by step:

  • Create a Layout with a Video widget
  • Set the Scale type as Aspect
  • Play the Layout and notice that the video is stretched and should have kept the original ratio

Example layout:
https://linuxplayer.xibo.co.uk/layout/view
"Linux Player Test - Video widget ratio"

 

Commands

Support commands - these might reboot the device, restart the Player, or control external devices - e.g. turn off/on TV screen.

Commands are defined in three ways:

  • Command code: these type of commands are configured in the Display Setting Profile on the CMS and sent to the display in the <commands> node of Register Display. They contain a code, a command string and a validate string.
  • Shell command widget: these are on a Layout and either have a command code or a command string.
  • Schedule commands: these appear in the return from the schedule XMDS call and always refer to a command code.

The command string should be executed by the Player as the user account running the player and if a validate string is passed the output of the command should be tested and a true/false notify status request sent with lastCommandSuccess property.

There are various uses cases for commands:

  • Rebooting the device
  • Turning a connected monitor on/off
  • Executing a 3rd party script which does some other actions

The CMS and other players have support for various other functionality such as RS232 commands, Android intents, HTTP requests, etc. For the moment these are out of scope and can be addressed in a later issue.

Transitions

Support entrance and exit transitions on media items and regions (fade in/fade out/fly in/out)

Local Web Server

The Player should start a small embedded webserver listening on the loopback device only (ie on 127.0.0.1 or localhost interface). This should serve any GetResource content downloaded in to the library to the WebView used in the application. That allows "active" content which will not run from a file:// URL to work. The webserver should listen on a configurable port. The CMS will define the value for that.

Crash: unexpected end of data

Player crashes on start with unexpected end of data message below. Restarting and it immediately starts up without issue.

[13:34:06.636] [019167] [trace]: FileType: media ID: 104508 Size: 187 MD5: d0a675008ae1a4440b4fa6211ebf75a5 FileName: light.template.json DownloadType: 0 [13:34:06.636] [019167] [trace]: FileType: media ID: 104624 Size: 5246920 MD5: e7f889bec9a4cb1f4be83dce8a6fdc33 FileName: 104624.mp4 DownloadType: 0 [13:34:06.636] [019167] [trace]: FileType: layout ID: 812 Size: 1773 MD5: 6874d91603807149825ad3f4d5592a91 FileName: 812.xlf DownloadType: 0 [13:34:06.636] [019167] [trace]: FileType: layout ID: 928 Size: 1832 MD5: c789dc5fd6d9a941a0c0c3abb683a404 FileName: 928.xlf DownloadType: 0 [13:34:06.637] [019128] [debug]: Scheme: 1 HostType: 0 Host: xxx.xibo.co.uk Port: 443 Target: /xmds.php?v=5 [13:34:06.938] [018758] [debug]: Region expired [13:34:06.961] [019171] [debug]: [4327.html] Downloaded [13:34:06.985] [019173] [debug]: [4646.html] Downloaded [13:34:06.995] [019175] [debug]: [4328.html] Downloaded [13:34:06.998] [019128] [debug]: Scheme: 1 HostType: 0 Host: xxx.xibo.co.uk Port: 443 Target: /xmds.php?v=5 terminate called after throwing an instance of 'boost::wrapexcept<boost::property_tree::xml_parser::xml_parser_error>' what(): <unspecified file>(125): unexpected end of data

Packaged HTML Module

v2 includes a package HTML module which allows a user to upload a ZIP file containing a complete HTML5 application. This should be shown in a web browser control.

The Player needs to:

  • Extract the HTML on download into a folder
  • Modify its "tidy" functionality to be aware of these additional folders and remove them if the parent ZIP file is no longer present
  • Handle the module type so that a browser is created an pointed at the nominated file in the extracted folder (this is a widget option defaulting to index.html)

Proof of Play On/Off

Layout/Media XLF nodes have an attribute called enableStat which describes whether stats should be recorded for that item or not. The Player should obey the settings.

Layout transparent background crashes player

Step by step:

  • Create a Layout
  • Go to Designer -> Background menu
  • Remove Background Colour on Background tab and save
  • Run the player, it crashes showing the following error message:

Error message:
[000621] [error]: Error occured: HEX color should be 3, 4, 6, or 8 digits with # at the beginning

Example layout:
https://linuxplayer.xibo.co.uk/layout/view
"Linux Player Test - Transparent Background"

Close player behaviour

By stopping the terminal process ( Ctrl + Z ), the window is kept opened and needs a force quit to close.

Show XMR details on info screen

It is hard to tell if XMR is functional or not - please can we add the XMR connection details (XMR public address/port) and the last message received time (including heartbeat), to the Info Screen.

Video widget and memory problems

Video widget causes memory used by the process to increase on each iteration, causing the player to crash

Step by step:

  • Create a Layout with a video widget and set a short duration
  • Run the player, after every video run, the process' memory increases

Example layout:
https://linuxplayer.xibo.co.uk/layout/view
"Linux Player Test - Video Memory"

Code version mismatch

There are 4 versions and code versions being used at the moment:

  • reported to the CMS is 1.8-121
  • reported on the status screen is 1.8 108
  • the snap package has its own revision number
  • the release gets its own r1, r2, r3, r4, etc

Please can we have the version shown in the status screen and reported to the CMS be
equal to the snap version (clientVersion) / revision (clientCode)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.