RVMedia 11 - FireMonkey for macOS, remuxing

News about TRichView, ScaleRichView, ReportWorkshop, RVMedia
Post Reply
Sergey Tkachenko
Site Admin
Posts: 17555
Joined: Sat Aug 27, 2005 10:28 am
Contact:

RVMedia 11 - FireMonkey for macOS, remuxing

Post by Sergey Tkachenko »

RVMedia 11.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 2023-2024, and for customers with RVMedia subscription.

Main new features after the last released version (v10.3):
  • support of macOS FireMonkey platform
  • support of FFmpeg 7
  • ability to remux video with FFmpeg (i.e., to save in a file without changing formats of video and audio streams)
  • ability to use special FFmpeg video sources
  • ability to use rnnoise (free cross-platform library for audio noise suppression)
  • support of Mobotix IP-cameras
  • new helper functions for screen sharing
  • improved transfer of large files via RVMediaServer
  • support of Windows 64-bit modern platform (in C++Builder 12.1+)
A reminder of other changes made after version 10.0:
  • support of RAD Studio 12
  • support of FFmpeg 6
  • improved support of local cameras for Linux
  • re-worked OpenGL support in VCL and Lazarus version
  • improved built-in sound noise reduction
  • support of Fast JPEG Decoder for Delphi to decode Jpegs faster in VCL 32-bit version
See RVMedia version history: https://www.trichview.com/help-media/ve ... istory.htm

Previous version:
viewtopic.php?t=13096
Sergey Tkachenko
Site Admin
Posts: 17555
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Changes in Setup

Post by Sergey Tkachenko »

Setup

Changes in Setup

In the trial version
Support of RAD Studio 12 Community Edition is added. Support of RAD Studio 11 Community Edition is removed.
New supported platforms: macOS 64-bit (Intel and ARM)

In the full version
New supported platforms: macOS 64-bit (Intel and ARM), Windows 64-bit modern
("Windows 64-bit modern" was not added to the trial setup to prevent unnecessary growth in size; all features can be tested on the classic Windows 64-bit platform).

Compatibility

1. For RAD Studio 11. The trial requires RAD Studio 11.3 and cannot be installed in older 11.x versions. The full version does not have this limitation.

2. For RAD Studio 12. The trial can be installed RAD Studio 12.0, 12.1 and 12.2 + October 2024's patch (and in new version of 12.x when they will be released). It cannot be installed in an unpatched RAD Studio 12.2. The full version does not have this limitation.

The trial was compiled using RAD Studio 12.2 (+ patch), so it does not include support of Linux platform for RAD Studio 12 (because this version does not have FMXLinux). The users of the full version of RVMedia and RAD Studio 12 can use Linux platform after downgrading to RAD Studio 12.1.
Sergey Tkachenko
Site Admin
Posts: 17555
Joined: Sat Aug 27, 2005 10:28 am
Contact:

macOS FireMonkey

Post by Sergey Tkachenko »

macOS FireMonkey

RVMedia 11 implements support of 64-bit OSX platform for FireMonkey.

rvmedia-macos-firemonkey.jpg
rvmedia-macos-firemonkey.jpg (229.63 KiB) Viewed 2219 times

Requirements
  • for macOS 64-bit platform: Delphi 10.3 and newer
  • for macOS 64-bit ARM platform: Delphi 11 and newer
Features

All RVMedia features are supported, including:
  • local web cameras (using OS API functions)
  • IP-cameras and internet video streams (built-in HTTP and MJpeg support, FFmpeg, or GStreamer)
  • local video files (using either OS API functions or FFmpeg)
  • video from desktop
  • video and audio recording (using FFmpeg)
  • all videochat functions.
Required permissions

The user must grant the application the following system permissions:
  • microphone
  • camera
  • screen recording
