RTMP Target

RTMP Target properties for Script Engine. Streams the scene's composited video and audio to an RTMP/RTMPS endpoint (Vindral, YouTube, Facebook, Twitch, custom origins, etc.). Encodes video with H.264 (libx264 or NVENC) or AV1, audio with AAC, supports a backup server with automatic failover, configurable reconnect, CBR/VBR rate-control tuning, optional onFI metadata injection, and a rich set of runtime statistics (bitrate, encode and network timing, queue depth, error/warning counters). Auto-reconnects on connection loss or on large audio/video PTS divergence when configured.

Property Type Access Description
ShowAdvancedOptions bool get/set Show or hide the target's advanced settings in the editor UI. [default=false].
AutoStart bool get/set Whether the RTMP stream connects automatically as soon as the component is initialised. [default=false]. When true, the target invokes its connect logic immediately on load (equivalent to running StartCommand) and will use the auto-reconnect logic on failures. Make sure RtmpServerAddress (and ideally RtmpBackupServerAddress) are valid, the encoder settings are correct, and the target license seat is available — otherwise the stream will fail and keep retrying until disconnected manually.
RtmpServerAddress string get/set Primary RTMP/RTMPS ingest URL (e.g. rtmp://host/app/streamkey). The address Composer connects to first. Both rtmp:// and rtmps:// are supported. The special token @@randomid in the URL is substituted with a per-instance random GUID stream key on connect, useful for unique stream identifiers per session. The value is trimmed on set, and changing it updates the enabled state of the connect/disconnect commands.
RtmpBackupServerAddress string get/set Optional backup RTMP/RTMPS ingest URL used if the primary fails. When set and the primary connection drops or repeatedly fails, the target falls over to this URL on the next reconnect attempt. The same @@randomid substitution applies (with an independent random GUID from the primary). Leave empty to disable backup. The value is trimmed on set.
PlayerHttp HttpString get/set Optional public playback URL for the stream produced by this target. Pure metadata — Composer never connects to it. Used in the UI as a clickable link so an operator can preview the live stream from inside Composer without copying the URL elsewhere. Leave empty if you don't have a player endpoint.
ImageOutputResolution ImageOutputResolution get/set Output video resolution sent to the RTMP server. [default=Unchanged]. Unchanged passes the scene's native resolution through to the encoder; the other values scale the frame to a standard preset (e.g. 1920x1080, 1280x720) before encoding. Pick a preset when the destination expects a specific resolution or to bring the bitrate-per-pixel budget into a sensible range; pick Unchanged to avoid a scaling pass on the GPU.
OutputVideoBitrate OutputVideoBitrate get/set Target video bitrate the encoder aims for. [default=3 Mbit/s]. The nominal bitrate the encoder is configured with — the actual outgoing bitrate is also shaped by MaxVideoRateMultiplier, MinVideoRateMultiplier, and BufferSizeMultiplier (when CBR is enabled). Pick to match the destination's expectations and the chosen ImageOutputResolution: ~2–4 Mbit/s for 720p, ~4–6 Mbit/s for 1080p, ~10–20 Mbit/s for 4K.
AacBitRate AacBitRate get/set AAC audio bitrate for the encoded stream. [default=128 kbit/s]. Selects the constant bitrate used by the AAC encoder. Higher values give better audio fidelity at the cost of more bandwidth — 128 kbit/s is a safe default for stereo speech and most music; 192–256 kbit/s is appropriate for music-heavy content. Lower values (64/96 kbit/s) save bandwidth at the cost of audible artefacts, especially on transients.
H264BFrameDistance H264BframeDistance get/set Maximum number of B-frames between reference frames in the H.264 GOP. [default=Zero]. B-frames improve compression efficiency but introduce decoder/display delay and can confuse strict low-latency consumers. Keep at Zero for live/low-latency RTMP delivery (the default). Increase only when your downstream decoder explicitly supports B-frames and the slight efficiency gain outweighs the added latency. Ignored when UseNvenc is true and the NVENC preset disables B-frames.
VideoCompressionGopSize VideoCompressionGopSize get/set GOP (Group of Pictures) length, expressed as a multiple of the source frame rate. [default=GopFps2]. Sets the keyframe (I-frame) interval. GopFps1 produces a keyframe every second (= one frame rate's worth of frames), GopFps2 every two seconds, etc. Shorter GOPs improve seek/error recovery on the player side and are required by some HLS/DASH packagers; longer GOPs improve compression efficiency. For live streams a 2-second GOP is the standard compromise.
H264Profile H264Profile get/set H.264 codec profile to encode with. [default=baseline]. Determines which encoder tools are used and which decoders the stream is compatible with. baseline is the most widely supported (older mobile devices, many embedded decoders) but the least efficient; main adds CABAC and B-frames; high adds 8x8 transforms and quantiser matrices for the best quality at a given bitrate. Pick baseline for the broadest playback compatibility; pick high when you control the player and want the best quality per bit. Only applies to the libx264 path — NVENC has its own profile selection through NvencAdvancedOptions.
AutoReconnectOnHighPtsDiff HighPtsDiffReconnectOptions get/set How aggressively the target reconnects when audio and video PTS drift apart. Selects the threshold at which an excessive video-vs-audio PTS difference forces an automatic reconnect, in an attempt to re-sync the two streams. Tighter thresholds catch sync drift earlier but trigger more reconnects on jittery networks; looser thresholds tolerate more drift before acting. Disable entirely when reconnects are more disruptive than minor sync drift in your delivery pipeline. Changing this updates the enabled state of the connect commands.
UseAdvanceCbrConfiguration bool get/set Whether to enforce constant-bitrate (CBR) rate control via the multipliers below. [default=true]. When true, the encoder is configured so that the target bitrate is held flat using MaxVideoRateMultiplier, MinVideoRateMultiplier, and BufferSizeMultiplier to bound rate excursions and the VBV buffer. CBR is the safest choice for live RTMP delivery — most ingest servers and CDNs assume a near-flat bitrate. Disable to let the encoder run in default (effectively VBR) mode when bandwidth is plentiful and quality matters more than predictability. Changing this updates the enabled state of the connect commands.
MaxVideoRateMultiplier float get/set Upper bitrate cap as a multiplier of the configured video bitrate. [default=1.0]. Only used when UseAdvanceCbrConfiguration is true. The CBR maximum bitrate is set to OutputVideoBitrate × MaxVideoRateMultiplier. 1.0 holds a strict CBR ceiling; values slightly above 1.0 (e.g. 1.1) allow brief overshoots on busy frames; very high values effectively behave like VBR. Keep at or near 1.0 for live RTMP unless your CDN explicitly tolerates excursions.
MinVideoRateMultiplier float get/set Lower bitrate floor as a multiplier of the configured video bitrate. [default=1.0]. Only used when UseAdvanceCbrConfiguration is true. The CBR minimum bitrate is set to OutputVideoBitrate × MinVideoRateMultiplier. 1.0 holds a strict CBR floor (the encoder is not allowed to drop below the target on quiet frames); lower values let the encoder coast when content is easy to compress. Keep at or near 1.0 for delivery pipelines that assume a flat outgoing bitrate.
BufferSizeMultiplier float get/set VBV buffer size as a multiplier of the configured video bitrate. [default=1.0]. Only used when UseAdvanceCbrConfiguration is true. The encoder's VBV (Video Buffering Verifier) buffer is set to OutputVideoBitrate × BufferSizeMultiplier bits. Smaller buffers (≤1.0) hold the bitrate more strictly to the target and reduce latency, but can hurt quality on hard-to-encode frames. Larger buffers (≥1.5) absorb spikes for higher-quality output at the cost of more end-to-end delay. 1.0 (a one-second VBV) is a balanced live default.
H264EncodingQualitySpeed H264EncodingQualitySpeed get/set libx264 preset trading encoding speed for compression efficiency. [default=veryfast]. Maps to the standard x264 --preset knob: ultrafast/superfast/veryfast/faster/fast/ medium/slow/… Faster presets use less CPU per frame and are required to keep up with live frame rates, at the cost of larger files / lower quality at the same bitrate. veryfast is a balanced live default; pick something slower only if your CPU has budget left and you need the extra compression efficiency. Only applies when UseNvenc is false.
H264Tune H264Tune get/set libx264 tuning preset for the content type / latency profile. [default=zerolatency]. Maps to the standard x264 --tune flag. zerolatency disables look-ahead and B-frames for lowest latency (the right choice for live RTMP). film, animation, grain, stillimage bias the encoder for that kind of content. psnr/ssim optimise for the named objective metric. Only applies when UseNvenc is false. Stick with zerolatency for live unless you know your delivery pipeline can absorb the extra delay.
H264EncodingThreads H264EncodingThreads get/set Number of CPU threads dedicated to libx264 encoding. [default=Two]. Higher thread counts speed up encoding but introduce slice boundaries that slightly hurt compression efficiency and can add latency. Two threads is a good balance for one HD stream; scale up only if a single target falls behind on frame rate, or if you're running multiple RTMP targets and need to bound total CPU. Only applies when UseNvenc is false (NVENC runs on the GPU and ignores this).
UseNvenc bool get/set Whether to use NVIDIA's NVENC GPU encoder instead of the libx264 CPU encoder. [default=true]. NVENC offloads H.264 encoding to dedicated silicon on the GPU, freeing CPU and typically hitting frame rate at high resolutions with low latency. Quality at low bitrates is generally slightly behind tuned libx264 but the gap closes at typical streaming bitrates. When true, the H264EncodingQualitySpeed, H264Tune, H264Profile, and H264EncodingThreads knobs are ignored — NVENC is configured via NvencAdvancedOptions. Requires a CUDA-capable NVIDIA GPU. Changing this updates the enabled state of the connect commands.
UseAv1 bool get/set Use AV1 instead of H.264 as the video codec. [default=false]. AV1 offers significantly better compression efficiency than H.264 (typically 30–50% bitrate reduction at the same perceptual quality) but requires both ingest and player to support AV1 in RTMP — many traditional CDNs and players still do not. Only enable when you know the receiving end accepts AV1 over RTMP. When false, the H.264 settings above apply. Changing this updates the enabled state of the connect commands.
NvencAdvancedOptions string get/set NVENC encoder options as a JSON object of FFmpeg -x264opts-style key/value pairs. Only used when UseNvenc is true. Each key/value is forwarded to NVENC as a private encoder option. The default covers low-latency live streaming (zerolatency=1, rc=cbr, preset=p4, rc-lookahead=0, surfaces=1, delay=0, gpu=any, no-scenecut=1, strict_gop=0). Adjust to override individual options — for example, raise preset to p5/p6/p7 for better quality at higher CPU/GPU cost, or change rc to vbr for variable bitrate. Invalid JSON is ignored. Changing this updates the enabled state of the connect commands.
SendOnFiOnInterval bool get/set Whether to inject onFI (Frame Info) metadata into the RTMP stream periodically. [default=false]. onFI is an AMF script-data tag that lets the target embed timing/identification information inline with the video stream — useful for downstream consumers that need to reconstruct frame-accurate timing or correlate the live stream with an external system. When enabled, metadata is sent every MetaDataInterval frames. Leave off if your downstream pipeline does not consume onFI; some RTMP servers will simply ignore it, but a few may reject unknown tags.
MetaDataInterval MetaDataInterval get/set How often (in video frames) onFI metadata is injected. [default=EveryTwentyFrames]. Only used when SendOnFiOnInterval is true. Lower values give downstream consumers more frequent timing/identification samples at the cost of slightly more bandwidth and a small amount of CPU per insertion; higher values minimise overhead but make the metadata arrive less often. Match this to the granularity your downstream pipeline expects.
ConnectionStatus ConnectionStatus get Current connection state of the target (read-only). Reflects the live RTMP connection: typically Disconnected, Connecting, Connected, Reconnecting, or an error variant. Set internally as the connect/reconnect/disconnect threads progress. Scripts should read this to decide whether the stream is live before emitting follow-up commands; a state change also triggers OnConnectionStateChanged and updates the enabled state of StartCommand/StopCommand/ReconnectCommand.
StartCommand Command get Connects to the RTMP server and begins streaming. Invokable command. Spins up the configured video encoder (libx264 or NVENC) and audio encoder (AAC), opens the RTMP/RTMPS connection to RtmpServerAddress (or the backup if configured and primary fails), and starts pushing encoded frames. No-op if the target is already connecting or connected. Failures auto-retry per ReconnectInterval until disconnected.
StopCommand Command get Stops the RTMP stream and tears down the encoder. Invokable command. Cancels any in-flight reconnect attempts, closes the RTMP/RTMPS connection, drains the send queue, and disposes the active video/audio encoder. Also clears the running server address. After this returns, the target is fully idle until StartCommand is invoked again.
ReconnectCommand Command get Forces a reconnect cycle on the RTMP stream. Invokable command. Closes the current connection (if any) and immediately starts a new connect attempt, bypassing the normal ReconnectInterval delay. Useful after a server-side configuration change, when failing over between primary and backup, or to recover from a stalled session that has not yet been detected as disconnected. Increments NumAutoReconnectsperformed.
Minilog FormattedMessage get Most recent status/info/warning/error message emitted by the target (read-only). The target writes here when its state changes, when a reconnect happens, when the encoder flags a problem, or when bandwidth/queue thresholds trip a warning. The message carries a FormattedMessageType (Info/Warning/Error). Setting this also updates MinilogTime. Read from a script to mirror target health into a dashboard or trigger downstream alerts.
MinilogTime DateTime get Timestamp of the most recent Minilog message (read-only). Updated automatically every time Minilog is set, with the local system time at the moment of update. Pair with Minilog when surfacing the latest target event to the operator or to detect stale status (e.g. "no message in N minutes" suggests the target is quiet, not that something is wrong).
WarnOnLowAverageBitrate bool get/set Whether to emit a warning when the outgoing bitrate drops far below the configured target. [default=true]. When true, the target raises a Minilog warning if the rolling average outgoing bitrate falls below ~10% of the configured OutputVideoBitrate — a strong signal that the upstream encoder is starved or the network is dropping frames silently. Disable on intermittent links where transient dips are expected and you don't want them flagged.
ReconnectInterval ReconnectInterval get/set Delay between automatic reconnect attempts after a connection failure. [default=FiveSeconds]. Sets the back-off used by the auto-reconnect logic when the RTMP connection drops or refuses to come up. Shorter intervals recover faster from transient blips but generate more load on the ingest server during sustained outages; longer intervals reduce server pressure but extend downtime. The user-invoked ReconnectCommand bypasses this interval and attempts immediately.
MaxOutputQueueSize int get/set Maximum number of encoded packets buffered for the network sender. [min=150, max=500, default=150]. The send queue smooths out short bursts where the encoder runs ahead of the network. When the queue exceeds MaxOutputQueueSize − 50, a "queue size" warning is raised; if it stays full the connection is treated as too slow and either reconnects or, if OutputBufferAllowFrameSkipping is true, drops frames. Larger queues absorb more jitter at the cost of latency; smaller queues keep latency tight but trip warnings sooner on flaky links. Values outside 150–500 are clamped on set.
OutputBufferAllowFrameSkipping bool get/set Whether the target may drop video frames when the send queue fills up. [default=false]. When false (default), the target reconnects if the send queue stays at capacity — frames are never silently dropped. When true, frames are skipped instead so the stream keeps moving even on a slow uplink, at the cost of visible glitches/freezes on the player. Enable when stream continuity is more important than visual smoothness; leave off when you'd rather the stream reset than show artefacts.
ComponentLog ComponentLog get Per-component log buffer — recent info / warning / error messages emitted by the target (connection state changes, errors, reconnects). Mirrors the relevant Logger entries so users can read recent diagnostics without opening the application log file.
RunningServerAddress string get RTMP server address the target is currently connected to (read-only). Reflects the URL in active use, including any @@randomid substitution. Useful in scripts to distinguish whether the primary or backup endpoint is in use after a failover, since both RtmpServerAddress and RtmpBackupServerAddress are user configuration but only one is live at any moment. Empty when disconnected.
UpTimeSinceStart string get Time elapsed since the current connection became active, formatted as a string (read-only). Resets on every successful (re)connect, not on StartCommand. Use UpTimeSinceStartTimeSpan (internal) for arithmetic; this property is the human-readable presentation surfaced in the UI and to scripts. Empty / 0 while disconnected.
OutgoingBitRate string get Current outgoing bitrate as a formatted string (e.g. "3.0 Mbit/s"), read-only. Sampled per second from the actual bytes pushed to the RTMP socket — i.e. what the network sees, not the encoder's nominal target. Use OutgoingBitRateMbitPerSecond (internal) for numeric comparisons in scripts; this property is the display string. A persistent gap between this value and OutputVideoBitrate + AacBitRate indicates a starved encoder or a slow uplink, and (when enabled) trips the low-bitrate warning.
VideoFramesWritten int get Total number of video frames the encoder has written to the RTMP muxer (read-only, debug). Counts every encoded video frame successfully handed off to the muxer/sender stack since the current connection started. Pair with AudioFramesWritten and the rendered frame rate to detect dropped frames or a stalled encoder.
AudioFramesWritten int get Total number of audio frames (AAC packets) written to the RTMP muxer (read-only, debug). Counts every encoded audio packet successfully handed off to the muxer/sender stack since the current connection started. A growing video count with a flat audio count (or vice versa) is a strong signal of a per-track stall.
VideoPts long get Most recent video presentation timestamp (PTS) written to the RTMP stream, in stream timebase units (read-only, debug). Useful for diagnosing timestamp progression — should advance roughly by one frame duration each frame. Compared against AudioPts to compute PtsDiff and detect A/V drift.
AudioPts long get Most recent audio presentation timestamp (PTS) written to the RTMP stream, in stream timebase units (read-only, debug). Should advance smoothly with the audio sample clock. Compared against VideoPts to compute PtsDiff and detect A/V drift.
PtsDiff int get Instantaneous difference between the most recent video and audio PTS (read-only, debug). Computed as VideoPts − AudioPts. A small steady value is normal; a value that grows or oscillates indicates A/V drift, which (when AutoReconnectOnHighPtsDiff is enabled) can trigger a reconnect to re-sync.
PtsDiffAverage float get Rolling average of PtsDiff over a 50-sample window (read-only, debug). Smooths out per-frame jitter so a slow drift becomes obvious. Used by the high-PTS-diff reconnect logic and surfaced as a debug property for offline analysis.
InputlessVideoFrames int get Number of video frames the target rendered without a fresh input frame underneath (read-only, debug). Increments when the target produces a video frame but the upstream scene/input had no new content since the last render — typically an indication that an input is stalled or the scene is intentionally idle. A persistently growing value while expecting live content is a red flag worth investigating.
InputlessAudioFrames int get Number of audio frames the target produced without a fresh input audio frame (read-only, debug). Audio counterpart to InputlessVideoFrames. Increments when the target had to emit audio (silence/last-buffer) because no new audio was available from the scene.
UnhandledRtmpVideoPackets int get Number of video packets the RTMP writer rejected or could not handle (read-only, debug). Increments when the underlying RTMP writer drops or refuses an encoded video packet (e.g. post-disconnect, malformed packet, or codec mismatch). Should normally remain at zero on a healthy connection — a non-zero value is worth correlating with the most recent error.
UnhandledRtmpAudioPackets int get Number of audio packets the RTMP writer rejected or could not handle (read-only, debug). Audio counterpart to UnhandledRtmpVideoPackets. Should normally remain at zero.
RenderDataTimeDiff string get Time difference between successive render submissions, in milliseconds, as a formatted string (read-only, debug). Reports how far apart consecutive frames arrive at the target. Should hover near the expected frame interval (e.g. ~33 ms at 30 fps, ~16.7 ms at 60 fps). Spikes indicate the upstream pipeline is producing frames irregularly.
AudioAccumulatorDiff long get Sample-count difference between expected and actual audio buffered in the AAC accumulator (read-only, debug). Reflects how much the audio accumulator has accumulated relative to the expected frame timing. Persistent non-zero values indicate the audio source is delivering at a slightly different rate than the scene clock and may eventually trigger an A/V drift reconnect.
NumAutoReconnectsperformed int get Total number of automatic reconnect attempts performed since the target started (read-only). Counts every reconnect cycle the target has run, whether triggered by a dropped connection, a high audio/video PTS divergence (AutoReconnectOnHighPtsDiff), a full send queue, or an explicit ReconnectCommand. A rapidly growing counter is a strong signal that the network path or ingest server is unstable. Resets only on full target dispose / re-create.
OutputQueueSize int get Current depth of the network send queue, in packets (read-only, debug). Number of encoded packets waiting to be written to the RTMP socket. Should sit close to zero on a healthy uplink. When this approaches MaxOutputQueueSize a warning is raised; when it stays at the cap the target either reconnects or starts skipping frames depending on OutputBufferAllowFrameSkipping.
AverageVideoEncoderTime string get Rolling average video encode time per frame, formatted as a millisecond string (read-only, debug). Wall-clock time the chosen encoder (libx264 or NVENC) spends per frame, averaged over a short window. Must stay well below the frame interval (e.g. <16 ms at 60 fps) for the target to keep up. Persistently high values suggest the encoder preset is too slow or the machine is overloaded.
MaxVideoEncoderTime string get Worst-case video encode time observed in the current sampling window, formatted as a millisecond string (read-only, debug). The peak per-frame encode duration over the rolling window. Useful to spot occasional spikes that the average smooths out — a peak that exceeds the frame interval, even briefly, will drop frames or cause the send queue to grow.
AverageNetworkWriteTime string get Rolling average time spent writing a packet to the RTMP socket, formatted as a millisecond string (read-only, debug). Reflects network/socket latency rather than encoder cost. Persistently high values point to a slow uplink, congested route, or backpressure from the ingest server, and tend to correlate with growing OutputQueueSize.
LastVideoFrameSizeBytes int get Size of the most recently encoded video frame, in bytes (read-only, debug). Useful for spotting outliers — keyframes are typically several times larger than P/B frames, and an unexpectedly large frame can indicate a scene change or encoder rate-control excursion.
AvgVideoFrameSizeBytes int get Rolling average video frame size, in bytes (read-only, debug). Smoothed counterpart to LastVideoFrameSizeBytes. Multiplied by frame rate, gives the effective video bitrate in bytes/second — a useful sanity check against OutputVideoBitrate and OutgoingBitRate.
MaxVideoFrameSizeBytes int get Largest single video frame observed in the current sampling window, in bytes (read-only, debug). The peak frame size — typically a keyframe (I-frame) on a complex scene. Helps diagnose rate-control behaviour: if MaxVideoFrameSizeBytes is dramatically larger than AvgVideoFrameSizeBytes, the encoder is producing very spiky output that may not fit inside a strict CBR ceiling.
MinVideoFrameSizeBytes int get Smallest single video frame observed in the current sampling window, in bytes (read-only, debug). Typically a P-frame on an easy-to-compress scene. Together with MaxVideoFrameSizeBytes and AvgVideoFrameSizeBytes, characterises the spread of frame sizes the encoder is producing.
LastAudioFrameSizeBytes int get Size of the most recently encoded audio (AAC) packet, in bytes (read-only, debug). AAC frames are nominally a fixed number of samples, so byte sizes vary little under constant AacBitRate. A sudden change can indicate the encoder switched modes or reconfigured.
MaxVideoBitrateString string get Peak outgoing video bitrate observed in the current session, formatted as Mbit/s (read-only, debug). The highest per-second video bitrate the network sender has produced since the connection started. Compared against OutputVideoBitrate × MaxVideoRateMultiplier to confirm the CBR ceiling is being respected.
MinVideoBitrateString string get Lowest outgoing video bitrate observed in the current session, formatted as Mbit/s (read-only, debug). The lowest per-second video bitrate the network sender has produced since the connection started. A value far below OutputVideoBitrate × MinVideoRateMultiplier suggests the encoder coasted on easy frames or the uplink briefly stalled.
AvgVideoBitrateString string get Average outgoing video bitrate over the current session, formatted as Mbit/s (read-only, debug). Long-running mean of the per-second outgoing bitrate. Should converge towards OutputVideoBitrate on a healthy CBR session; a persistent shortfall is what triggers the low-bitrate warning when WarnOnLowAverageBitrate is enabled.
CurrentRTMPEndPoint string get Resolved RTMP endpoint (host[:port]/app) the target last connected to (read-only). The URL after parsing — typically just the host/port/app portion of RunningServerAddress, without the stream key. Useful for displaying or logging a sanitised endpoint without leaking the stream key into logs or operator-visible UI.
ErrorCount int get Total number of errors raised by the target since startup (read-only). Incremented every time the target logs an error-level event (connect failure, encoder failure, fatal write error, etc.). Setting this also stamps LastErrorDateTime. Pair with LastErrorDateTime to detect "errors are happening right now" vs. "errors happened a while ago and have stopped." The textual error itself is in the internal LastErrorMessage.
LastErrorDateTime DateTime get Local timestamp of the most recent error (read-only). Updated automatically every time ErrorCount is incremented. DateTime.MinValue (or default) until the first error occurs. Use the freshness of this timestamp to decide whether the most recent issue is still relevant or has aged out.
WarningCount int get Total number of warnings raised by the target since startup (read-only). Incremented every time the target logs a warning-level event (low average bitrate, send queue near capacity, audio/video PTS divergence, etc.). Setting this also stamps LastWarningDateTime. Warnings are non-fatal — the stream keeps running — but a steadily rising counter indicates the target is operating outside its comfort zone. The textual warning itself is in the internal LastWarningMessage.
LastWarningDateTime DateTime get Local timestamp of the most recent warning (read-only). Updated automatically every time WarningCount is incremented. DateTime.MinValue (or default) until the first warning occurs. Compare against DateTime.Now to gate alerting logic — e.g. only escalate if the most recent warning is within the last minute.
LogBitrateToDisk bool get/set Whether per-second bitrate samples are written to a CSV log on disk. [default=false]. Diagnostic toggle. When enabled, the target writes the rolling outgoing bitrate to a file alongside the standard Composer logs, allowing offline plotting / post-mortem analysis of stream stability. Off by default to avoid extra disk I/O on long-running sessions; turn on only while investigating a specific issue.

Inherits from: AbstractTarget.

See also: RTMP Target in Targets — user-facing introduction, screenshots, and section summaries.