RVMedia FireMonkey for Linux demo projects

RVMedia 10.0 – FireMonkey for Linux

RVMedia 10.0 has been released.

Trial version can be downloaded from https://www.trichview.com/download/

Full version: can be found in the protected section of the forum. This update is free for customers who ordered/renewed RVMedia in 2021-2023, and for customers with RVMedia subscription.

The main new feature in this update is support of FireMonkey Linux platform.
Required Delphi versions: 10.3, 10.4, or 11.x.

While this version of RVMedia can be installed over the old version, we highly recommend to uninstall previous version of RVMedia before installing this update. Some units (related to FireMonkey and to Linux) were renamed; if you do not uninstall the old version, there will be both new and old units.

See RVMedia version history: https://www.trichview.com/help-media/ve … istory.htm

I am sorry, but users of old versions of RVMedia will not receive a notification about this update via the design-time update checker.
The old implementation of the update checkers does not support HTTPS, and the new server redirects all HTTP requests to HTTPS.
In RVMedia 10, HTTPS is supported in the update checker.


FireMonkey for Linux requirements

Supported Delphi versions

RVMedia supports Linux in the following Delphi versions:

  • Delphi 10.3
  • Delphi 10.4
  • Delphi 11.x

Only Enterprise and Architect editions of Delphi support Linux platform.


Unlike other FireMonkey platforms, Linux platform requires an additional library: FMXLinux.
RVMedia does not have specific requirements for minimal version of FMXLinux.

FMXLinux is available:

  • via the RAD Studio GetIt Package Manager in the IDE, for Delphi and RAD Studio Enterprise and Architect customers who have Update Subscription.
  • from https://www.fmxlinux.com/ , where you can download a trial version or order a life-time license.

FireMonkey for Linux features

All RVMedia features were ported, except for “desktop as a video source” mode (in this mode, TRVCamera streams the specified area of the desktop).
In this version, RVMedia FireMonkey for Linux can stream only windows of its own application.

Changes in Lazarus for Linux

This update contains many tweaks and fixes for Lazarus Linux version of RVMedia as well.
Most of them are related to networking and sound code.
The most noticeable change is in sound support. The default speakers and a microphone must work now (they are used if a specific device is not selected in TRVCamera). More audio output devices are available in the list provided by TRVCamera.

Please note that names of all Linux-specific units were changed. All mrvlcl_lin_*.pas units are renamed to MRVLin*.pas (for example, mrvlcl_lin_AudioDevice.pas will be renamed to MRVLinAudioDevice.pas)
This change was made because code in these units are used not only in Lazarus but also in FireMonkey.

Changes in demo projects

Demo projects for FireMonkey were updated to support Linux platform (only SendAndReceive\RemoteDesktop\ demo was not ported).

The default platform for all FMX demos is changed to Windows 64-bit.

FMX demos now create output files in standard folders (Win32/Win64/Linux64), so relative paths were changed in source code (path to FFmpeg, slides for Lecture demo, database for login server demo).

A list of sample public IP cameras (used in most demo projects) was updated, unavailable cameras were replaced.

Like in the previous versions, some cameras are represented by video URL; for these cameras, video is displayed immediately,
Some cameras are represented by Host:Post, and demos search for video URL (and a for possibility to control the camera movement).
However, in the new version, the demos only check for camera models specified in camera titles. For example, if there is ‘(Axis)’ in this name of a sample camera, the demos search only for Axis (and compatible) cameras. If a camera model is not specified in a title, demos search for all supported camera models. Please note this feature if you will add your cameras in this list.

A bug in Cameras\MotionDetect_Old\ demo is fixed. This demo accesses the same bitmap from the main process (when painting a video frame) and in a thread (when receiving a video frame). A critical section is added.

Some screenshots:

GStreamer for Windows

GStreamer (https://gstreamer.freedesktop.org/) can be used by RVMedia to display network video streams (as well as FFmpeg).

New versions of GStreamer for Windows are available as MSVC or MinGW builds.
The new version of RVMedia supports them both (as well as older versions of GStreamer).
The previous version of RVMedia could support the new MinGW build (but not MSVC), but you have to specify GStreamer location manually,

A bug in support of 64-bit version of GStreamer is fixed.

Other changes

This update does not include many changes in Windows version of RVMedia.
If you use older versions of RVMedia only for Windows, the reason to update is not new features but numerous optimizations and fixes.
Some of them:

  • more reliable networking code (including the proper support of chunked transfer encoding, which is used by some IP-cameras)
  • in TRVCamReceiver, much more efficient implementation of a buffer of video frames when it receives video from multiple sources and displays with delay (VideoDelay property >0), you can see the difference in “SendAndReceive\TwoApps\” and “ClientServer\VideoChat\Conference\” demos.
  • more efficient processing of MJpeg streams by TRVCameras (when RVMedia displays them using its own code, without FFmpeg or GStreamer)
  • in TRVCamReceiver, more efficient processing of video frames sent by TRVCamSender
  • and many more.

Small changes:

  • TRVMediaServer can buffer intermediate data either in memory or in a temporary file; by default, it buffers all data in memory, except for transferred files. Maximum sizes of buffers are limited. In older version of RVMedia, the default server buffer size for transferring files might be not enough for large files.
    In this update, the following changes were made: limiting only memory buffers by default; increasing the default buffer limit for transferring files; you can modify this behavior in TRVMediaServer.BufferOptions property. New TRVMediaServer.BufferOptions.LimitType property.
  • improved support for Foscam cameras: if TRVCamera searches for MJpeg stream, and it is not available, TRVCamera tries to use URL to updated snapshots instead
  • new option for TRVCamSender.TestMode: rvstmRectangles. In this mode, changed areas are outlined by rectangles.


This update makes it easy to support more FireMonkey and Lazarus platforms.
First, Windows-specific code was replaced to cross-platform analogs.
Second, like Linux, the remaining platforms are Posix platforms, so (I hope) conversion of networking code will require minimum changes.
The next goal is macOS.

Share this article