<< Click to display table of contents >> RVMedia Version History |
marks changes that may affect existing projects.
RAD Studio 12 Athens Delphi and C++Builder 12 are supported (including support of "Windows 64-bit modern" platform). macOS FireMonkey for macOS is supported (64-bit Intel and ARM) Linux •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. FFmpeg •New versions of FFmpeg (versions 6 and 7) are supported, so RVMedia can use FFmpeg versions from 1 to 7. •New property for TRVCamera.FFmpegProperty: NoDelay; it is useful to display online video streams. •New property for TRVCamera.FFmpegProperty: VideoInputFormat, allows supporting special video sources •New feature: video remuxing (saving without changing format) for videos played using FFmpeg. New property: TRVCamera.FFmpegProperty.Remuxing: TRVFFmpegRemuxProperty. Drawing •TRVMRenderMode: the OpenGL drawing feature is restored (and now available not only in Delphi VCL, but in Lazarus for Windows). DirectX drawing is removed. Skia4Delphi drawing is added. •New property: TRVCamMultiView.Viewers[].AudioViewerColor defines a background color of an audio viewer. IP cameras Support of Mobotix cameras (having MJpeg URL like '*/cgi-bin/faststream.jpg'). You can rotate them and change video brightness. Sound Noise reduction is improved: •new properties for RVMedia's own noise reduction procedure: TRVMicrophone.NoiseReductionLevel and TRVAudioPlayer.NoiseReductionLevel •ability to use RNNoise for noise reduction in TRVMicrophone, new property UseRNNoise Video decoding •Support for video frames represented by Jpeg images not having a Huffman table (may be produced by some MJpeg or local cameras). •Ability to use Fast JPEG Decoder for Delphi to decode MJpeg streams and Jpeg frames from local cameras faster. Only for Win32 Delphi VCL projects (not for C++Builder, FireMonkey, Lazarus, Win64 (the standard Delphi TJpegImage is already fast for Win64)). Used under the Mozilla Public License (MPL). Not used by default, requires a manual activation. Details can be fond in the comment at the beginning of MRVJpegDec.pas and in the RVMedia license. Desktop streaming New function GetVisibleWindowsHandles returns potential values for TRVCamera.DesktopWindowHandle property. Other changes •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. •New DescribeVideoMode and DescribeVideoModePixelFormat functions •New TRVCamRecorder.OnGetImage event. •New TRVCamReceiver.UseTempFiles property; improved efficiency and reliability of receiving files. Refactoring GUID-related functions are moved to the new MRVGUIDFuncs uniit (fmxMRVGUIDFuncs for FireMonkey). This unit is added to "uses" of demo projects, when necessary. |
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 New properties: •TRVCamMultiView.RefreshRate can improve redrawing efficiency when displaying a large count of videos. •TRVCamView.FullScreenView and TRVCamMultiView.FullScreenMultiView provide read-only access to full-screen versions of video viewers. •TRVCamControl.DiskColor, DiskBrightness define the color of the control. Changes in FFmpeg support •TRVCamera.FFmpegProperty.UseVideoScale supports proportional resizing (if only one video size is defined). •New value in TRVVideoCodec: rvvcHEVC. Changes in GStreamer support •Since this version, TRVCamera.VideoResolution does not affect size of video played using GStreamer (only sizes defined in GStreamerProperty can be applied). •RVMedia supports both MSVC and MinGW builds of GStreamer for Windows Other changes New properties: •TRVCamera.Parameters.AutoChangeAlias allows to turn off updating values of Alias property •TRVCamera.DesktopForm (FireMonkey only) •TRVMediaServer.BufferOptions.LimitType property; not-limiting file buffers by default; increasing the default buffer limit for transferring files •New value for TRVBoundsTestMode: rvstmRectangles. Refactoring •Command-related classes (TRVCmd, TRVCmdParamCollection, TRVCmdParamItem) and events are moved from MRVType unit to the new MRVCmd unit. •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: otype of AStartTime parameter is changed in the events: TRVCamReceiver.OnDecodeAudio, all events of TRVAudioEvent type onetworking protocol between TRVCamSender and TRVCamReceiver is changed, you need to rebuild both sides with the new RVMedia version |
Delphi and C++Builder 11 Alexandria are supported. Sound from videos: New TRVCamSound component allows reading sound from videos received by TRVCamera. 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: TRVCamView and TRVCamMultiView components can display an animation indicating that the component waits for a video frame. New properties: TRVCamView.WaitAnimationDelay and TRVCamMultiView.WaitAnimationDelay. Displaying videos: TRVCamView.FrameScaleQuality, TRVCamMultiView.Viewers[].FrameScaleQuality allows to lower video scale quality in VCL and LCL for Windows (to use less CPU time). Encoding and decoding using FFmpeg: New version of FFmpeg (version 5) is supported, so RVMedia can use FFmpeg versions from 1 to 5. New property: TRVCamRecorder.VideoEncodingParameters. New event: TRVCamera.OnGetVideoStreamIndex. 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 version Linux sound (using ALSA) in Lazarus is reworked. Design-time support 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. Color control: New method GetColorControlPropertyRange returns an allowed range for Brightness, Contrast, Saturation, Sharpness, Hue properties of the selected video source. Full-screen mode for video viewers: •new TRVCamView.AllowFullScreen and TRVCamMultiView.AllowFullScreen properties to display full-screen buttons •new TRVCamView.FullScreen and TRVCamMultiView.FullScreen properties to switch between a full-screen and a normal mode. Resizing video viewers in TRVCamMultiView: •new ScaleViewers property •new Anchors and AlignVideoViewer properties for TRVCamMultiView.Viewers New server methods: Proxy configuration, new properties: TRVCamSender.ProxyHost and ProxyPort are removed. Authentication: •HTTP authentication code is improved and corrected •ability to request a user name and a password from the user: new TRVCamera.LoginPrompt, Language properties, OnLogin event •new TRVCamera.OnLoginFailed event. FFmpeg configuration (new properties in TRVCamera.FFMpegProperty): •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). •TRVCamera.GStreamerProperty.UseQueue New function: LoadGStreamerLibraries. Other changes: •rvccpDate and rvccpTime are excluded from TRVCamView.CaptionParts by default •TRVCamera.UpdateUsers is removed. AddUser and ModifyUser are added instead. •TRVCamSender.OnEncodeVideo and TRVCamReceiver.OnDecodeVideo events allow using custom compression or encryption for video. •TRVCamSender can auto-detect sending buffer size, the default value of BufferSize property is changed to 0 (meaning auto-detect) •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. TRVCamReceiver.VideoLatency is implemented. New properties for TRVCamView: IconStyle, SearchPanelColor, SearchPanelTextColor, they define the appearance of a camera search panel. The same properties for TRVCamMultiView. New properties for TRVCamera.FFMpegProperty (Protocol is removed, replaced by UDPTransport) Declaration of TRVSocket is moved to MRVSocket unit New properties: TRVCamSender.PixelColorThreshold and TRVMotionDetector.PixelColorThreshold for red, green, blue colors. Default value is changed from 15 to 8. When sending a command, it's no longer necessary to wait until the previous command is sent. New TRVCamSender.OnSentCmd event. Since this version, it is highly not recommended to display modal forms in certain events, mainly of TRVCamReceiver. We modified the "ChatRoom" demo to use a non-modal chat form. DirectX rendering mode is abandoned (probably, it will be revived in future versions). |
Media channels 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. New property IndexFrom (index of media channel) is added to TRVCamView and TRVCamMultiView.Viewers[]. Sound TRVAudioPlayer is a new component allowing to play sound and to record it to a file. It can be linked with TRVMicrophone or TRVCamReceiver components. The sound sub-system of TRVCamReceiver is rewritten, so sound is much clearer now. The components now support stereo sound. Video recording TRVCamRecorder is a new component for recording video and sound files. It gets audio and video data from TRVCamera, TRVMicrophone or TRVCamReceiver components. Local web cameras RVMedia supports more video formats (I420, NV12, IYUV, UYVY), even if corresponding decoders are not installed in the system. IP cameras RVMedia supports cameras having different ports for commands and RTSP video. A new property is added: TRVCamera.RTSPPort. Custom video A new type of video source is added: DeviceType = rvdtUserData. In this mode, video frames are requested from an application in OnNewImage event. Other changes in cameras TRVCamera.FramePerSec is a fractional value now. FFmpeg support New TRVCamera.FFMpegProperty property contains sub-properties to configure FFmpeg. TRVCamera.UseFFMpeg property is moved to TRVCamera.FFMpegProperty.UseFFMpeg FFmpeg is used in TRVCamRecorder and TRVAudioPlayer components for video and audio recording. FFmpeg version 4 is supported (as well as versions 3 and 2). Microphone The type of TRVMicrophone.VolumeMultiplier is changed from Byte to Double, to allow decreasing sound volume. Camera viewers 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. New property: TRVCamView.CaptionHeight and TRVCamMultiView.CaptionHeight. Demo projects 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 Other changes •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. •new property: TRVCamera.SmoothImage and TRVCamReceiver.SmoothImage. |
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. A client may receive a list of all groups from the server, using TRVCamSender.GetAllGroups and TRVCamReceiver.OnGetAllGroups. The count of groups on the server may be limited in TRVMediaServer.MaxGroupCount property. Some server features (like getting the list of all groups, getting the list of all online users, restarting the server) may be undesirable, so they must be turned on in TRVMediaServer.CmdOptions Other new features of a media server A client may restart the server by calling TRVCamSender.RestartServer (works only if this feature is turned on in TRVMediaServer.CmdOptions) A client may request a list of all [online] users on the server: TRVCamSender.GetAllUsers, GetAllOnlineUsers (works only if this feature is turned on in TRVMediaServer.CmdOptions) Changes in sound processing •TRVMicrophone allows choosing the microphone (or another audio input device), new properties: AudioInputDeviceIndex, AudioInputDeviceCount, AudioInputDeviceList. •You can encode audio data before sending them to the network (TRVCamSender.OnEncodeAudio) and decode them when they are recieved (TRVCamReceiver.OnDecodeAudio). 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 Other changes •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) •RVMedia supports newer (H.264) Foscam IP cameras (rotation and administration functions). New properties to configure these cameras: Hue, Saturation, Sharpness, Bitrate •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. Renamed objects •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) |
TRVCamera.SearchCamera can search not only for MJPEG, but also for H.264 cameras. H.264 cameras are supported in DeviceType=rvdtIPCamera mode, if FFmpeg is available. Lazarus for Windows and Linux is supported. You can specify path of FFmpeg libraries. Changes affecting compatibility: •TRVCamera.OnGetImage: the type of Img parameter is changed to TRVMBitmap; this event is now called in a thread context. •TRVMediaServer.OnDataRead has a new parameter ADataType. •TRVCamera.OnGetSnapShot event is removed, because GetSnapShot returns the last frame in any camera mode. •TRVImageWrapper.GetBitmap now returns TRVMBitmap instead of TBitmap. •TRVCamera.SearchCamera work depends on VideoFormat property •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); •TRVCamViewItem.GUID , TRVCamView.GUID, TRVAudioViewer.GUID are renamed to GUIDFrom. |
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. |
GStreamer support In TRVCamera + GStreamer, protocols and video formats are separated now. TRVCamera.DeviceType property is changed, TRVCamera.VideoFormat property is added. 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. Receiving 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. OnReceiveFileData and OnDataRead events are now called in a thread context. New events: OnReceivingFile and OnReceivedFile. The event OnReceiveUserData is called in a thread or the main process context depending on SynchonizedReceiveUserData property. New property FilterSystemCmd. You can send a command to users from a server: new SendCommandToGUID method. In OnServerCmd you can process not only server commands, but commands that clients send to each other, if you turn off FilterUserCmd. Parameters of OnServerCmd are changed. ConnectionProperties property is split into two properties: SenderConnectionProperties and ReceiverConnectionProperties. OnServerCmd, OnUserConnect, OnUserDisconnect, OnDataRead events are called in a thread context. 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. TRVCamReceiver now can mix sound from different sources. New properties: Volume and Mute. TRVMicrophoneView now can display sound activity not only from TRVMicrophone, but also from TRVCamReceiver: new properties RecieverSource and GUID. TRVCamMultiView now can display audio viewers next to video viewers. New property: AudioSource, Viewers[].AudioViewer and Viewers[].AlignAudioViewer. Localization New properties: TRVCamView.Language, TRVCamMultiView.Language, TRVTrafficMeter.Language. 64 bit Both Win32 and Win64 projects are supported in this version. Other TRVCamera.PlayVideoFile uses FramePerSec property. |
GStreamer TRVCamera supports of GStreamer SDK to play H.264 via RTSP and MPEG-4 via HTTP. New values for TRVCamera.DeviceType. New method IsSupportedGStreamer, new property UseGStreamer. |