Only permissions for the features that are actually used are required.
The "Remote Control" demo also needs "Accessibility" access. RVMedia itself does not need this access, but this demo requires it to simulate mouse operations.
Without screen recording access, your application will receive screen images without windows of other applications.

Notes

1. RVMedia provides full screen recording functionality for macOS (unlike Linux, where RVMedia is limited to recording only the windows of its own application).

2. We have created a summary page for the third-party libraries used in RVMedia: https://www.trichview.com/help-media/th ... raries.htm. It includes notes on installing GStreamer and FFmpeg on macOS.

3. RVMedia for macOS supports the following properties of local web cameras: zoom, exposure, ISO, focus distance, and white balance. These features are available in the TRVWebCamDialog component. However, macOS restricts property changes for most cameras, so this functionality has not been fully tested. Your feedback on this matter would be greatly appreciated.
Sergey Tkachenko
Site Admin
Posts: 17555
Joined: Sat Aug 27, 2005 10:28 am
Contact:

FFmpeg

Post by Sergey Tkachenko »

FFmpeg

1. FFmpeg 7

RVMedia 11 has added support for FFmpeg 7. Now, all versions of FFmpeg from version 1 to version 7 are supported.

2. Remuxing

Remuxing, short for re-multiplexing, is a video processing technique that transfers the contents of a multimedia file or stream into a different file format without altering the original encoding settings. It preserves the audio and video as they are, simply re-wrapping them from one container format to another. This differs from recoding with the TRVCamRecorder component, which generates video files using specified video and audio formats along with custom settings.
In RVMedia, remuxing is only available for videos played via FFmpeg, while TRVCamRecorder works with all video sources.

A new property is added: TRVCamera.FFMpegProperty.Remuxing: TRVFFMpegrRemuxProperty.
It has sub-properties:
  • Active: Boolean - turns remuxing on/off
  • FileName: String - output file name
Unlike other properties of TRVCamera.FFMpegProperty, changing values of the remuxing properties does not restart video playback. You can enable or disable remuxing, or change the output file name, while the video is playing.

The output video file format is determined by the extension of the FileName.

Only the played video stream and, optionally, the audio stream (if TRVCamera.FFMpegProperty.Audio = True and TRVCamSound is linked to this TRVCamera) are saved.

Remuxing requires FFmpeg version 4 or newer.

3. Special video sources

Normally, TRVCamera uses FFmpeg to play videos from the specified file or URL. However, FFmpeg may include special video sources.
A new property is added: TRVCamera.FFMpegProperty.VideoInputFormat: String. If not empty, specifies the input format for video.

Available formats are listed by GetListOfVideoInputFormats function.

For example, on Windows, you can assign VideoFormat = 'gdigrab'. After that, you can specify values like 'desktop' in URL or SourceFileName property (depending on the value of DeviceType property). Additional information: https://ffmpeg.org/ffmpeg-devices.html

Note: due to known problems, this feature is disabled for FFmpeg 6. It is available for FFmpeg 7 and older versions.
Sergey Tkachenko
Site Admin
Posts: 17555
Joined: Sat Aug 27, 2005 10:28 am
Contact:

RNNoise

Post by Sergey Tkachenko »

RNNoise

Audio captured from a microphone is usually highly noisy. Therefore, it is necessary to use software algorithms for noise suppression.
RVMedia has its own noise reduction algorithm, which was greatly improved in version 10.2. However, results are still far from perfect.

RVMedia 11 allows the use of RNNoise, which can deliver results close to perfect (although the outcome depends on the nature of the noise). RNNoise is a free cross-platform open-source noise suppression library based on a recurrent neural network.

RNNoise has no settings — it just works. I highly recommend setting the sample size to 16-bit when using a microphone (instead of the default 8-bit), as this significantly improves the quality of RNNoise's output.

Information about RNNoise and how to use it in RVMedia: https://www.trichview.com/help-media/th ... raries.htm

