RVMedia Version History
marks changes that may affect existing projects.
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.
•UseFFMpegProperty allows/disallows assigning FFmpeg parameters
•RTSPTransport has the new default value: [rvpeTCP, rvpeUDP]
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.