Changelog¶
version 1.13.2.444 Beta¶
31.05.2026
OTT (Low-Latency HLS / DASH over CMAF): a new OTT/HLS/LL-HLS/LL-Dash delivery mode (ott-hls = 3) — the built-in multiplexer produces fragmented MP4 / CMAF (fMP4), on top of which MPEG-DASH (now over CMAF instead of MPEG-TS) and Low-Latency HLS are delivered on a new endpoint (path …/llhls/…). The player starts playback without waiting for the full segment: the LL-HLS media playlist is split into partial segments («parts»), and blocking playlist reload (the server holds the request until the next part is ready) and the EXT-X-PRELOAD-HINT preload hint are used.
OTT (Low-Latency: settings and synchronization): the target duration of a part is set by the Part Target Duration setting (ms, applied on the fly without restarting the stream); the Enable TS Chunk option determines whether legacy MPEG-TS HLS (playlist …/hls/…) is emitted in parallel — when disabled, only fMP4 segments go to disk and CPU. For precise low latency, Producer Reference Time (prft) and UTCTiming have been added to the manifests, binding the media time to UTC.
DVR (subsystem launch): a persistent on-disk archive is written in parallel with the built-in live segmenter for HLS / MPEG-DASH OTT, using the same segmentation and the same OTT-session URLs — the playback mode is switched by a query parameter. In OTT/HLS/LL-HLS/LL-Dash mode the archive maintains two independent indexes — one for MPEG-TS chunks and one for fMP4 / CMAF segments — so VOD is served in the same container as live. Full DVR description.
DVR (playback): VOD over HLS and MPEG-DASH via the query parameters t=<epoch> (start moment, t=0 — from the beginning of the archive) and d=<sec> (window duration, empty or 0 — “up to the present moment”), as well as binding to EPG via epg=<epoch> (the server itself substitutes the start and duration of the active event as the window boundaries). A closed HLS VOD playlist with the markers EXT-X-PLAYLIST-TYPE:VOD and EXT-X-ENDLIST; a static DASH MPD (@type=”static”, fixed mediaPresentationDuration) with automatic splitting into several Period elements at recording gaps. Requests beyond the archive are normalized to the available boundaries without errors.
DVR (adaptive VOD): for adaptive HLS and DASH groups, only variants bound to DVR storage are included in the manifest, each quality is a separate Representation inside the shared Period elements, and quality switching works without re-opening the manifest.
DVR (protection and delivery): while a VOD session is open, size-based and sliding-window cleanup do not touch the chunks within its window (the protection is released on timeout or FIN); a transparent VOD → live-edge transition if the player reaches the right boundary of the window — the segment is served from live memory without redirects; the VOD-playlist cache serves repeated requests for the same index.m3u8 / index.mpd byte-for-byte identical (convenient for CDN).
DVR Storage (storage settings): several simultaneous storages, each with a Max Usage threshold, a Cleanup Interval period, Disk Pressure Grace debounce, a Disk Pressure Cut upper limit on deletion per cycle, a Disk Emergency Bytes emergency threshold and Ready / Error states.
DVR (stream settings): Storage Hours — archive depth in hours with sliding-window cleanup (the upper bound is fixed at 90 days), and Storage Min Hour — a protected lower bound that size-based cleanup does not remove even under disk pressure.
DVR (subtitles): WebVTT is recorded to the archive in parallel with the TS chunks, with a per-PID index; the VOD subtitle playlist is served at the same URLs (for DASH the X-TIMESTAMP-MAP header is stripped on the fly). Subtitle chunks without cues are not written to disk — a zero-size chunk is synthesized on read, which reduces the file-system load on channels with sporadic subtitles.
DVR (maintenance): a background collector of “orphaned” files (the initial run is about a minute after startup, then hourly and on disk pressure; protection against a race with the writer by mtime), monotonic chunk numbering across service restarts; fixed a mode in which the background size-based cleanup and the collector could fail to start.
DVR (observability and monitoring): GET /data/dvr-storage-list returns, for each storage, State, Total / Free / Used Bytes, Used %, Archived Bytes, Pressure Since Sec, the indicator of an active background operation (active-task: gc-orphans / disk-pressure-trim / none) with its duration and details of the most recent cleanup runs, as well as a list of bound streams with the attributes retention-hours, archived-sec, archived-bytes and active; the archive size is additionally broken down by container (TS / MP4). At the stream level, GET /data/stream/<id> exposes the storage-gap-percent metric (the percentage of time gaps in the archive), and its histogram by time buckets is served by the new endpoint GET /data/dvrstat — for rendering the DVR-archive timeline in the admin UI with markup of recording events and subtitle activity.
OTT (IDR-based segmentation): HLS and MPEG-DASH segmentation distinguishes an IDR from an ordinary I-frame in H.264 / HEVC streams. On closed-GOP content the segment boundaries are aligned to IDR — each chunk begins with a genuine random access point (SPS+PPS+IDR, and in HEVC also accounting for the separate VPS NAL), and the player is guaranteed to open the stream from any segment; on open-GOP / IDR-less sources the nearest I-frame serves as the boundary.
OTT (analyzer metrics): new metrics on the video stream — idr-int-max / avg (IDR interval) and kf-int-max / avg (GOP interval). From their ratio the administrator immediately sees the type of GOP structure: closed-GOP (idr-int ≈ kf-int) or open-GOP (idr-int absent). The XML/JSON key names remain the same for backward compatibility.
OTT HLS (playlist): EXT-X-VERSION is chosen by default according to the HLS mode — OTT/HLS and OTT/HLS/LL-HLS/LL-Dash yield EXT-X-VERSION:6 with EXT-X-INDEPENDENT-SEGMENTS and the CHARACTERISTICS attribute in EXT-X-MEDIA TYPE=SUBTITLES (in OTT/HLS/LL-HLS/LL-Dash the legacy master …/hls/… also emits a subtitle EXT-X-MEDIA), Peering/HLS — EXT-X-VERSION:3 for compatibility with older clients (the
?v=query parameter overrides the default). The EXT-X-TARGETDURATION value now reflects the maximum actual segment duration (section 4.3.3.1 of RFC 8216), not the chunk-min-interval setting — with GOP-aligned segmentation the manifest does not violate the standard, and hls.js does not halve the playlist refresh interval and does not raise false bufferStalledError.HTTP/3 (QUIC): a built-in server based on ngtcp2 + nghttp3 serves HLS and MPEG-DASH over QUIC — enabled by the web server’s HTTP/3 Enable setting (port HTTP/3 Port, UDP, by default matching the HTTPS port), supports 0-RTT. Low-Latency HLS / DASH are delivered over QUIC incrementally (chunked) — parts are sent to the client as they become ready, without waiting for the full segment. Only OTT routes are accepted on the QUIC transport; administrative paths remain on HTTPS/HTTP. The client’s real IP is passed via the internal
x-pss-peer-addrheader and is counted toward active peers without being replaced by the loopback address. Switching HLS / DASH to HTTP/3 is also activated by the ?h3 query parameter — for test-switching an individual session without reconfiguring the client.Active peers: a uniform OTT-session timeout of 60 seconds independent of transport; client-record updates on scheme change happen only “upward” by priority (
http→https→quic). The ott-type attribute in http-clients now carries a composite value of the form<PROTO>/<scheme>(PROTO = HLS / DASH / HTTP; scheme = http / https / quic) — the admin UI sees both the OTT protocol and the actual network transport of each client.PS1 output: smooth handling of stream-input switching has been implemented on the PS1 output. On a queue spike at source switching, the oldest packets are silently dropped, while client seqID / TS values remain continuous — receiving peers get by with the standard retr mechanism instead of re-initialising the connection with StateError. The dropped-packet counter is visible in the extended PS1-output statistics.
SPTS / TR 101 290: a PCR drift compensator is now active on input streams — slow drift of the source reference oscillator relative to the local clock is absorbed by a soft sync DT offset in the background, with no visible hiccups on the output. Controlled by the stream settings Sync Drift Compensation (on by default) and Sync Drift Soft Window (ms).
SPTS / TR 101 290: a wide-window PCR linear regression measures drift (ppm) and PCR accuracy (ns per section P2.3) against the reference rate. The metrics pcr-drift-max / avg, pcr-acc-max-ns, as well as the intervals pcr-int, pat-int, pmt-int are exposed in GET /data/stream/<id> and written to the historical-statistics DB (the new tables are visible to Resetting Stat).
SPTS / T-STD: a reference-decoder video buffer analyzer (T-STD, ISO/IEC 13818-1 §2.4.2). The MBn capacity is picked from the stream type of the video PID; the drain rate stabilizes within a 1-second “warm-up” timed by the PCR clock (not by the host system clock — so the analyzer does not react to CPU scheduler pauses). The counters tstd-video-overflows / underflows / max-fill / drain-bps are exposed in GET /data/stream/<id> and feed into tr101290-alert.
SPTS: runtime multiplex bitrate-mode detector — the bitrate-mode-detected attribute (cbr / vbr / unknown) based on comparing the 5-second and 60-second bitrates. The pcr-acc and tstd-video checks in tr101290-alert are automatically suppressed on detected VBR, where they would otherwise produce false positives.
Ad-insertion analyzer: on the input SPTS stream a codec «passport» is built — a video passport (full SPS, H.264 / HEVC profile and level) and an audio passport (MPEG Audio, AC-3, AAC in ADTS and LATM formats) — and SCTE-35 sections (splice_info_section) are parsed with splice-point markup. In GET /data/stream/<id> (when continuous SPTS analysis is enabled), access- and splice-boundary signals are reported — GOP, RAI, splice-point, SCTE-35 events; the Splice Point Notify At setting sets the lead time of the insertion-point notification. The data is prepared for server-side ad insertion.
AI complaint helper: a new endpoint GET /data/stream/<id>/ai-complaint-prompt returns a ready-made English-language prompt for any chat model, instructing the model to compose an official complaint letter to the provider that lists the detected TR 101 290 / ISO/IEC 13818-1 violations. The prompt carries exactly the same tokens and measured values as tr101290-alert; the stream name and source URI do not enter the prompt — the placeholder <Stream Designation> is used, which the operator fills in manually. The language of the letter is chosen in the answer to the prompt.
Web portal (roles): server settings, EPG and management of the administrator account list are allowed only for the Admin role; the RestrictAdmin role can pause streams and channels but cannot change the other settings; the Viewer role is view-only. POST routes are closed by default, and any new HTTP operation requires explicit permission for a reduced role — access is not expanded silently.
Server (memory): periodic return of free memory from glibc arenas to the system (malloc_trim every 30 s) and limiting the number of arenas via the MALLOC_ARENA_MAX environment variable in the systemd unit — eliminates the gradual growth of RSS during long-running operation with dozens of streams, without logical leaks.
MPEG-TS filter: the Filter Teletext setting again drops both types of teletext PES streams (classic and subtitles) after internal reclassification in the analyzer.
MPTS input: the RTSP transport has been removed from the list of those allowed for MPTS — RTSP is single-program and is applicable only as an SPTS source.
Other bugfixes and improvements.
version 1.12.3.433¶
09.05.2026
DVB scanner for DVB-S/S2, DVB-C and DVB-T/T2: transponder discovery and program-list compilation, with the option to apply the discovered parameters directly in the DVB adapter settings.
DVB scanner: transponder reference data is loaded from Enigma2-format files (satellites.xml, cables.xml, terrestrial.xml) located in the settings directory.
DVB scanner: blind scan mode for DVB-S/S2 and DVB-C/T/T2 — iteration over frequencies, polarizations and symbol rates without a transponder reference.
DVB scanner: each discovered program reports PNR, service name, provider, the scrambled flag (derived from free_CA_mode in the SDT with a fallback via PMT), and the main PID values (video, audio, PCR).
Hardware BISS-1 and BISS-E descrambler for receiving encrypted channels from DVB cards. Keys are assigned per program or per individual PLP in T2-MI mode; both key formats are supported (12 or 16 hex characters, with automatic verification of BISS-1 check bytes).
Multi-stream T2-MI support (ETSI TS 102 773): multiple T2-MI carriers on a single transponder, per-service PLP selection, automatic and manual carrier PID selection modes, filtering by TSID.
MPEG-DASH support on the HLS OTT output: generation of an MPD manifest of the mp2t-simple profile sharing the same segments as HLS.
WebVTT subtitle support in HLS OTT: automatic decoding of teletext subtitles, segmentation of the subtitle track on HLS segment boundaries and its publication in the playlist. Controlled by the per-stream ott-webvtt option.
Teletext-based subtitle decoder (ETSI EN 300 706): full national-alphabet tables, correct stitching of page lines, and delivery of subtitles to the player.
MPTS multiplexer: automatic Service Type detection from the PMT (HD/SD H.264, HEVC, MPEG-2, digital radio, etc.) with the option of a manual override via the Service Type setting.
MPTS multiplexer: manual PID remapping (mpegts-pid-old / mpegts-pid-new) with collision protection during automatic PID selection for neighbouring elementary streams.
MPTS multiplexer: pass-through of service elementary streams (DSM-CC, AIT, SCTE-35) marked with the corresponding descriptors in the PMT — previously such streams were unconditionally filtered out.
MPTS multiplexer: the upper limit of the aggregate bitrate has been raised from 64 to 128 Mbit/s.
DVR Storage settings section: attaching DVR storages and binding them to SPTS streams (the dvr-storage parameter) — groundwork for the recording functionality.
Support for ASI devices.
Transcoder: support for streams without IDR frames.
Transcoder: 5.1 audio encoder loudness-correction profile. Loudness correction when transcoding from 5.1 to stereo/mono.
Perfect Streamer server-side cache and external reverse proxy (nginx) for high-load systems.
Integration with Prometheus, Telegraf / InfluxDB.
Tools: TS Analyze Perfect Streamer Toolkit v2.2 — TR 101 290.
Tools: MPTS Migrate Perfect Streamer Toolkit v1.0 — MPTS identity migration.
Bugfixes and improvements.
Version 1.2.0.95 of pstreamer-tcsw and pstreamer-tcnv is released.
Version 1.0.0.28 of pstreamer-ivplv transcoder (Intel VPL) is released.
version 1.11.1.420¶
07.04.2026
Reworked MPTS muxer. Bitrate is set in input muxer. TR 101 290 and T-STD compliance.
RTSP input.
version 1.11.1.417¶
31.03.2026
SPTS Stream / MPEG-TS: Bitrate Mode option added.
SPTS Stream: Restamp PCR for TR 101 290 compliance added.
SRT: deadlock fixes for high load.
Bugfixes and improvements.
version 1.11.1.407¶
13.03.2026
Transcoder: Variable Frame Rate support added.
Transcoder: HEVC Main10 with bt.709 (SDR) and bt.2020 (HDR) profile support added.
Transcoder: SD BT.470-2 (PAL) and SMPTE 170M (NTSC) to BT.709 conversion option added.
Transcoder: Upscale SD->HD resize preset added. Applies to SD PAL/NTSC source. Interlace not supported, applies when deinterlace is needed.
Transcoder: Critical error with encoder Nvidia hang fixed. This caused transcoding issues and required manual stream restart.
Streamer: fixed a critical error in the video analyzer (H.264 and HEVC) that caused abnormally high CPU load and could block the streamer’s operation.
Transcoder TCNV: interlace/alternate 8 bit/10 bit support added.
Transcoder TCNV: image quality improvement, post-processing on Nvidia CUDA improved.
Transcoder output: extended statistics.
IGMP v3 SSM support added.
Custom stream name in HLS/HTTP link, instead of ID.
SRT input/output: AES Type parameter.
Easy copying of outgoing stream links.
Search/filter form for active peers.
Bugfixes and improvements.
Version 1.2.0.86 of pstreamer-tcsw and pstreamer-tcnv is released.
version 1.11.1.384¶
21.12.2025
Transcoder: Interlace Alternate support added (two separate interlace fields in the stream).
Significant CPU load reduction when receiving SRT streams (SRT input Caller mode -> Disable TSBPD), due to the use of Perfect Streamer’s own synchronizer.
Input stream data correction: Fix PAR (Pixel Aspect Ratio correction) and Fix Framerate (configured when framerate data is missing in the stream SPS, necessary for subsequent stream transcoding).
New HLS/HTTP mode setting: Auto — mode determination by Content-Type.
Subtitles and teletext handling updates.
Playlist UDP import update.
Bugfixes and improvements.
Version 1.0.0.70 of pstreamer-tcsw and pstreamer-tcnv is released.
version 1.11.1¶
19.10.2025
Support for Debian 13/Ubuntu 25 and RHEL 10/AlmaLinux 10.
For Nvidia enc and Software CPU transcoders, the GLIBC version requirement is lowered from 2.34 to 2.28: support for Debian 10 and AlmaLinux 8.
Main and High profile selection is added for H.264 transcoders.
New output file feature - recording stream to ts-file or output to any device (including SDI) that is registered in /dev.
New input file capability — cyclic playback of video from a ts-file.
Transcoder improvements.
Conditional access mpegts(CA) handling is added: ECM and EMM.
HLS OTT buffer flush on stream disable is fixed.
New Jitter Auto sync feature.
Improved compatibility with HLS links out of standards.
XMLTV sources compatibility improvements in EPG-server.
Other bugfixes and improvements.
version 1.10.1.364¶
20.08.2025
Test Stream generator — test signals (test patterns).
Peer login anonymous functionality: getting streams without authorization.
Peer authorization by range of IP addresses.
Peer option: Login is ip, for authorization by IP (range of IP), instead of login.
Adaptive HLS improvement.
Image quality improvement for Nvidia transcoder.
CBR fix for H.264 for Software CPU transcoder.
OpenSSL library update to version 3.0.9.
Stream list table scrolling is redesigned.
Other bugfixes and improvements.
Version 1.0.0.57 of pstreamer-tcsw and pstreamer-tcnv is released.
Upgrade notes:¶
Due to changes in the authorization mechanisms by IP and range of IP addresses for reception on Flussonic software for peers created in Perfect Streamer for authorization by IP, it is necessary to use links in the format: srt://Stream_IP:port?streamid=*
Previously, instead of the symbol * in the link, the IP address of the receiving server with “Flussonic” software was used, for example: srt://Stream_IP:port?streamid=Your_IP
Starting from version 1.10.1.364, stream reception in this format will not work.
More details on receiving SRT from Perfect Streamer in Flussonic software FAQ.
Due to changes in the video card identification mechanisms, it will be necessary to re-bind the video cards in the transcoder. To do this, you need to open the transcoder-output settings, make sure that the correct device (Device ID) is selected, and save the settings regardless of whether the selected device has changed or not.
version 1.10.1¶
30.06.2025
Adaptive HLS generation. See documentation for details.
Let’s Encrypt SSL certificates auto-update functionality via certbot.
LCN (Logical Channel Number) support is added.
SCTE-35 tags presence and analysis support is added.
Software transcoder improvements. Video quality is improved and CBR for MPEG-2 is fixed.
GStreamer and codecs are already built-in in tcsw and tcnv packages (installing GStreamer is not required anymore, it may be needed only for RTSP, RTMP functionality and Test stream table).
Built-in GStreamer is updated to version 1.26.
The Nvidia transcoder (tcnv) works with any CUDA version; there is no strict binding to version 12.5.
The Nvidia transcoder Deinterlaced setting has been moved from the general video card setting to the input of each encoded stream. It is done individually, as is in the case with the software method.
EPG server and SSL modes for EPG, HTTP improvements.
Bugfixes.
version 1.9.2.340¶
07.05.2025
Video Passthrough mode is added to transcoder. In this mode video remains unchanged, only audio format and bitrate are changed.
NV lookahead and bframe settings are added for Nvidia-based transcoder.
MPEG-1 Layer 1, 2, 3 (mp3) audio support is added for input streams.
Transcoders section is redesigned and detailed in the left sidebar menu.
Transcoder stability and compatibility with various TV channels streams is improved.
EPG server updates.
HTTPS server, EPG SSL and HLS SSL updates.
Support for HLS link is added when playlist refers to another playlist with a new session.
Other bugfixes and improvements.
Version 0.9.6.34 of pstreamer-tcsw and pstreamer-tcnv is released.
version 1.9.2¶
31.03.2025
(Beta) Added transcoder functionality based on Nvidia Encoder and Software CPU. HEVC (H.265), H.264, MPEG-2 formats are supported with all resolutions from 4K to SD.
System monitor is updated with Nvidia devices information: GPU, memory, encoder, decoder.
A new “Transcoders” section. It displays summary information about active streams in transcoding (decoder and encoder), sources, uptime and status.
Each stream transcoding log is available in section Transcoders where you can find current status, warnings and errors with detailed description.
DVB adapters section is restored. Here you can configure DVB receivers with DVB-S/S2, DVB-C, DVB-T2 support. Input streams analysis is available.
RIST transport protocol updates and improvements.
EPG server improvements.
TV streams analyzer improvements.
Web-interface updates and bugfixes.
SPTS streams PIDs replacement is available now.
TS ID and TS Net ID are displayed now in Stream Info section in MPTS stream report page.
Improved work with the PID of streams.
Other bugfixes and improvements.
version 1.9.1¶
10.02.2025
Multiplexor improvements and updates.
Stuffing Mode: PCR and Realtime (system clock) for SPTS and MPTS.
Bugfixes.
version 1.8.1.315¶
02.01.2025
Stream access lists for peers.
Login and password options for HLS/HTTP input.
Improved SRT login/password authenticaton compatibility with third-party software.
Performance improvements.
Bugfixes.
version 1.8.1¶
28.11.2024
Improved HLS OTT performance.
Usability improvement.
Playlist export update.
Bugfixes.
version 1.7.1.300¶
04.09.2024
Improved SRT performance.
Usability improvement.
Improved compatibility with HLS.
Group operations on streams improvement.
Improved channel import from playlists, support for UDP and RTP transport protocols on the output side when generating outputs automatically.
Per-PID rate indicator.
Bugfixes.
version 1.7.1¶
08.02.2024
Optimization and code refactoring, significant CPU load reduction.
HLS modes: Peering and OTT.
Streams exporting to m3u8-playlist using various protocols.
Importing streams from m3u8-playlist using various protocols and configuring outputs with selected protocol and ports range.
Streams cloning.
Group operations: cloning and deletion.
Usability improvements.
Other bugfixes and improvements.
version 1.6.1¶
15.10.2023
XMLTV import from external sources.
XMLTV server.
EIT generator for SPTS stream and multiplexor.
version 1.6¶
15.08.2023
MPEG-TS multiplexor.
version 1.5.1¶
18.04.2023
Peer limits — pause, date limit, sessions limit by protocol.
Ability to use UTF8 symbols in stream display name.
Stream sorting by disabled/enabled.
SRT library updated.
Bugfixes in analizator.
Other bugfixes and improvements.
version 1.5¶
28.12.2022
OTT http/hls output.
HTTPS support for web-server and http-server.
Advanced stream analyzer.
Bugfixes.
version 1.4.3¶
12.09.2022
Optimization: CPU load reduction.
Removed bitrate setting from stream.
Removed HTTP input type, this protocol is now supperted by HLS input.
HLS: added support for https:// and redirects.
version 1.4.2¶
27.05.2022
RIST protocol support.
PCR correction.
SRT protocol Listener mode.
Bugfixes.
version 1.4¶
16.12.2021
MPEG-TS analyzer for CAT/ECM/EMM.
Filtering options for CAT/ECM/EMM.
Input stream losts chart.
Web-interface improvements.
Bugfixes.
version 1.3¶
14.11.2021
DVB devices — reception and analysis of streams. Quality control.
MPTS demultimpexing for DVB and MPTS streams.
Web-interface contrast theme.
Web-interface local settings: theme, timezone.
Bugfixes.
version 1.2¶
01.09.2021
EPG functionality.
XMLTV export.
Bugfixes.
version 1.1¶
26.08.2021
Reception and transmission of MPTS streams. Content analysis.
Scrambled streams.
Display of additional parameters of MPEG-TS streams — EPG, Teletext, Subtitles.
Additional filter options for MPEG-TS streams — EPG, Teletext, Subtitles.
version 1.0¶
11.07.2021
Initial release.