By default, TRVMicrophone uses RNNoise if it is available (and noise reduction is not turned off). To switch to the built-in noise reduction, assign TRVMicrophone.UseRNNoise = False. Do it when the microphone is inactive (RNNoise and RVMedia's noise reduction require different buffer size, so they cannot be switched on the fly)
Sergey Tkachenko
Site Admin
Posts: 17555
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Mobotix IP-cameras

Post by Sergey Tkachenko »

Mobotix IP-cameras

RVMedia provides specialized support for cameras from Foscam, Axis, Panasonic, and D-Link (as well as cameras from other manufacturers using the same APIs). RVMedia 11 adds support for Mobotix MJPEG cameras. The supported camera models have video URL like */cgi-bin/faststream.jpg

Supported functions: pan and tilt, brightness.
Sergey Tkachenko
Site Admin
Posts: 17555
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Linux

Post by Sergey Tkachenko »

Linux

The order of the OK and Cancel buttons has been changed in the Linux version of the webcam properties dialog (both Lazarus and FireMonkey) to match the order familiar to users of this operating system.
Sergey Tkachenko
Site Admin
Posts: 17555
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Screen sharing

Post by Sergey Tkachenko »

Screen sharing

RVMedia can use desktop as a video source (when TRVCamera.DeviceType = rvdtDesktop).

For Windows and macOS, you can stream the whole desktop, the selected monitor, the specified area on the screen, or the area of the specified window.
The new function GetVisibleWindowsHandles returns a list of available window handles.
For each handle, you can get: Note: on macOS, the application needs "screen recording" permission to record windows of other applications.
Sergey Tkachenko
Site Admin
Posts: 17555
Joined: Sat Aug 27, 2005 10:28 am
Contact:

File transfer

Post by Sergey Tkachenko »

File transfer via TRVMediaServer

Using RVMedia, applications can send data to each other, including video, audio, commands, and files.
While there were no problems with a direct transfer (from TRVCamSender to TRVCamReceiver components), transferring large files (more than 100 Mb) via TRVMediaServer was slow and usually failed.

This problem is fixed in RVMedia 11, you can send large files (for example more than 1 GB).
New property: TRVCamReceiver.UseTempFiles.
Sergey Tkachenko
Site Admin
Posts: 17555
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Webcam video modes

Post by Sergey Tkachenko »

Webcam video modes

New cross-platform DescribeVideoMode and DescribeVideoModePixelFormat functions.

They can be used to represent a list of video modes of local cameras to the user.
Sergey Tkachenko
Site Admin
Posts: 17555
Joined: Sat Aug 27, 2005 10:28 am
Contact:

Changes in demo projects

Post by Sergey Tkachenko »

Changes in demo projects

1. A list of public video cameras is updated.

2. FireMonkey version of WebCam demo uses DescribeVideoMode function.

3. MRVGUIDFuncs (or fmxMRVGUIDFuncs) unit is added to "uses" of demo projects that use RVMedia's GUID functions (previously, these functions were defined in MRVType/fmxMRVType).

4. Deploying options are set for FireMonkey projects, for macOS platforms (for applications that need additional files)
Sergey Tkachenko
Site Admin
Posts: 17555
Joined: Sat Aug 27, 2005 10:28 am
Contact:

How to test chat demos

Post by Sergey Tkachenko »

How to test chat demos

Although the chat demo projects (Demos.FMX\ClientServer\) were designed to work on different computers, it can be useful to test them by running them on the same computer. Unfortunately, if you try to launch a second instance of a FireMonkey project for macOS, it will simply switch to the already running instance. As a result, you cannot run two instances of the same application.

However, you can create a copy of the application file to launch it. In most cases, though, such a copy will not function correctly unless you change the application's identifier. To do this, open the package contents (this can be done in Finder), locate and edit the info.plist file, and modify the application identifier within it. Once this is done, you can launch the second instance (and additional instances if you repeat the renaming process).
Post Reply