Gstreamer 1.x Support on Receiver for Linux (Rfl)

Gstreamer 1.x Support on Receiver for Linux (Rfl)

book

Article ID: CTX224988

calendar_today

Updated On:

Description

This article is intended for Citrix administrators and technical teams only.

Non-admin users must contact their company’s Help Desk/IT support team and can refer to CTX297149 for more information.

Receiver for Linux (Rfl) leveraged Gstreamer components to decode and play the data streams, which is a set of libraries and utilities that provide a framework for processing streams of data buffers and a large number of plug-in modules for processing audio-visual data.

Before 13.5, Rfl only supported Gstreamer0.10, which was a frustration to the customers who always work on the latest OS system where Gstreamer 0.10 packages are not easily found on the default source list. However, from 13.5, Rfl started to support Gstreamer 1.x.

How to enable Gstreamer1.x on Rfl

Multi-media redirection is enabled on Linux client by default. But gstreamer 0.10 is still the default. To switch it to Gstreamer1.0, you need to configure on the Receiver as following:

  • $ln -sf $ICACLIENT_DIR/util/libgstflatstm1.0.so $GST_PLUGINS_PATH/libgstflatstm1.0.so.
  • $ln -sf $ICACLIENT_DIR/util/gst_play1.0 $ICACLIENT_DIR/util/gst_play

How to install Gstreamer1.x for Rfl

In general, apart from Gstreamer 1.x framework, you just need to install all the required plugins packages as the following:

  • Gstreamer-plugins-base
  • Gstreamer-plugins-bad
  • Gstreamer-plugins-good
  • Gstreamer-plugins-ugly
  • Gstreamer-libav

But on some Linux OS distributions, such as SUSE or openSUSE the system may not find the source in the default source list. This means you may need to download the source code and build all the binaries locally.

Take Suse12 as an example, you could build them locally as following:

  1. Download source code from Gstreamer website: https://gstreamer.freedesktop.org/src/, then unzip it.

  2. Navigate to the newly created folder you unzip the package to,  then run $sudo ./configure

  • For this step to work, you may need to install gcc ($sudo zypper install gcc), zlib-devel ($sudo zypper install zlib-devel)

  • If you get the error “cannot find gstreamer-plugins-base", you may need to check if gstreamer-plugins-base-devel has been installed.

  • If you get the error  "cannot find gstreamer 1.0", you may need to check if gstreamer-devel has been installed.

  1. Run $sudo make under the same path

  2. Run $sudo make install. Then all the generated binaries would be copied to /usr/local/lib/gstreamer-1.0/ by default.

After that, Gstreamer1.x installation for Rfl is completed.

NOTE:
  • Pay attention to the version of each gstreamer plugin, they MUST be consistent to the version of gstreamer framework, i.e., if you installed Gstreamer1.2.4, the version of all the installed Gstreamer1.x plugins MUST be 1.2.4.
  • The version of the installed gstreamer 1.x framework could be checked via: $./gst_play1.0 -version.
  • If /usr/local/lib/gstreamer-1.0/ is NOT the path you installed gstreamer1.x (on Suse12, it may be: /usr/lib64/gstreamer-1.0/), you have to copy all the binaries under the right path.

Troubleshooting 

The basic check on Gstreamer1.x for Rfl has been added in //ICAROOT/util/hdxcheck.sh as well as Gstreamer 0.10.

Meanwhile, it is necessary to check if the media file could be played locally via Gstreamer1.0 at first to figure out if this is a problem on Rfl or Gstreamer itself:

$gst-launch-1.0 -v playbin uri=file: ///absolute/path/to/file

checks if Gstreamer1.x is able to work locally.

Generally, if the file fails to be played locally, that is caused by lack of some plugins to decode the data or even the media type is not supported on Gstreamer:

  • The list elements of plugins is available here: https://gstreamer.freedesktop.org/documentation/plugins.html, where you could look up the exact plugin for the media type you are going to play.
  • $gst-inspect-1.0 lets you to know all the installed elements and plugins.

Issue/Introduction

Receiver for Linux (Rfl) leveraged Gstreamer components to decode and play the data streams, which is a set of libraries and utilities that provide a framework for processing streams of data buffers and a large number of plug-in modules for processing audio-visual data.