RVMedia Version History
marks changes that may affect existing projects.
RAD Studio 12 Athens
Delphi and C++Builder 12 are supported.
More settings are available in TRVWebCamDialog for Linux (such as exposure, pan, tilt, zoom, focus, iris), if they are supported by the camera.
PTZ control works for local web cameras in Linux.
The default value of TRVCamera.Latency is changed to 0.
Optimization: internal buffer is not used for frames if TRVCamera.Latency = 0, so TRVCamera works more efficiently.
FireMonkey for Linux
RVMedia supports Linux not only in Lazarus version, but also in FireMonkey version (for Delphi 10.3 and newer).
Changes in visual components
Changes in FFmpeg support
•New value in TRVVideoCodec: rvvcHEVC.
Changes in GStreamer support
•RVMedia supports both MSVC and MinGW builds of GStreamer for Windows
•New value for TRVBoundsTestMode: rvstmRectangles.
•All units for Lazarus for Linux are renamed, from mrvlcl_lin_*.pas to MRVLin*.pas (for example, mrvlcl_lin_Player.pas is renamed to MRVLinPlayer.pas)
•Type of all relative time values (tick counts) are changed from Cardinal to Int64. As a result:
Delphi and C++Builder 11 Alexandria are supported.
Sound from videos:
In the following events, the type of ASamplesPerSec parameter is changed to Integer to allow arbitrary values: TCustomRVAudioOutput.OnGetAudio, TCustomRVMicrophone.OnGetAudio, TRVCamSender.OnEncodeAudiio, TRVCamReceiver.OnDecodeAudio.
New animation in video viewers:
Encoding and decoding using FFmpeg:
New version of FFmpeg (version 5) is supported, so RVMedia can use FFmpeg versions from 1 to 5.
Ability to choose the specific codec for encoding/decoding. For decoding: TRVCamera.FFMpegProperty.DecodeAudioCodecName, DecodeVideoCodecName. For encoding: TRVCamRecorder.AudioCodecName, VideoCodecName, TRVAudioPlayer.EncodeAudioCodecName. You can use GetListOfAudioEncoders, GetListOfVideoEncoders, GetListOfAudioDecoders, GetListOfVideoDecoders functions to get possible values of these properties.
Linux sound (using ALSA) in Lazarus is reworked.
A version checker is added. It allows to check for a new version of RVMedia and download the updated installer. The first check is performed when you click on a button in the version checker window. Subsequent checks are performed when Delphi/Lazarus IDE starts, only if you allowed them by leaving the "check on start" checkbox checked. On these checks, a version checker window is shown only if a new version is found (and no more than once a day).
Delphi and C++Builder 10.4 Sydney are supported.
Better support of local USB cameras (both in Windows and Linux):
•all camera rotation methods are supported for local USB webcams (for Windows);
•Brightness, Contrast, Saturation, Sharpness, Hue properties are applied to local USB webcams;
•new TRVWebCamDialog component; it displays a dialog window for changing local USB webcam properties (for Windows and Linux);
•more camera video modes are supported in Windows; added support for camera video modes in Linux;
•unsupported video modes are excluded from a list of video modes.
Full-screen mode for video viewers:
Resizing video viewers in TRVCamMultiView:
•new ScaleViewers property
New server methods:
Proxy configuration, new properties:
TRVCamSender.ProxyHost and ProxyPort are removed.
•HTTP authentication code is improved and corrected
•UseFFMpegProperty allows/disallows assigning FFmpeg parameters
•RTFPFlags, ProbeSize properties
•FrameDrop: Boolean allows/disallows dropping frames if they are received too late.
•CustomProperties: TStringList: additional parameters for FFMpeg.
•RTSPTransport has the new default value: [rvpeTCP, rvpeUDP]
GStreamer 1.0 is supported. Since this version, RVMedia can use both GStreamer 0.1 and GStreamer 1.0. The following special features are supported for GStreamer 1.0:
•listening the specified port to receive UDP video stream (see the comments about TRVCamera.DeviceType property)
•detecting HTTP/HTTPS/RTSP/UDP protocol by URL
•using a custom pipeline string (TRVCamera.GStreamerProperty.LaunchString and LaunchStringMiddle); using these low-level properties you can implement other video sources, or add additional video processing options (such as video recording or streaming).
New function: LoadGStreamerLibraries.
•optimization: much faster sending and receiving, especially for large files and video frames, much more efficient reading of MJPEG files and streams.
FireMonkey for Windows is supported (for Delphi and C++Builder XE6 and newer).
Delphi and C++Builder 10.3 Rio are supported. Lazarus 2 is supported.
Declaration of TRVSocket is moved to MRVSocket unit
DirectX rendering mode is abandoned (probably, it will be revived in future versions).
In previous versions, TRVCamSender component could send video from a single source; the same for audio. It was OK for direct sender-receiver connections, because a receiver can receive data from multiple senders. However, it was a problem for client-server applications, if a client wanted to translate multiple video and sound sources. In this version, media channels allow to solve this problem.
The main new property related to media channels is TRVCamSender.ExtraMediaSources. A new optional parameter (AMediaIndex, index of the media channel) is added to the methods for sending commands, files and user data.
New parameter (AMediaIndex) is added to the events of TRVCamReceiver: OnReceiveFileData, OnReceiveCmdData, OnReceiveUserData, OnDataRead. If you already used these events, you need to add this parameter in the event handlers.
The sound sub-system of TRVCamReceiver is rewritten, so sound is much clearer now.
The components now support stereo sound.
Local web cameras
RVMedia supports more video formats (I420, NV12, IYUV, UYVY), even if corresponding decoders are not installed in the system.
Other changes in cameras
TRVCamera.FramePerSec is a fractional value now.
FFmpeg version 4 is supported (as well as versions 3 and 2).
TRVCamMultiView is now implemented not as a parent window for internal TRVCamView components. Since this version, it draws everything in a single window. It allows implementing DirectX and OpenGL drawing modes more efficiently.
All Delphi demo projects are moved from "Demos" to "Demos\Delphi" folder . New folder for Lazarus demo project: "Demos\Lazarus".
If you installed this new version without uninstalling the previous version, delete all folders from "Demo",except for "Delphi" and "Lazarus" folders.
New demo projects:
•SendAndReceive\TwoSides: how to connect two applications, if IP address is available is only for one side
•ClientServer\VideoChats\Lecture: one client (Lecturer) shows video from two sources to other clients (Students)
•Recording\AudioRecorder: how to use new TRVAudioPlayer component
•Recording\VideoRecorder: how to use new TRVCamRecorder component
•The following events have new parameter (RemoteSessionKey): TRVCamSender.OnConnected, OnConnecting, OnDisconnect, OnConnectError, TRVCamReceiver.OnConnected, OnConnecting, OnDisconnect, OnConnectError. If you already used these events, you need to add this parameter in the event handlers.
•All custom cursors now have 32x32, 48x48, and 64x64 versions.
•New VideoDefaultAcceptAll, AudioDefaultAcceptAll, UserDefaultAcceptAll, FileDefaultAcceptAll, CmdDefaultAcceptAll properties of items in TRVCamReceiver.Senders collection (default values correspond to the old behavior).
•Chinese user interface.
Groups on a media server (TRVMediaServer component): named and password-protected groups
Starting from this version, a group may have a name and a password. They may be specified in the parameters of TRVCamSender.JoinGroup. The group name and the identifier of the group creator may be requested using TRVCamSender.GetGroupInfo method, and returned in TRVCamReceiver.OnGetGroupInfo. To join a password-protected group, other users must specify the same password in TRVCamSender.JoinGroup.
Other new features of a media server
Changes in sound processing
•TRVMicrophone allows choosing the microphone (or another audio input device), new properties: AudioInputDeviceIndex, AudioInputDeviceCount, AudioInputDeviceList.
Changes in local USB cameras
•RVMedia can decode different formats of video from local web cameras (YV12, YUYV, YUY2, YVYU, UYVY, NV12, etc.) itself. Previously, it relied on a converter that converts these formats to RGB (it may be installed or not).
•TRVCamera.VideoResolution now affects web cameras
•Our motion detection class (used in TRVCamSender to detect changed areas to send) is now available as TRVMotionDetector.
•RVMedia supports FFmpeg 3.0 (as well as previous versions of FFmpeg libraries)
•TRVCamSender.UseVideoResolution property is removed. Instead, a new option is added to TRVVideoResolution: rvDefault. This value is now used as default for TRVCamera.VideoResolution и TRVCamSender.VideoResolution. New resolutions are added to TRVVideoResolution.
•new package scheme: 32+64 bit runtime packages + 32 bit designtime packages.
•TRVCamReceiver.OnVideoAccessRequest and OnVideoAccessCancelRequest are renamed to OnMediaAccessRequest and OnMediaAccessCancelRequest (as they already were called in this help file) . A new parameter ADataType is added to these events. The same parameter is added as an optional parameter to TRVCamSender.SendMediaAccessRequest and SendMediaAccessCancelRequest.
•TRVCamera.GStreamerProperty.Bitrate is renamed to KBitrate.
•TRVCamera.Decoder.Baudrate was replaced by Bitrate.
Changes in demo projects
•new demo: ClientServer\VideoChats\ChatRooms\ shows how to use named password-protected rooms, and how a room creator can choose a user who will transmit video to all other group members
•Cameras\MotionDetect is moved to Cameras\MotionDetect_Old, a new demo (using TRVMotionDetector) is placed in Cameras\MotionDetect\
•previously, TRVCamReceiver.Senders.GUIDFrom did not filter data of all types, and this property was used in video chats to filter video; in the new version, TRVCamReceiver.Senders.VideoSenders property is used, as it should;
•changes related to changes in VideoResolution and UseVideoResolution properties (see above)
•ClientServer\VideoChat demos allow choosing a microphone
•changes related to renaming "VideoAccess" events to "MediaAccess" (see above)
Lazarus for Windows and Linux is supported.
You can specify path of FFmpeg libraries.
Changes affecting compatibility:
•TRVMediaServer.OnDataRead has a new parameter ADataType.
•TRVCamera.OnGetSnapShot event is removed, because GetSnapShot returns the last frame in any camera mode.
•TRVCmdParamItem.Value property is removed, a value must be accessed using TRVCmdParamItem's methods.
Since this version, TRVCamera.OnGetImage is called before saving data to MJpeg file, so if you painted something on a video frame in this event, this painting will be saved to a file.
Default value for TRVCamera.MaxCameraSearchThreadCount is increased.
FFmpeg support. New properties and methods:
•UseFFMPEG (note: in v 6.0, this property is moved to FFMpegProperty)
Renamed items :
•in the units names, "Win" is moved from the end to the beginning (for example, MRVMicrophoneWin.pas is renamed to MRVWinMicrophone.pas);
TRVCamSender.Encoding=rvetPNG and rvetPNGChange are implemented for Delphi 2009 and newer.
Path to GStreamer libraries can be taken from environment variables written by the GStreamer installer, it's not necessary to add this path to PATH environment variable any more.
More formats are added in TRVCamera.VideoFormat; rvvfMPEG4 is renamed to rvvfAVI_MPEG.
Multi-monitor support for TRVCamera.DeviceType=rvdtDesktop: VideoDeviceIndex allows switching the source monitor. New property DesktopZoomPercent allows scaling frames of video received in this mode (previously, VideoResolution property was applied)
The list of camera models supported by TRVCamera.SearchCamera is greatly increased. This method has a new optional parameter allowing to narrow down a search. TRVCamera.IPCameraType property is changed to IPCameraTypes.
New TRVCamera.VideoDeviceIdList property returns unique identifiers of local web cameras.
TRVCamera.GStreamerProperty allows configuring GStreamer.
TRVCamera.UseGStreamer property is moved to TRVCamera.GStreamerProperty.UseGStreamer
New property for TRVCamSender: SendOptions.
New event OnSendCmd helps to debug command sending.
Changed areas are detected in reduced frame images, to make processing faster: new property ChangedAreaProcessingMode.
TRVCamReceiver and TRVCamera now use three threads for video data: for receiving, for decoding, and for drawing. In this way, a camera can receive video very fast without waiting for processing, to prevent lags.
New events: OnReceivingFile and OnReceivedFile.
New property FilterSystemCmd.
You can send a command to users from a server: new SendCommandToGUID method.
ConnectionProperties property is split into two properties: SenderConnectionProperties and ReceiverConnectionProperties.
Microphone and sound
TRVMicrophone has new properties defining sound quality: SamplesPerSec and BitsPerSample. TRVMicrophone can read sound from a WAV-file instead of a microphone (see SourceType property and new properties and events related to WAV-files). Default value for SoundMinLevel is changed to 10. You can also change sound buffer size: BufferDuration.
TRVCamMultiView now can display audio viewers next to video viewers. New property: AudioSource, Viewers.AudioViewer and Viewers.AlignAudioViewer.
Both Win32 and Win64 projects are supported in this version.