Unit [VCL and LCL] MRVCamera;
Unit [FMX] fmxMRVCamera;
TRVGStreamerProperty = class(TPersistent)
This class has the properties defined below.
•UseGStreamer: Boolean – if True, and GStreamer is available, the component uses it (default value = True). If both GStreamer and FFmpeg are available and turned on, the component uses FFmpeg (see TRVCamera.FFMpegProperty).
•LaunchString: String. This property allows specifying your own pipeline string for GStreamer 1.0, overriding RVMedia settings. See the details at the end of this topic.
•LaunchStringMiddle: String. This property allows adding additional elements to GStreamer 1.9 pipeline string.
Video scale properties:
•UseVideoScale: Boolean – use GStreamer to scale video (default value = False). Other properties in this group are applied only if UseVideoScale = True.
•AddBorders: Boolean adds black borders if necessary to keep the display aspect ratio (default value = False), only used if UseVideoScale = True
•Dither: Boolean adds dither; only used for Lanczos method (default value = False); see also Method
•Envelope: Integer – size of filter envelope (default value = 200)
•Method: TRVGVideoScaleMethod – video scaling method (default value = rvgvfBilinear)
•Sharpen: Integer – sharpening; allowed values: 0..100 (default value=0)
•Sharpness: Integer – sharpness of filter; allowed values:50..150 (default value = 100)
•VideoHeight: Integer – video output height; 0 - use the original height (default value = 0)
•VideoWidth: Integer – video output width; 0 - use the original width (default value = 0)
•BufferSize: Integer – size of UDP buffer used by GStreamer (default value = 524288)
•Latency: Integer – amount of ms to buffer for RTSP (default value = 2000)
•UseQueue: Boolean – if True, additional "queue2" element is added in GStreamer 1.0 pipeline, between videoscale elements and RVMedia video sink. It provides additional buffering. In some cases (e.g. reading UDP stream) it helps to remove artifacts in video frames.
Properties reserved for future use (encoding properties):
•KBitrate: Intege – bitrate in kbit/sec (default value = 2048)
•SlicedThreads: Boolean – low latency but lower efficiency threading (default value = False)
•Threads: Integer – number of threads used by the codec, 0 for automatic; allowed values: <= 4 (default value = 0)
Types used in the properties:
TRVGVideoScaleMethod = (rvgvfNearest, rvgvfBilinear, rvgvf4Tap, rvgvfLanzos);
Types of video scaling method (see Method property)
•rvgvfNearest – use nearest neighbor scaling (fast and ugly)
•rvgvfBilinear – use bi-linear scaling (slower but prettier)
•rvgvf4Tap – use a 4-tap filter for scaling (slow)
•rvgvfLanzos – use a multitap Lanczos filter for scaling (slow)
LaunchString and LaunchStringMiddle properties are used if GStreamer version is 1.0 is available. They are ignored for GStreamer 0.1. These are low-level properties, they require knowledge of GStreamer pipelines.
If LaunchString is not empty, it is used instead of video source and video decoding elements constructed by TRVCamera.
In this case, it must define a pipeline for video source and video format (otherwise, TRVCamera builds a pipeline string itself, using VideoFormat, URL, UserName, UserPassword, CameraPort, RTSPPort, ProxyProperty properties).
LaunchString must not include video scale and video sink entries, they will be added by RVMedia automatically (RVMedia adds: videoconvert, videoscale, capsfilter, and its own video sink).
Example of LaunchString:
'souphttpsrc location="https://www.trichview.com/videotest/h264.avi " ! avidemux ! h264parse ! avdec_h264'
Like LaunchString, it defines a part of GSTreamer pipeline. However, it does not override TRVCamera pipeline, but adds new entries in it.
The complete pipeline consists of:
•if LaunchString is not empty: LaunchString, then LaunchStringMiddle, then video scale elements, then RVMedia video sink
•if LaunchString is empty: video source element, video decoding elements, then LaunchStringMiddle, then video scale elements, then RVMedia video sink.
You can use this property to split the pipeline (using "tee" element) in two or more branches. One branch, like before, is used by TRVCamera to display video. Other branches can be used to record or to stream video.