MistServer Changelog
Development builds
These will be in the next release
3.4 (Stable Release)
- Known issue: Cygwin builds have broken WebRTC at the moment (likely fixed next release)
- Removal:* CMake is no longer supported as a build system (leaving Meson as the only supported build system)
- Feature: WebRTC data track support (output only)
- Feature: WebRTC path migration support (e.g. switching between client networks without reconnect)
- Feature: Support for V4L2 camera input (both raw and (M)JPEG-based)
- Feature: Added MistProcAV (transcoder using the ffmpeg library directly), disabled in builds by default
- Feature: Support for raw pixel tracks
- Feature: Support for listening for incoming RTMPS connections
- Feature: Stream processes now have configurable restart behaviour
- Feature: Stream processes can now be marked as inconsequential; meaning the stream is considered fully started even when these processes are not running yet
- Feature: Support for (M)JPEG HTTP output (both streaming and oneshot)
- Feature: API websockets now support in-band authentication
- Improvement: Support for upstream mbedtls version 2.X and 3.X (needs dTLS option enabled)
- Improvement: Support for dynamic RTP payloads overwriting static payload types (thanks Alex Henrie!)
- Improvement: All platforms now show process names in log messages
- Improvement: Under Cygwin, log messages now look the same as under Linux
- Improvement: All triggers now contain instance ID and instance friendly name in their headers / environment
- Improvement: Outgoing HTTP requests now contain an
X-Attempt
header signalling if this was a retried request
- Improvement: The local-only UDP API socket was made significantly more robust, with new fallback behaviours
- Improvement: MistInBuffer CPU usage reduced
- Improvement: Improved invalid TS data detection in TS demuxer
- Improvement: RTMP push output CPU usage improved
- Improvement: Removed out-of-the-box support for iOS 10 and lower, in favour of better support for iOS 11 and higher
- Improvement: Allow HTTP-based outputs to be re-used without full restart (improving proxy performance)
- Improvement: Improved handling of X-Real-IP and X-Forwarded-For headers (improving proxy compatibility)
- Improvement: MistInMP4 now also supports
.mov
file extensions
- Improvement: Support for more precise waiting instructions when waiting for tracks to be available
- Improvement: Stream track count no longer limited to 100 tracks; now auto-resizes (on average using less memory than before)
- Improvement: WebRTC ICE sessions for multiple tracks are now merged into a single session
- Improvement: Local networks are no longer hardcoded as not counting for bandwidth usage; this is now configurable instead
- Improvement: WebRTC now returns ICE/STUN/TURN headers for WHIP/WHEP requests in the OPTIONS request already
- Improvement: Web interface now has a new and improved stream status page
- Bugfix: Fixed memory leak in RTMP receiver
- Bugfix: Cygwin builds are supported again
- Bugfix: Fix high WebRTC CPU usage
- Bugfix: Fixed output segfault when shared memory pages are full
- Bugfix: Fixed segfault when pushing to an extremely short target
- Bugfix: Fixed DTSC pull key mismatch errors
- Bugfix: Fixed DTSC pull not starting at keyframes
- Bugfix: Prevent using a full CPU core when waiting for new packets in some situations
- Bugfix: Fix unrecognised stream processes breaking the web interface
- Bugfix: Fixed
STREAM_END
trigger going off multiple times for a single stream
- Bugfix: Outputs will no longer jump to the live point if a specific start time was requested
- Bugfix: Socket library would read the wrong remote port for TCP connections
- Bugfix: RTMP authentication containing the
+
symbol in the payload(s) now works
- Bugfix: Fixes for various subtle concurrency issues in the controller
- Bugfix: In some cases, a trigger could get overwritten by stream payload
- Bugfix: Fixed several possible segfaults related to HLS output
- Bugfix: Fixed crash when applying a limiter to a non-existing track
- Bugfix: RTMP push to afreecatv compatibility
- Bugfix: Fixed segfault in RTSP input when losing connection to buffer
- Bugfix: RTMPS push now sends correct headers
- Bugfix: RTMP push now implements the full "secret" Adobe handshake
- Bugfix: RTMP URL parser now considers the last slash to be the splitting point between
app
and stream
, rather than the first slash (matching most other implementations)
- Bugfix: RTMP push to GO-RTMP-based implementations compatibility
- Bugfix: RTMP push to Odysee compatibility
- Bugfix: WebSocket-based outputs now show the correct initial playback timing
- Bugfix: RTMP push timestamps are no longer overcorrected
- Bugfix: Fixed HTTPS-based WebRTC WHIP input
- Bugfix: Fixed rolling restart updates not always actually updating
- Bugfix: Improved method of reading random numbers from the OS
- Bugfix: Initialise and clean up SRT properly
- Bugfix: Fixed SRT input not always shutting down cleanly
- Bugfix: Fixed blank hostnames being slow to resolve
- Bugfix: Fixed division by zero causing infinite loops rather than crashes
- Bugfix: Fixed MP4 input getting stuck when reading an empty file
- Bugfix: Fixed MP4 input not handling negative CTS offsets
- Bugfix: Fixed segfault when detecting packet loss on a lossy input that is not yet accepted by the system
- Bugfix: Fixed segfault when destroying an unallocated internal communication instance
- Bugfix: Fixed segfault in info websocket if an otherwise online stream could not be connected to for any reason
- Bugfix: Fixed the TS output H264 NAL unit parser (fixes header packets being double-inserted sometimes)
- Bugfix: Fixed a race condition in the Livepeer process uploader code
- Bugfix: Fixed a race condition in the process cleanup threads
- Bugfix: Fixed a possible segfault in the MKVExec process
- Bugfix: Fixed a segfault when a blank or extremely short external writer path was used
- Bugfix: Fixed loops in track dropping code
- Bugfix: WebRTC now returns ICE/STUN/TURN headers for WHIP/WHEP requests using the correct syntax
- Bugfix: Multiple push targets triggering at the same time no longer overwrite each others' variables
- Bugfix: DTSC pushes now reselect tracks when idle as well, ensuring new tracks are always added to the push
- Bugfix: Fixed segfault in all outputs when attempting to start a stream without configured source
3.3 (Stable Release)
- Feature: Added human- and machine-readable exit reasons for most processes, which indicate why a process shut down.
- Feature: Added
OUTPUT_END
trigger, which signals exit reason for all pushes (and not just those that push to file)
- Feature: Added
INPUT_ABORT
trigger, which signals exit reason for inputs that close with a non-clean exit reason
- Feature: The built-in Meta-Player now supports reading subtitle and metadata tracks over websocket, regardless of playback protocol
- Feature: Support for JSON metadata tracks in MPEG-TS inputs/outputs
- Feature: Support for ingesting AMF metadata over RTMP/FLV and converting to JSON metadata track
- Feature: Added new "JSONLine" protocol that supports simple line-by-line ingest of subtitles or JSON metadata in real time over standard input or a listening TCP socket
- Feature: Support for creating smaller clips out of any live or VoD stream either on-viewer-demand (all HTTP-based outputs) or on-system-demand (any output compatible with the push output system)
- Feature: Support for MP4 push output ("regular" MP4 for clips and/or VoD, fMP4 for live streams)
- Feature: Chromecast support in the built-in Meta-Player
- Feature: Video pop-out support in the built-in Meta-Player
- Feature: Added configurable input idle timeout (previously hard-coded to 15 seconds)
- Feature: Added stream tagging APIs and the ability to configure pushes and triggers based on stream tags (the web interface does not support this yet, but the API does)
- Improvement: Updated
RECORDING_END
trigger, which now signals the exit reason for pushes to file
- Improvement: Support for sending API calls as
application/json
Content-Type with pure JSON in the request body
- Improvement: Minimum processing latency for live streams has been reduced from 1 packet (frame) on each track to 1 packet/frame on any track
- Improvement: All websocket-based outputs now support the same commands/API for playback and use the same core processing logic
- Improvement: MP4 output more strictly conforms to spec, improving compatibility with the Apple ecosystem
- Improvement: CPU efficiency improvement in all outputs and especially in MP4-based outputs
- Improvement: HLS input's DVR capability was significantly improved (entire input stream DVR window is now available as Mist's DVR window, at minimum), plus major efficiency improvements to HLS and TS parsing code
- Improvement: MP4 analyser now supports analysing and printing individual frames/packets
- Improvement: SRT output now by default includes all tracks instead of a single track per type
- Improvement: Capabilities system had some minor inconsistencies and errors, which have been corrected
- Improvement: The built-in web management interface now sets listening SRT and RIST inputs to "Always on" by default
- Improvement: HLS push output now supports the new
noendlist
parameter to indicate not wanting to end/close a playlist when output finishes (especially useful for recordings that are intended to be 24/7)
- Improvement: Various minor consistency and spelling fixes to the built-in web interface
- Improvement: Better display of real-world times and dates in the built-in Meta-Player
- Improvement: The update checker has been enabled for public builds, providing update notifications and the ability to install updates on request
- Bugfix: API calls that use stream data will now instantly time out rather than using exponential backoff (fixes some slow API calls)
- Bugfix: MP4 subtitle track input no longer reads corrupted
- Bugfix: Fixed infinite loop in MP4 analyser when reaching end-of-file in the middle of reading an MP4 box
- Bugfix: HLS push output no longer writes empty segments when there is no data to write in various edge cases
- Bugfix: Fixed WHIP ingest support
- Bugfix: SRT input/output now correctly read/write real-world time offsets
- Bugfix: HLS recordings now contain correct
DATETIME
tags in all cases
3.2.2 (Bugfix Release)
- Feature: Support for AV1 codec in MP4 input and output
- Bugfix: RTMP push output sent initial data with wrong timestamps, fixed
- Bugfix: The new UDP packet pacing code accidentally broke WebRTC ingest, fixed
- Bugfix: A rolling restart will no longer shut down a large percentage of segmented-protocol (e.g. HLS) viewers
- Bugfix: Fix local file path DTSH writing (no longer written to a folder called "file:")
- Bugfix: HTTP parser no longer chokes on reading an empty response body in non-chunked transfer modes
- Bugfix: Incoming TS-SRT pushes set their UTC offset correctly now
- Bugfix: Fixed track masking feature in MistProcMKVExec
- Bugfix: If an TS-SRT push comes in and does not immediately send media data, no longer fails to receive the push
- Bugfix: Packet jitter calculator no longer shared between inputs of single-process inputs (e.g. TS-SRT, TS-RIST)
- Bugfix: Fixed output session shutting down while waiting for a
pushdelay
setting to be applied
- Bugfix: SRT and RIST listening sockets no longer kill all connections when there is a viewer for a mid-shutdown stream connected over these protocols
- Bugfix: Removed dead code in Meta-Player RAW WebSocket wrapper
3.2.1 (Bugfix Release)
- Feature: New API call to reload configuration from disk on demand
- Feature: MistServer will now automatically reload the configuration a few seconds after it changes on disk, and write changes to disk after a minute of no changes having been made (behaviour can be changed through command line flag)
- Improvement: The internal UDP API now writes its listening host and port to shared memory
- Improvement: Code cleanup and speed improvements for the RTP library (affects WebRTC, RTSP and SDP inputs/outputs)
- Improvement: WebRTC output now uses packet pacing to prevent sudden bursts of packets
- Improvement: Certbot integration shows more helpful errors messages now on failures
- Improvement: SRT input now correctly sets internal UTC timestamps
- Improvement: Changed "always on" behaviour to simulate always having a viewer rather than running on an entirely different code path
- Bugfix: TS-based HLS output now works with audio-only streams again
- Bugfix: Trigger success reporting, User Agent logging and the Certbot integration now work out of the box on practically all systems
- Bugfix: SRT sockets now correctly set their default options in all cases, and inherit options from their parent socket
- Bugfix: H264 filler NAL units no longer cause a dropped frame on RTP-based outputs (affects WebRTC, RTSP and SDP)
- Bugfix: Certbot integration no longer fails getting a certificate when one already existed
- Bugfix: A manual push (bypassing the API) to a local file target no longer fails
- Bugfix: HLS push output small segment prevention now correctly only triggers for VoD sources
- Bugfix: Fixed a rare segfault in the controller when shared memory could not be initialized
- Bugfix: Fixed a segfault when using an extremely short (or blank) source parameter
- Bugfix: SRT inputs no longer get detected as VoD-capable
- Bugfix: Fixed JSON library UTF-16 to UTF-8 conversion for high codepoints (e.g. emoji)
3.2 (Stable Release)
- Feature: Added support for passing through TS data raw from TS-based inputs (TS SRT, TS RIST, TS UDP, TS TCP, file descriptors) to TS-based outputs (TS SRT, TS RIST, TS UDP, TS TCP, HLS)
- Feature: Our generic "URIReader" now supports S3-based URLs for reading (thanks Alex Kordic!)
- Feature: MP4 input now reads through the URIReader (adds HTTP(S) and S3 read support to MP4 VoD input)
- Feature: EBML (MKV/WebM, Matroska) input now reads through the URIReader (adds HTTP(S) and S3 read support to MKV/WebM VoD/live input)
- Feature: HLS as well as raw TS file input now read through the URIReader (adds HTTP(S) and S3 read support to HLS/TS VoD/live input)
- Feature: Our new "sessions" system, which unifies the concept of what a single "viewer" is into something that can be configured based on your own preferences, rather than hardcoded assumptions/defaults
- Feature: Added
ATHEIST
environment variable, that when set, disables all angel processes (mostly useful to ease debugging)
- Feature: Can now push to HLS-style playlists (containing any supported push-output file format! e.g.
.ts
, .mkv
, .webm
, .aac
, .flv
) with custom segmenting and playlist filename patterns as well as custom segment target durations
- Feature: Custom variables can now be defined, that take their values from configuration and/or external URLs and/or external binaries. These can be used in all places where variables can already be used in the system
- Feature: Added capability system for support push output GET parameters (both generic/global and per-output)
- Feature: Overhaul of web interface push panel, displaying hints according to the new capabilities and fixing several outstanding bugs and user interface annoyances
- Feature: New scheduled pushes system, allowing complex push rules based on variable conditions
- Feature: Generic "external writer" support. Anyone can now implement a writer for any custom protocol in any scripting/programming language of their choice. These are used by the push system (and
DTSH
header writing). Livepeer has been kind enough to provide a sample uploader that supports S3 and IPFS protocols
- Feature: Added FLAC file input and output support, FLAC file analyser
- Feature: WebRTC WHIP/WISH push input support and WHEP pull output support
- Feature: HLS input, TS input and EBML (MKV/WebM) input now all transmit an indication of header generation progress during header (re)generation. This indication is displayed in the default player if applicable
- Feature: When a VoD input shuts down unexpectedly, outputs will attempt to restart it before aborting now
- Feature: HLS input from remote sources has received significant speed-up improvements
- Rollback: LLHLS support was removed, and HLS output rolled back to the version we had in the 3.0 release. (This is a temporary measure while we work on improvements, due to too many reports of unstable streams in the new LLHLS output that was introduced in the 3.1 release)
- Improvement: Incoming pushes (over all protocols) are now accepted much faster than before
- Improvement: Tweaked log message verbosity levels to draw attention to the right things at the right times more effectively
- Improvement: VoD inputs now keep data buffered for 15 seconds instead of 15 loop iterations (loops were sometimes significantly slower than a second, causing too much buffering to occur)
- Improvement: We now match libav's RTMP receive window overflow behaviour
- Improvement: Web interface now has a new "General" tab that contains, most general settings
- Improvement: Supported codecs for
MistIn*
processes are now more consistently reported in the system capabilities (as well as inside -j
outputs for each process)
- Improvement: Manually started
MistProcLivepeer
processes now have an extra commandline flag to boot their input stream and wait for boot-up to complete before starting transcoding (makes manually started VoD transcoding possible)
- Improvement: Fixed
MistUtilRAX
segfaulting rather than just erroring out when a memory page did not exist
- Improvement: Fixed/removed practically all compiler warnings
- Improvement: Added compatbility for QuickTime-style ISBMF files in MP4 input
- Improvement: MP4 analyser now calculates and prints simple 90-degree-increment rotations, correctly prints transformation matrices
- Improvement: Significant simplification (and speed-up) of MP4 input
- Improvement: Added
dtsc_sizing
test to verify correct sizing of internal memory structures
- Improvement: Added support for building using Meson (thanks Gijs Peskens!)
- Improvement: When building using Meson, now automatically pulls in all non-locally-installed dependencies and compiles them in a subdirectory
- Improvement: Added several dozen automated (unit) tests when building using Meson
- Improvement: Added per-track RTMP timestamp rollover handling (improves compatibility and stability with several RTMP implementations when receiving streams longer than ~4 hours)
- Improvement: TS-based push outputs now actively re-select newly available tracks mid-push if possible
- Improvement: Renamed
MistInSRT
and MistOutSRT
to MistInSubRip
and MistOutSubRip
to prevent confusion between SubRip SRT and Haivision SRT (configuration will automatically migrate accordingly)
- Improvement: No longer send
Content-Length
header when a chunked reply is sent, which was breaking compatibility with some HTTP proxies (now forces a Range header instead, so progress display during download is still possible)
- Improvement: HLS inputs now store relative paths in
DTSH
files, to allow their re-use between local and remote accesses (if needed, DTSH
headers will auto-regenerate)
- Improvement: VoD loading is now prioritized based on how many users want to watch a certain section of a file (rather than first-come-first-serve)
- Improvement: When buffering VoD data, if internal inconsistencies are detected, these are now reported in a more readable (and less spammy) way
- Improvement: VoD inputs now check requested file ranges 4 times per second rather than once per second (improves seek times for outputs)
- Improvement: Updated several internal players for the built-in Meta-Player, added support for selecting metadata tracks separately from the playback protocol
- Improvement: Added new
bframes
track selector, which matches all (video) tracks that contain B-frames
- Bugfix: TS SRT listening sockets now allow passing configurations as GET parameters
- Bugfix: IPv6 UDP sockets now work in more diverse network configurations than before
- Bugfix: CMAF output "Playlist limit" feature now works again
- Bugfix: Removed forgotten "Rate=..." debug message
- Bugfix: Fixed possible deadlock when waiting for a memory structure to become ready for use
- Bugfix: Streams configured with "balance:" source address no longer briefly take 100% CPU time when booting up
- Bugfix: TS SRT pull connections that exit for Mist-internal reasons now also close and clean up the SRT socket properly
- Bugfix: Track selectors that have multiple protocol-matching options now correctly consider all possibilities equal when deciding on compatible codecs
- Bugfix: Fixed several seek/range-request related problems in URIReader library
- Bugfix: RTP parser no longer throws away first ingested packet on each track
- Bugfix: TS SRT input and output now correctly set usual default values when not explicitly set
- Bugfix: Fixed interrupted system calls occasionally closing actively writing sockets
- Bugfix: Fixed a memory leak in all TS-based inputs
- Bugfix: Push outputs now report the remote address as their hostname/IP in the "clients" API call, rather than the local address
- Bugfix: It is now possible to build MistServer with RIST support while SRT support is disabled (thanks Gijs Peskens!)
- Bugfix: It is now possible to build
MistInAV
against modern versions of ffmpeg (thanks Gijs Peskens!)
- Bugfix: Compilation on native MacOS works again (we're still updating our build system to match; but compiling it yourself from source on a Mac is fully functional again)
- Bugfix: The web interface now allows dots and dashes in stream names (API already supported this for a while)
- Bugfix: Log parser code now supports running on systems with very small pipe buffers (e.g. MacOS)
- Bugfix: Fixed lost packet counter in WebRTC input/output, improved RTP Sender Report timing in WebRTC
- Bugfix: API no longer hangs entire controller during anti-auth-bruteforcing sleep
- Bugfix: Fixed several dozen rare little edge cases where desyncs, deadlocks or unneeded waits/reloads would break shared memory link between input and output processes
- Bugfix: "Exceeding recordCount" message now only shows when record count was actually exceeded
- Bugfix: Fixed URIReader not returning read calls when attempting to read past end of file
- Bugfix: MP4 analyser no longer crashes on Apple-generated
.mov
HEVC boxes
- Bugfix: Better detection of local paths in the URL parser library
- Bugfix: MP4 input no longer hangs indefinitely when encountering an unknown track type (instead ignores that track)
- Bugfix: Unrecognized raw data tracks in TS-based inputs no longer collect in memory and confuse the parser forever (simply get ignored now)
- Bugfix: When gathering capabilities, no longer attempt run run directories and non-executables in the same directory as the controller (thanks Gijs Peskens!)
- Bugfix: Push outputs no longer get stuck waiting for requests that will never come when connecting to their corresponding input fails
- Bugfix: Fixed RTMP extended timestamp parsing
- Bugfix: RIST push outputs now allow setting RIST GET parameters separately from Mist GET parameters (dual-
?
syntax, same as other push outputs)
- Bugfix: Fixed
forcetype
and urlappend
options in .html
output
- Bugfix: H264 data that used NAL unit lengths smaller than the most common 4-byte size (2-byte or single-byte) are now correctly supported in TS and raw H264 outputs
- Bugfix: Fixed protocol-based viewer counts in Prometheus stats
3.1 (Stable Release)
- Feature: Support for output to SDP files, which contain RTP stream(s), as well as retrieving an SDP over HTTP for RTP-based playback
- Feature: Support for ingesting SDP format files and URLs to pull RTP streams
- Feature: Split config support: it is now possible to split up the configuration file into multiple files
- Feature: RIST input and output support (
librist
must be installed during compile; our build system does not yet have it installed so you must compile yourself if you want RIST support in your build)
- Feature: It is now possible to use the RTMP output connector over stdio instead of a socket, allowing setups that use e.g. initd or systemd socket activation, as well as easier debugging of RTMP dumps
- Feature: Pro-MPEG Forward Error Correction support for TS UDP push output
- Feature: TS TCP push output support
- Feature: AAC input support
- Feature: Support for playing back H265/HEVC codec in browsers without software-only decoding, through
libde265.js
- Feature: Support for overriding an AAC audio track with a looped custom AAC file from disk when pushing out RTMP streams to remote targets
- Improvement: Shared memory related wait timers now use exponential back-off to reduce delays
- Improvement: TS-based inputs are now slightly more resilient against packet loss
- Improvement: Live inputs now shut down when they detect the buffer has shut down cleanly for any reason (unclean shutdowns still auto-recover)
- Improvement: TS-based outputs now detect the presence of extra init data packets in the bitstream and no longer inject duplicates if the bitstream already contains them
- Improvement: Support for H265 in the raw H264 output connector
- Improvement: Added support for handling 422 status code in Livepeer transcodes, and a new trigger for taking actions when segments fail to transcode
- Bugfix: Fixed track synchronization when adding a track to a pre-existing track selection
- Bugfix:
ts-exec
output now functions again
- Bugfix: Remote socket addresses were in some cases misrecognized, breaking host/IP based whitelisting for some protocols
- Bugfix: Configuration options that are set to zero or null, but do not default to zero or null, are now correctly applied
- Bugfix: SRT input works again
- Bugfix: Web interface removed the non-functional encryption settings from stream settings page (hasn't worked for years 🙃)
- Bugfix: Fixed parsing of
/../
segments in URLs
- Bugfix: Fixed HLS input not properly cancelling requests for partial file downloads
- Bugfix: RTMP authentication now parses special characters in the same way most other implementations do
3.0 (Stable Release)
- Caveat: This is the first new major version release in a long time! Please make sure to read the migration guide on our blog.
- Caveat: HLS pull input from URL has a few broken edge cases. If you rely on this functionality, please wait until the next release instead.
- Caveat: There is a known bug in the per-stream statistics in the Prometheus integration that causes data to be added up under the wrong stream name under certain conditions. Whole-server statistics are unaffected. This will be fixed fully in the next release.
- Caveat: This release is only available for Linux. Windows and MacOS builds will follow soon in a later update.
- Announcement: This version of MistServer changes the license from aGPLv3 to Public Domain Dedication!
- Feature: All previous Pro-edition-only features are now available in the open source edition.
- Feature: Added several new track selectors (see manual for details)
- Feature: Added MP4 over WebSockets streaming protocol (both backend and player)
- Feature: Metaplayer can now report back playback quality metrics to the backend
- Feature: Metaplayer can now play back FLV streams without needing Flash player installed
- Feature: Metaplayer can now show a backdrop that takes on the colours of the video contents
- Feature: Added WebRTC input and output support
- Feature: Added processing system that allows applying arbitrary transformations to live streams
- Feature: Added process that allows using ffmpeg for transcoding audio or video
- Feature: Added support for push output using the DASH-IF Live Media Ingest Protocol (progressive CMAF push)
- Feature: Added CMAF output, providing HLS-CMAF and DASH-CMAF outputs, replacing the old HSS and DASH outputs.
- Feature: Added
STREAM_END
trigger
- Feature: Added viewerseconds statistic in metrics output(s)
- Feature: Added process that allows using Livepeer.com to transcode video
- Feature: Track metadata (width, height, frame rate) now automatically update as track properties change in live streams
- Feature: AAC progressive streaming output support
- Feature: RTMP push outputs can now optionally replace the audio with silence
- Feature: Added process that allow arbitrary livestream transformation scripting through MKV-based standard input / standard output
- Feature: Support for Opus audio in TS-based inputs and outputs
- Feature: Added MistUtilNuke utility, that allows completely stopping a active stream either from command line or through the API
- Feature: Added native (no longer uses
srt-live-transmit
) SRT input and output support, with full support for packet loss metrics and multiple streams over a single port through the streamid parameter
- Feature: Added DTSC protocol push output support
- Feature: Added protocol-independent
PUSH_REWRITE
trigger, deprecating the old RTMP_PUSH_REWRITE
trigger (old trigger still works as well)
- Feature: Added
config_backup
and config_restore
API calls, for backing up and restoring whole-server config
- Feature: Added
no_unconfigured_streams
API call, automatically shuts down all unconfigured streams when used
- Feature: Metrics outputs now log packet loss statistics
- Feature: Added
unixoffset
field in stream info outputs; allowing calculating of UTC time for stream timestamps on the client-side
- Feature: Added tagging system that allows setting arbitrary tags to active streams, and then use these to enable pushes
- Feature: Added ability to choose default stream selection algorithm per-protocol
- Feature: Added HLS push output to disk (recording to locally stored HLS format)
- Feature: Added HLS input DVR mode (play back stream of ongoing locally stored HLS recording; updates in real-time)
- Feature: Allow waiting for specific track counts with specific timeouts through GET parameters / push output parameters
- Feature: Added mkv-exec input and output support (analogous to already supported ts-exec)
- Feature: Added LLHLS output support
- Improvements: RTMP and FLV based inputs now ignore AAC metadata and calculate it from actual media data instead
- Improvements: Metaplayer recovery behaviour improvements when streams stop/restart
- Improvements: Metaplayer in developer mode now shows more stream health metrics
- Improvements: Metaplayer can now go into fullscreen mode on devices that do not natively support it
- Improvements: Web interface now supports packet loss statistics
- Improvements: Players used by the metaplayer have been updated to newer versions
- Improvements: Trusted proxy configuration is now possible from the web interface (was API-only before) and more convenient to set up
- Improvements: Metaplayer now looks better for small screen widths
- Improvements: Rewrote MistServer's buffering internals. Reduces internal latency to approx. 2-3 frames from previous 1-2 seconds.
- Improvements: Improved RTMP cross-server compatibility
- Improvements: Allow setting language of RTMP tracks being pushed into the system
- Improvements: VP8 support in RTP-based inputs and outputs
- Improvements: TS-based outputs now send large PES packets using unbounded headers instead of splitting over multiple PES packets
- Improvements: Stream health outputs are now more accurate/readable
- Improvements: Significant improvements to latency in practically all protocols (both related and unrelated to buffering internals rewrite)
- Improvements: TS parser reliability and speed improvements
- Improvements: RTSP output now supports track selectors
- Improvements: TS analyser can now dump raw PES packet contents
- Improvements: Most inputs/outputs now print their exit reason upon shutdown at log level INFO or higher
- Improvements: Significant improvements to internal HTTP library
- Improvements: TS analyser now supports some of the DVB specification descriptors
- Improvements: DTSC push input and DTSC pull output speed and reliability improvements
- Improvements: Stream names may now contain the dash (
-
) character
- Improvements: Added MistUtilRAX utility for raw display of internal memory structures in-vitro
- Improvements: RTMP push outputs can now optionally add an arbitrary offset (negative or positive) to timestamps
- Improvements: Rewrote HTTP-based outputs to use a generic HTTP handler instead of per-output
- Improvements: RTMP parameters are now available in request URL fields for applicable triggers
- Improvements: EBML/MKV input no longer adds 16 frames of unnecessary extra latency
- Improvements: Metadata now shows track language
- Improvements: Added ability to force colored log output through
MIST_COLOR
environment variable
- Improvements: Added journalctl-friendly logging output through
MIST_LOG_SYSTEMD
environment variable
- Improvements: Updated systemd service file to use new journatlctl-friendly logging output and support reloading MistServer to perform a rolling update
- Improvements: Updated
active_streams
API call (see manual); old syntax still supported
- Improvements: Added support for stream variables in fallback streams
- Improvements: DTSC outputs are now in "async mode", allowing tracks with differing latency to be conveyed with those differences intact
- Improvements: TS UDP output now defaults to all supported tracks (instead of one audio + one video)
- Improvements: RTP-based inputs now ignore invalid SPS/PPS packets, instead of applying them blindly
- Improvements: JSON stream info output now includes human-readable name for protocols
- Improvements: DTSC pull input can now correctly preserve UTC offsets between multiple servers
- Bugfix: Fixed crash in TS-based outputs using AAC audio
- Bugfix: Improve stability of playlist feature
- Bugfix: EBML-based inputs now correctly handle B-frames
- Bugfix: H264 analyser works again
- Bugfix: UDP sockets more reliably use IPv4 vs IPv6 now
- Bugfix: HTTP-based outputs that return an error no longer send multiple responses by mistake
- Bugfix: AAC audio in TS-based outputs now align audio timestamps to whole samples (fixes HLS in some browsers)
- Bugfix: Invalid AMF data in RTMP/FLV inputs no longer locks the input into a loop
- Bugfix: HLS subtitles work again
- Bugfix: RTMP headers now use first media timestamp instead of 0
- Bugfix: Fixed MistController locking up if a rolling restart was performed while many log lines were being written simultaneously
- Bugfix: Fixed TS parser sometimes not parsing the last PES packet contents
- Bugfix: Fix outgoing socket connections being interrupted by signals failing to retry
- Bugfix: RTMP timestamp rollover now handled (more) properly
- Bugfix: Fixed metrics outputs being inaccurate right after a restart/reload
- Bugfix: Fixed deadlock when booting MistServer on systems with very small pipe buffers
- Bugfix: HLS outputs for streams that contained
m3u
in their stream name now work again
- Bugfix: Fixed H265 keyframe detection in TS-based inputs
- Bugfix: Corrected typo in AC3 codecstring
- Bugfix: Fixed boolean options in connector/protocol settings (got stuck on "true" in the past if ever set to it)
- Bugfix: Removed USR1 signal handler from child processes of listening output protocols (fixes them disconnecting on USR1 signal)
- Bugfix: Standard shutdown signal handler now closes stdin to fix read-loops blocking the process
- Bugfix: MistController rolling restarts now much more reliable
- Bugfix: Dozens of other small fixes and quality of life improvements to all components of MistServer
2.18.1 (Bugfix Release)
- Bugfix: Removed an excessively often printed debug message that was not supposed to be part of the last release.
2.18 (Stable Release)
- Pro Feature: RTP HEVC Aggregation Packet support
- Pro Feature: Added "duration" and "split" push parameters.
- Pro Feature: Added global "Default stream" option and corresponding
DEFAULT_STREAM
trigger (see updated manual for details)
- Pro Feature: Added support for clearkey encrypted HLS input
- Pro Feature: Added advanced track selectors (see updated manual for details)
- Pro Feature: Added
$wday
, $yday
and $week
variables for use in push targets and stream rewrites
- Pro Feature: Added fallback stream feature for live streams (redirects requests to another stream when offline)
- Pro Feature: Added playlist input support (optionally scheduled, fake-live streams from VoD sources)
- Pro Feature: HLS input support for syncing between segments based on ISO8601 timestamps
- Pro Feature: TS demuxer now corrects for invalid timestamp changes
- Feature: Allow setting a starting time in the
.html
output by passing a t=X
GET parameter start time specifier
- Feature: Added warnings for having very little RAM and/or shared memory available
- Feature: Backported "Public Address" setting from Pro edition to Open Source edition
- Feature: Added support for multiple Public Addresses, added support for "X-Mst-Path" HTTP header to override public address directly from HTTP proxies for improved reliability
- Feature: Added
api_endpoint
API call to detect local API endpoint details (meant to be used over UDP to detect TCP details, but works in both)
- Feature: Added
shutdown
API call to shut down MistServer. Only works when issued from local addresses.
- Pro Improvement: HLS live input support now uses multithreaded downloading
- Pro Improvement: Significant improvements and increased stability for HLS inputs, both URL- and file-based
- Pro Improvement: Made triggers slightly less verbose in the log
- Pro Improvement: RTSP input now attempts TCP if UDP fails and vice-versa
- Improvement: Logging system improvements
- Improvement: Optimized speed of HTTPS output
- Improvement: Speed optimizations to HTTP parser
- Improvement: Added debug message for setting jumps in live input timestamps
- Improvement: Better error handling/reporting in internal socket library
- Improvement: Made HTTP/RTSP headers case-insensitive
- Improvement: Added internal "URIReader" library, for handling file reads from disk/network in a generic way
- Improvement: HLS now outputs identical segments for iOS and non-iOS targets (removed iOS-specific workarounds/patches)
- Improvement: Local-only UDP API on localhost:4242 now responds to API requests over UDP as well.
- Improvement: Significantly improved locking behaviour for outputs, especially segmented outputs such as HLS
- Improvement: Settings page: preview and embed tabs now apply HTTP proxy settings
- Improvement: Meta Player: improved UX for mobile users
- Pro Bugfix: Fixed licensing system support for non-HTTPS proxy servers
- Pro Bugfix: Fixed deadlock in TS input for unknown track types
- Pro Bugfix: Fixed RTSP compatibility with off-spec Soliton Systems RTSP server implementations
- Pro Bugfix: RTSP pull input now shows up in statistics
- Pro Bugfix: Fixed segmentation error in controller when using extremely short stream source settings
- Pro Bugfix: Fixed JSON statistics output type counter
- Pro Bugfix: Fixed "always on" streams getting stuck as always on if the setting was ever enabled at all
- Pro Bugfix: Fixed
RTMP_PUSH_REWRITE
and PUSH_OUT_START
triggers not ignoring responses in non-blocking mode
- Bugfix: Improvements/fixes to internal socket library, fixed multicast support in Windows builds
- Bugfix: Fixed compiling with SSL support disabled
- Bugfix: Fixed live streaming inputs in Windows builds
- Bugfix: Minor fixes to statistics system
- Bugfix: Fixed support for input URLs with GET parameters
- Bugfix: Fixed
MistIn*
processes incorrectly passing configuration in some cases
- Bugfix: Fixed debug level setting in HTTP output
- Bugfix: Fixed a memory leak in internal socket library
- Bugfix: Fixed Certbot integration to correctly handle certificate installations and renewals
- Bugfix: Fixed MP4 output not setting Content-Length header for HEAD/OPTIONS requests
- Bugfix: Fixed JSON parser not handling a backslash at the end of a string correctly
- Bugfix: Fixed local IP address detection over HTTPS
- Bugfix: Added a workaround for a bug introduced in OBS version 25: https://github.com/obsproject/obs-studio/issues/2865
- Bugfix: Fixed invalid memory read in internal socket library
- Bugfix: Fixed UDP socket rebinding issues, clarified debug message for switching address families
- Bugfix: Fixed internal HTTP library handling of chunked transfer and HTTP/1.0 unknown body sizes
- Bugfix: Settings page: several small bug fixes
- Bugfix: Meta Player: improved stability for videojs and dashjs players
- Bugfix: Meta Player: prevented a player-duplicating race condition
- Bugfix: Meta Player: several small bug fixes
2.17 (Stable Release)
- Pro Feature: Added RTMPS push output support (fixes Facebook compatibility)
- Pro Feature: Added support for TS over HTTPS
- Pro Feature: Autodetect SRT (Secure Reliable Transport) utilities and allow using them directly from the interface
- Pro Feature: Added support for Adobe-style authentication for RTMP(S) push output
- Pro Feature: Added pushdelay parameter to all push outputs, allowing for a configurable delay of live streams
- Feature: Generic HTML output now allows forcing of protocol through "forcetype" GET-parameter.
- Feature: Added native certbot integration for easy SSL certificate management (run "MistUtilCertbot" for basic instructions, an upcoming blog post will explain the usage in more detail!)
- Feature: Open Source edition now supports MP4 file input
- Feature: Open Source edition now supports SSL output
- Pro Improvement: DTSC pull now has an "Always on" checkbox in the interface
- Pro Improvement: The SYSTEM_START trigger now includes the current version number in the payload
- Improvement: Tweaked debug level verbosities
- Improvement: Embed code now falls back to regular HTTP if the WebSocket connection fails
- Improvement: Better codec/container compatibility detection for legacy browsers
- Improvement: Robustified socket implementation and related timings
- Improvement: Open Source edition now supports the localhost-only UDP API port
- Improvement: Lowered default segment size from 5 to 2 seconds for improved default latency
- Pro Bugfix: Fixed HLS input support for streams that do not start with a key frame
- Bugfix: Fixed WebSocket support in IE11
2.16 (Stable Release)
- Pro Feature: Segmented protocols can now use GET-param based track selection, keeping ABR intact
- Feature: Open Source edition now includes track selector support (previously a Pro-only feature)
- Feature: Listening sockets for outputs/protocols can now be be made to rolling-restart, without closing the listening socket
- Pro Improvement: TS and HLS input parser speedup
- Pro Improvement: Licensing and updater requests now use HTTPS where possible
- Pro Improvement: New and improved auto-updater code (only functions on Linux platform, and requires "tar" utility to be available in MistServer's PATH). Much faster and with better progress/failure/success display.
- Improvement: Added the "none" track selector for unambiguous unselecting a specific track type.
- Improvement: Decreased WebM/MKV output priority, blacklisted Android for WebM/MKV output selection
- Improvement: When using HTTP Basic or Digest authentication to retrieve URLs, this option is now used case-insensitively (fixes auth for some cameras)
- Improvement: GET parameters given to the .html page output for a stream are now passed on to the stream URLs as well
- Improvement: Slightly improved EMBL/MKV/WebM input and output support, with drastically reduced input latency and better near-live playback behaviour
- Improvement: Controller now checks if other binaries are of matching version, and ignores them when they are not (prevents mixing incompatible versions of binaries)
- Pro Bugfix: RTP timing corrections
- Pro Bugfix: HTTP Smooth Streaming output fixes
- Pro Bugfix: Fixed "SYSTEM_START" trigger ignoring return values and not working correctly when not configured
- Pro Bugfix: DASH output fixes
- Pro Bugfix: Fixed HEVC resolution detection
- Pro Bugfix: Fixed sync bug in HTTP trigger handler
- Bugfix: Corrected parsing of SAR entries in H264 init data ( = aspect ratio setting support)
- Bugfix: Fixed null members in stream configuration causing failures
- Bugfix: Fixed file descriptor leak in HTTP get/post code
- Bugfix: Fixed websockets with stream info not terminating server-side when client-side is closed
- Bugfix: Fixed semaphore issues on MacOS-based platforms
- Bugfix: Fixed stream status handler on Windows-based platforms
- Bugfix: Meta-player CSS fixes and track selection improvements
- Bugfix: Dozens of other small fixes and quality of life improvements to the meta player
2.15 (Stable Release)
- Pro Improvement: Trigger memory pages are now only rewritten if there were changes to the trigger configuration
- Pro Improvement: Rewrite/optimize of the internal RTP parser and generator
- Pro Improvement: Prometheus-style outputs now include trigger statistics, including fail counts and execution duration
- Pro Improvement: Triggers configuration page in web interface now contains all relevant trigger information for developers, right on the page itself for easy access
- Pro Improvement: HLS "Merge sessions" option now sends headers that make caching proxies work properly, if enabled
- Pro Improvement: RTSP pull now supports authenticating any RTSP request type (previously only the DESCRIBE request was supported)
- Pro Improvement: RTP-based inputs can now correctly parse out RTP header extensions (fixes some ONVIF-based RTSP cameras)
- Improvement: Made names of outputs easier to interpret for humans. Bah, humans...
- Improvement: Added CORS headers to 415 replies of the HTTP(S) output(s)
- Improvement: Complete rewrite of the embed code and meta player (backwards compatible). See manual for the full API and other details.
- Improvement: API "version" responses now include the release name alongside the version number
- Improvement: Logs API now also sends related stream name, if any. (Not yet displayed in the web interface, but API support is there already.)
- Pro Bugfix: RTSP output no longer attempts to send RTCP packets before SETUP phase is complete
- Pro Bugfix: Executable triggers now correct use the default response when execv fails
- Pro Bugfix: Fixed TS (including HLS) based live inputs not correctly reading track metadata in some cases
- Bugfix: Fixed non-configured (manually started) streams crash issue
- Bugfix: Fixed analysers no longer working on file inputs
- Bugfix: Fixed wildcard streams working through HTTP forwarding
- Bugfix: Fixed occasional crash in child processes that had their own child processes
- Bugfix: Fixed statistics issues with very quickly disconnecting user requests
- Bugfix: Fixed websocket connections sometimes staying open indefinitely on the server side, even when the user has already disconnected
2.14.2 (Bugfix Release)
- Pro Feature: H264 and MP4 outputs now offer a "key frames only" mode though a GET parameter (?keysonly=1)
- Pro Feature: "rate", "start", "stop", "startunix", "stopunix" GET parameters are now supported for all progressive HTTP outputs
- Feature: All server configuration accesses are now lock-free and significantly faster as a result
- Pro Improvement: Optimized TS output speed, especially for MPEG2-based streams
- Pro Improvement: TS analyser PES header messages are now more human-readable
- Pro Improvement: Various H264 parser/generator and analyser improvements
- Improvement: Tweaked log messages verbosity levels
- Improvement: Improved VoD buffering behaviour
- Improvement: Improved timing behaviour with less stutter for all non-segmented live outputs
- Improvement: HTTP-based outputs will now always return a valid HTTP response, even on errors, and HTTP error messages now contain CORS headers like the rest of the outputs
- Improvement: FLV file input now stops on errors, providing the file up to the error point, instead of aborting entirely
- Improvement: Log messages related to a particular stream now always include the stream name in the message
- Improvement: HTTP handler no longer uses peek() system call to pick the right handler, instead uses regular reads, preventing trickle-request and high CPU usage issues entirely
- Bugfix: Fixed SIGABRT issue with TS-based outputs (HLS, TS)
- Bugfix: Outputs no longer wait indefinitely for an input to boot, but will abort after a maximum of one minute.
- Bugfix: Server configurations containing JSON arrays now work correctly
- Bugfix: Fixed compatibility with DU Recorder
- Bugfix: Viewer counter and statistics accuracy fixed
- Bugfix: 32-bit ARM compilation fixed (outputs could not compile)
- Bugfix: Packing JSON structures containing floating point numbers into DTSC now works
2.14.1 (Bugfix Release)
- Pro Feature: Added 'acceptable connection type' RTMP setting for outputs, allowing certain interfaces/ports to only allow outgoing or only incoming connections, as opposed to always allowing both.
- Feature: Added DTS audio support to EBML/WebM/MKV input/output
- Pro Improvement: Updated load balancer to use ipstack-based GeoIP instead of freegeoip (platform was discontinued)
- Improvement: URL encode/decode behaviour now follows the specifications more closely, with some exceptions for common other implementations for maximum cross-application compatibility
- Improvement: RTMP handshake ordering is now optimized for cross-application compatibility
- Improvement: RTMP is now compatible with Larix Broadcaster
- Improvement: Real-time protocols (RTSP, RTMP, DTSC) now use a new type of seeking that ensures immediate playback
- Improvement: Allow for multiple SPS/PPS entries in AVCC boxes (H264 codec specific)
- Improvement: RTMP connector now displays errors in a more human-readable way
- Improvement: Backported several Pro edition updates/improvements to Free edition
- Pro Bugfix: RTSP input no longer breaks on SEI packets
- Pro Bugfix: Statistics no longer go negative when doing a rolling restart
- Pro Bugfix: Fixed RTSP output compatibility with mplayer
- Bugfix: HTTP proxies now correctly use custom port numbers
- Bugfix: EBML/WebM/MKV fixes for uncommon cluster sizes
- Bugfix: Fixed blocking issues with JSON output
- Bugfix: Fixed incorrect sending of HTTP error responses through Websocket connections
- Bugfix: Fixed double values in JSON structures being incorrectly rounded/displayed in some cases
- Bugfix: sourcery application (binary to C header converter, used internally during compilation) updated to avoid accidental trigraphs
- Bugfix: EBML/WebM/MKV input fixed to support GStreamer-generated streams correctly
- Bugfix: Fixed audio/data rate calculation in Flash-based metadata output
- Bugfix: RTMP protocol extended timestamp implementation updated to RTMPv2 to match most common implementations currently available
- Bugfix: Fixed all-interface IPv6 socket being used when attempting to listen on a non-IPv6 address specifier
- Bugfix: EBML/WebM/MKV input now supports non-static GOP sizes
- Bugfix: Fixed EBML/WebM/MKV input automatically removing trailing zero bytes when inappropriate
- Bugfix: Fixed a memory leak in all continuous-use live inputs
- Bugfix: Fixed HLS-related statistics bugs in Free edition (Pro edition wasn't affected)
2.14 (Stable Release)
- Pro Feature: Added MKV recording support
- Pro Feature: Added buffer and rate parameters to RTSP output
- Pro Feature: Added USER_END trigger
- Pro Feature: Added JSONP support and CORS headers to JSON-based prometheus output
- Feature: WebM and MKV input and output support, both live and VoD
- Feature: Added new JSON-based WWW-Authenticate scheme for the API
- Feature: Websocket support for JSON output
- Feature: Websocket support for info_STREAM.js output
- Feature: Websocket support for several API calls
- Feature: JSON library now supports doubles (previously only integers)
- Feature: MP4 output can now be made to trigger a client-side download by adding GET parameter dl=1
- Feature: Added JSON output deduplication and persistent connections
- Feature: Added JSON push input support over a websocket
- Feature: RTMP, RTSP and JSON inputs now all sync their timing together based on the system boot time
- Pro Improvement: Significant improvements to RTSP input/output compatibility (especially IP-cams)
- Pro Improvement: Added float support to WAV output
- Pro Improvement: Significant speedup in the MPEG2 header parser
- Pro Improvement: TS compatibility improvements
- Pro Improvement: HLS compatibility improvements
- Pro Improvement: HTTPS output now supports all HTTP options as well
- Pro Improvement: HTTPS output now works completely independently from HTTP output
- Pro Improvement: HTTP and HTTPS outputs can now use separate options for separate ports
- Pro Improvement: Added $pluswildcard stream variable (includes the plus symbol when using wildcard streams)
- Pro Improvement: Added non-chunked mode for DASH and HLS outputs (disables HTTP 1.1 chunked encoding)
- Pro Improvement: Added option for HLS to disable session IDs (merging together same-user sessions)
- Pro Improvement: audio/video/subtitle track selection now no longer auto-selects any track when given track isn't selectable
- Pro Improvement: RTP sorter rewritten
- Pro Improvement: Human readable server name is now reported to licensing system for easily identifying servers on the overview page
- Pro Improvement: DASH no longer outputs MP3 to browsers (unsupported), only to dedicated players.
- Pro Improvement: HEVC in HLS is now blacklisted for non-Apple devices (unsupported)
- Improvement: Logging system now color-codes when running in a terminal, handles edge cases better.
- Improvement: Bash API now has unicode support and is easier to use from localhost
- Improvement: Failed HLS output requests now respond with a proper HTTP error code
- Improvement: Better behaviour for failed responses in internal HTTP outputs (JSON/JS outputs with stream info)
- Improvement: Buffers now shut down when their corresponding input shuts down
- Improvement: Improved human-readable descriptions of several inputs
- Improvement: Better statistics and stream status handling
- Improvement: Better browser capability detection
- Improvement: Added codec/resolution/framerate information to HLS track indexes
- Improvement: Removed automatic wildcard addition for DTSC inputs (now explicit instead of implicit)
- Improvement: More robust stream input start handling
- Improvement: exec-based inputs now throw away stderr, fixing ffmpeg lockups
- Improvement: Human-readable server name is now displayed in the configuration page title, and listed in active instance lists.
- Improvement: Smooth streaming is no longer listed as an HTML5 stream type (only plugin-based)
- Pro Bugfix: Triggers no longer block stderr
- Pro Bugfix: Triggers now correctly use the text/plain mimetype instead of application/x-www-form-urlencoded
- Pro Bugfix: Fixed RTSP authentication
- Bugfix: RTMP connections no longer drop when they receive a deleteStream command (improves compatibility)
- Bugfix: Fixed a crash related to re-opening shared memory pages
- Bugfix: Fixed a potential deadlock during server shutdown
- Bugfix: URL encoder now properly handles paths in URLs
- Bugfix: Updated RTMP behaviour to match 2012 specifications update as opposed to original 2009 specifications
- Bugfix: Fixed base64-encoder output to properly handle trailing null bytes
- Bugfix: Fixed MP4 output track desync issues
- Bugfix: Fixed socket binding for TS UDP output
- Bugfix: Fixed current connection count statistics
- Bugfix: Internal failure responses now include CORS headers and support OPTIONS/HEAD HTTP requests
- Bugfix: Fixed some IE-specific issues related to seeking
- Bugfix: Fixed URL parser allowing slashes inside stream names, causing output matcher issues
2.13 (Stable Release)
- Pro Feature: Support for srt subtitle files stored alongside media files
- Pro Feature: RTSP Receiver Reports implemented
- Pro Feature: Recordings can now include a to/from time, in either milliseconds or unix time
- Pro Feature: TS output can now passthrough all (TS) tracks
- Pro Feature: ts-exec output support (executing a command and writing TS data into the running command)
- Pro Feature: RTSP UDP input can now optionally ignore the port number of the sender
- Pro Feature: RTSP pull input (both TCP and UDP)
- Pro Feature: Mu-law audio support added to RTSP (in and out) and WAV (out)
- Pro Feature: Scheduled push support added
- Pro Feature: HLS input HTTPS support
- Pro Feature: Triggers now support HTTPS URL handlers
- Pro Feature: MP4 output can now inject subtitles on request
- Pro Feature: All outputs, both over HTTP and through the push system now support manual track selection overrides through the use of the "audio", "video" and "subtitle" GET parameters (see documentation for details)
- Pro Feature: HLS and DASH outputs now support subtitles
- Feature: HTTP and URL libraries now support Digest authentication and HTTP-based proxy servers
- Pro Improvement: Recording/push-out implementation optimized and generalized
- Pro Improvement: TS live input can now set the DVR window size
- Pro Improvement: JSON-based prometheus output now reports stream URLs
- Pro Improvement: Multiple incoming RTMP pushes for the same stream in short succession now work
- Pro Improvement: Statistics delay for inputs is now significantly shorter than for outputs
- Pro Improvement: Changed RTMP maximum chunk size to match Youtube's maximum
- Pro Improvement: Implemented default responses to triggers, added a maximum execution time before failure is assumed
- Pro Improvement: Supported triggers are now reported over the API in the capabilities section
- Pro Improvement: SSL handshake errors are no longer reported as failures
- Improvement: The live-seeking algorithm for catching up to live streams has been significantly improved (less playback jitter)
- Improvement: SSL socket class added, downloader class support for HTTPS connections, authentication, proxying and POSTing data
- Improvement: Tweaked debug levels
- Improvement: Added web interface settings for various already existing Pro features
- Improvement: Better display of multiple tracks in the default embed code
- Improvement: Licensing information is now displayed in the web interface
- Improvement: Web interface now displays tracks with more details
- Improvement: URL parser code made more robust, handles many more edge cases now
- Improvement: UDP sockets made more robust
- Improvement: Bit rates for tracks are no longer just peak bit rates, but now also tracks average bit rate
- Pro Bugfix: Unsupported track types in MP4 input are now filtered
- Pro Bugfix: various UDP-related RTP data management bugs fixed
- Pro Bugfix: Live MP3 audio inside MP4 containers works again
- Pro Bugfix: TS UDP output now properly reports its used bandwidth
- Pro Bugfix: TS input (both VoD and live) now correctly supports PTS rollovers (enables long-duration TS streams)
- Pro Bugfix: Fixed RTSP input framerate misdetection issues
- Pro Bugfix: Fixed the last packet for each track in TS input being dropped
- Pro Bugfix: Fixed resume support when pushing to Facebook
- Pro Bugfix: Fixed pushing to YouTube
- Pro Bugfix: RTMP push URLs no longer need double question marks at the end to add parameters
- Bugfix: Fixed HLS output crash when requesting non-existing stream
- Bugfix: URL encoding library safe character list corrected
- Bugfix: Stream state information is now properly cleaned on stream deactivation
- Bugfix: HTTP connection re-use after stream reaches end now works properly
- Bugfix: Fixed CVE-2017-16884, discovered by hyp3rlinx / apparitionsec
- Bugfix: The Controller no longer locks up if the session cache wasn't unlocked during a previous run
2.12 (Stable Release)
- Pro Feature: Buffers no longer shut down when idle when the "Always on" setting is active and/or the stream is not configured
- Pro Feature: PCM audio support in RTSP (both input and output)
- Pro Feature: PCM audio support in WAV output
- Pro Feature: Push to file now automatically creates non-existent parent directories as-needed
- Pro Feature: Push system now accepts $wildcard and $basename as new target variables
- Pro Feature: Added MistInBalancer input, for receiving input instructions from an external load balancer
- Pro Feature: Added DTSC push input support
- Pro Feature: Added raw H.264 Annex B output over HTTP and recording to file support
- Pro Feature: Added ts-exec source support, which will execute a shell command and takes resulting output as live TS stream data
- Pro Feature: Added live HTTP TS input support
- Pro Feature: Added support for MPEG2 video and MP2 audio in all TS-based inputs and outputs
- Pro Feature: Added support for HEVC RTSP input and output
- Pro Feature: Added support for MPEG2 video and MP2 audio RTSP output
- Pro Feature: Added RTSP TCP data analyser
- Feature: PCM audio support in all Flash-based protocols (both input and output)
- Feature: Whitelisting of hostnames and IP addresses now has subnet mask support
- Feature: Added raw H.264 Annex B video input support
- Feature: Added piped live DTSC input support
- Pro Improvement: RECORDING_END trigger now contains more details about exactly when and how much was recorded
- Pro Improvement: HLS input can now be set to always on, significantly improved performance and compatibility with various HLS stream types
- Pro Improvement: HLS analyser is now much more compatible and verbose
- Pro Improvement: TS file input now supports files larger than 8GiB
- Pro Improvement: All TS-based inputs sped up significantly
- Pro Improvement: MP4 and RTSP outputs now play back stable for live HLS input
- Improvement: MistInBuffer now refuses to start when the calling process has no data to fill the buffer with
- Improvement: Incoming pushes during stream shutdown no longer get dropped
- Improvement: DTSC analyser can now print hexdumps of raw packet data
- Improvement: Now sets socket keep alive option on all TCP connections, allowing closed connections to time out over time
- Improvement: API calls affecting streams now take effect immediately, instead of after a short delay
- Improvement: Changed default maximum simultaneous tracks per input/output from 10 to 20.
- Improvement: Controller no longer asks to enable default protocols when none are installed/available
- Pro Bugfix: UDP socket is no longer inherited by child processes
- Pro Bugfix: TS input now correctly obeys the "Always on" setting
- Pro Bugfix: Fixed MP4 live output random disconnect problem
- Pro Bugfix: Fixed potential missing of STREAM_BUFFER EMPTY trigger
- Pro Bugfix: RTSP can now successfully select tracks numbers 10 and higher
- Bugfix: Fixed MP3 input timestamps
- Bugfix: Pushed input sometimes dropped several packets depending on input timestamps - not any more
- Bugfix: Web interface no longer rejects new triggers when no triggers previously configured
- Bugfix: Web interface now correctly saves when pushing save on the overview page
- Bugfix: Several (other) small fixes to embed code and web interface
- Bugfix: Fixed pointer overflow issues when handling corrupted H.264 SPS/PPS data
- Bugfix: Controller no longer freezes when interrupted during first-time setup
- Bugfix: Fixed VoD output with more than 5 simultaneously active tracks
2.11 (Stable Release)
- Pro Feature: Access logs
- Pro Feature: UDP-based API access added, localhost-only on UDP port 4242
- Pro Feature: Session tagging
- Pro Feature: Automatic user-agent session tagging
- Pro Feature: Added PCM A-law audio support to RTSP input and output
- Pro Feature: Added RIFF format analyser
- Pro Feature: ".wav" output support, PCM A-law and MP3 codecs supported
- Pro Feature: HLS input support (both from file and from URL)
- Pro Feature: RTSP input and output now support de Opus audio codec
- Feature: Ogg input and output now support the Opus audio codec
- Pro Improvement: prometheus setting can now be changed during runtime through the API
- Pro Improvement: Session cache is now wiped much faster when playback was denied
- Pro Improvement: Built-in updater no longer blocks API access while running, can now perform rolling updates without disconnecting users
- Pro Improvement: RTMP push output now only interprets and strips the last "?" encountered in targets
- Pro Improvement: Tweaked timing of RTMP push output, now works correctly with YouTube live
- Improvement: Console output is now colour-coded for better visibility
- Improvement: Local API access no longer requires authorization
- Improvement: Tweaked levels of debug messages for better usability
- Improvement: Overhaul on all Analysers, now all standardized in usage
- Improvement: Added v2 API, which always returns minimized-style output
- Improvement: Backported many previously Pro-only API calls to the OS edition (see manual for details)
- Improvement: Many improvements to the web interface
- Improvement: Added "iid" (instance ID) to API config responses, to differentiate between instances
- Improvement: Most API calls now automatically remove invalid data and are more robust
- Improvement: Configuration file is now stripped of runtime status info, and much smaller as a result
- Bugfix: ".html" access to streams now works correctly when used behind a proxy
- Bugfix: Pushed inputs no longer confuse tracks with each other sometimes
- Bugfix: PCM A-law support in FLV/HDS/RTMP inputs and outputs now works
- Bugfix: MP3 support in FLV/HDS/RTMP outputs now works correctly
- Note: Web interface now calls google analytics. To disable, simply configure your browser to send a Do-Not-Track header.
2.10.1 (Bugfix Release)
- Bugfix: Fixed overview screen in web interface not working in open source edition.
2.10 (Stable Release)
- Feature: Idle connections now automatically time out after 5 minutes of inactivity
- Feature: Added the -N option to MistOut processes, which will prevent new MistIn processes from spawning when used
- Feature: Added H265 support to the TS analyser
- Feature: Meta player now detects when streams go live when they were offline and reloads
- Pro Feature: Prometheus-style main bandwidth statistics no longer measure localhost traffic
- Pro Feature: RTSP input now supports missing VUI parameters (framerate autodetection)
- Pro Feature: Added support for RTSP input FU-A frames with Annex B data inside SPS NAL units
- Pro Feature: RTSP input now supports receiving SPS/PPS updates after the stream already started
- Pro Feature: Added H264 analyser tool
- Pro Feature: Better support for HTTP forward-proxying through HTTP public-address option
- Pro Feature: Added LIVE_BANDWIDTH trigger
- Improvement: Faster recovery of existing sessions when restarting the Controller
- Improvement: Speed-ups to all MP4-related features
- Improvement: Outputs no longer wait for data on non-live streams
- Improvement: Full Unicode (UTF-8 / UTF-16) support
- Improvement: Rewrote the internals of the push input handler
- Improvement: Better volume controls in the meta-player
- Improvement: Various other improvements to meta-player
- Improvement: Significant speed improvements to FLV file input
- Improvement: Added no-cache headers to all HTTP outputs
- Improvement: Better handling of static HTTP outputs and offline streams
- Pro Improvement: RTSP live output now attempts to sync up to the live point as much as possible
- Pro Improvement: RTSP UDP now uses ephemeral ports, preventing socket collisions
- Pro Improvement: Major reduction of CPU time for MP4 live output
- Bugfix: Several multi-second slowdown problems fixed when starting streams and/or the controller
- Bugfix: The JSON output no longer produces invalid syntax when returning an empty result
- Bugfix: Various fixes to UDP sockets, especially when using multicast UDP
- Bugfix: Fixed Windows builds incorrectly sizing RAM for certain VoD streams
- Bugfix: Fixed MP4 output not working for large VoD files
- Bugfix: Apple/iOS support for MP4 VoD
- Bugfix: Fixed MP3 file input seeking
- Bugfix: Fixed live streams when hosting on Windows
- Bugfix: Immediately restarted pushes now correctly handled instead of silently ignored
- Bugfix: Several small bugfixes for MistServer's internals
- Pro Bugfix: Fixed Prometheus-style statistics sometimes holding invalid values
- Pro Bugfix: Fixed Opera support for MP4 live streams
- Pro Bugfix: Fixed video-only MP4 live streams in Chrome
- Pro Bugfix: Fixed RTSP input not counting as an input
- Pro Bugfix: Fixed RTSP UDP input/output not counting bytes sent/received correctly in statistics
2.9 (Stable Release)
- Feature: TS SDT tables implemented
- Feature: Implemented ES_Rate in PES packets in TS outputs
- Feature: VideoJS player added to the meta-player
- Feature: Added ability for the controller to restart without closing listening protocols
- Pro Feature: Added RECORDING_END trigger
- Improvement: Better signal debug messages
- Improvement: Various improvements to TS output internals
- Improvement: Many small improvements to the meta player
- Improvement: RTMP timestamp checks are now track-specific, allowing a wider range of RTMP inputs to work
- Improvement: Removed several unnecessary semaphore locks, improving loading times
- Improvement: Added RelAccX class for generic forward/backward compatible memory storage
- Improvement: Faster controller shutdown speed
- Improvement: Cleaned up / corrected CMakeLists.txt file
- Pro Improvement: TS Analyser made much more powerful
- Pro Improvement: Added support for Firefox to MP4 live output
- Pro Improvement: Made behaviour of RTMP_REWRITE trigger for invalid responses more intuitive
- Pro Improvement: MP4 live protocol no longer randomly disconnects/reconnects
- Pro Improvement: MP4 live protocol end-to-end latency reduced to 5-8 seconds for practically all stream types
- Bugfix: The sourcery utility now handles UTF-8 correctly
- Bugfix: Fixed RTMP support for audio-only and video-only streams
- Bugfix: Fixed stuck socket problem in controller / improved shutdown speed
- Bugfix: DTSC pull now supports receiving multiple ping message in a row
- Bugfix: Improved recovery of statistics data after a controller reload or crash
- Bugfix: Fixed favicon URL not working in some cases
- Bugfix: Stalled message in embed code no longer shows up when it shouldn't
2.8.2 (Bugfix)
- Fixed a free-edition-only bug with MP4 playback. Again.
- Pro edition is identical to 2.8 release. Again.
2.8.1 (Bugfix)
- Fixed a free-edition-only bug with MP4 playback
- Pro edition is identical to 2.8 release.
2.8 (Stable Release)
- Feature: DTSC pull input now allows selection of all buffer process parameters
- Pro Feature: Added support for track selection in RTMP push output
- Pro Feature: Added native HTTPS output support
- Improvement: Re-ordered Flash protocol priorities to RTMP > FLV > HDS
- Improvement: RTMP output now supports audio/video URL parameters besides the existing track parameter
- Improvement: Better detection of minimum buffer size for working output on all protocols
- Improvement: Significant improvements to FLV input speed
- Improvement: Better buffer behaviour for faster-than-real-time streams, making them playable
- Improvement: Speed improvements to shared memory counters
- Improvement: HLS output much more reliable and faster.
- Improvement: Optimized output waiting algorithm when input is slow
- Improvement: Significant speed boost to all TS-based outputs
- Improvement: Fixed compiling under Cygwin/Mac
- Improvement: IPv6 now re-enabled under Cygwin
- Improvement: RTMP pushes are now automatically disconnected when timestamps become nonsensical
- Improvement: Live metadata header size increased from 4MiB to 16MiB, allowing for larger live streams (longer buffers, more simultaneous tracks)
- Improvement: FLV input now shuts down (and auto-restarts if needed) when the source file is changed
- Improvement: Added crash handler for pull-mode inputs
- Improvement: Robustified live packet handling
- Improvement: Various improvements and fixes to the integrated web interface
- Pro Improvement: Manually started pushes now check for duplicates before starting
- Pro Improvement: (Automatic) pushes now recover automatically after controller crashes or restarts
- Pro Improvement: DASH output much more stable and faster
- Pro Improvement: The USER_NEW trigger is now instantly resolved for existing sessions
- Pro Improvement: DTSC analyser in compact mode now more accurate and detects/advises on possible stream problems
- Pro Improvement: STREAM_BUFFER trigger now reports a JSON blob with stream information and possible issues
- Pro Improvement: Prometheus-style statistics now contain per-protocol gauges
- Pro Improvement: Rolling restarts now maintain statistics better across instances
- Bugfix: Fixed reboot loop when aborting controller startup
- Bugfix: Fixed HDS manifest bit rate reporting
- Bugfix: Fixed a memory leak when receiving looped data at a memory page boundary
- Bugfix: Fixed outputs sleeping forever when timestamps jumped by large amounts
- Bugfix: Fixed a null pointer dereference when dropping tracks
- Bugfix: Fixed disconnect bug when a track did not receive packets for ~16 seconds
- Bugfix: RTMP output now correctly zero-bases timestamps
- Bugfix: HTTP-based outputs now send correct amount of newlines when finishing a response
- Bugfix: Fixed HTTP TS content type
- Bugfix: Fixed DTSH version writing bug
- Bugfix: Fixed several rare segmentation faults
- Bugfix: HLS packets are no longer unnecessarily discontinuous
- Bugfix: Login attempts for non-existent accounts no longer alter the server configuration file
- Bugfix: Fixed off-by-one-frame time stamp errors in all near-live outputs
- Bugfix: Manual track selection for outputs ignored some track/codec combinations in favour of others
- Bugfix: HLS output no longer ignores Connection: close header
- Pro Bugfix: Fixed DASH manifest bit rate reporting
- Pro Bugfix: Fixed triggers doing a prefix-match on stream names instead of a full match
- Pro Bugfix: When startInput is called directly by an input, no longer check limits/triggers
- Pro Bugfix: Fixed stats when connections were switching quickly
- Pro Bugfix: Removed extra newline from STREAM_READY trigger
- Pro Bugfix: Fixed semaphore locking issue with HTTP stream access to Pro-based releases
- Pro Bugfix: Fixed RTSP start timing for live streams for specific combinations of stream config and client
2.7 (Stable Release)
- Feature: Added the ability to pass on track language tags for MP4 and TS inputs/outputs
- Feature: JSON output now supports pseudostreamed live mode
- Feature: Added ISO639-2 decoding in JSON-formatted metadata outputs
- Feature: Added an angel process that watches over the MistController, making init-based setups much more reliable
- Feature: Added a new meta-player that auto-detects the best protocol for a given stream and device combination.
- Pro Feature: MP4 input now reads TTXT subtitle tracks
- Pro Feature: RTSP input now supported
- Pro Feature: Load balancer weights can now be set manually
- Pro Feature: Controller can now restart and/or update without losing prometheus-style statistics information
- Pro Feature: TS file input can now optionally pseudostream files and devices, treating them as live
- Pro Feature: Added new "stop sessions" API call to disconnect/stop sessions selectively by stream or type
- Improvement: The initd script was made more portable
- Improvement: HLS buffer size optimizations
- Improvement: The deprecated startpos setting has been removed (optimal value now autodetected)
- Improvement: Browsing for files through the web interface now more robust
- Improvement: Packets with invalid timestamps are now ignored in all (both VoD and live) inputs
- Improvement: Memory pages now limited to ~1 minute per track, decreases shared memory usage
- Improvement: Added a performance timer on debug level 4 for page loading
- Improvement: ADTS parsing improvements as well as other TS-related robustness additions, improving packet loss handling and corrupt packet handling
- Improvement: TS output now fully HBBTV compliant
- Improvement: SRT and MP4 outputs now send CORS headers
- Improvement: Buffering behaviour tweaked to prevent eternal buffering screens in some players
- Improvement: Many stability and verbosity tweaks throughout all DTSC, RTMP and buffer code
- Improvement: Fixed support for non-HTTP/1.1 compliant devices pulling HTTP TS output
- Improvement: Buffer process can now detect certain deadlocks and escape from them
- Improvement: Increased DTSC packet wait timeout duration
- Improvement: DTSC pull now has a keepalive signal for slow sources
- Improvement: Fixed strict compliance with RTMP v3 clients (e.g. Mishira)
- Improvement: Better restarting behaviour, allowing manual rolling restarts/updates of any executable
- Improvement: Better handling of corrupted VoD asset headers
- Improvement: XSplit RTMP clients now spam the logs much less
- Improvement: Better timeout handling for slow inputs
- Improvement: Added dtsh file versioning, switch to "bigMeta"-style builds by default
- Improvement: Made header debug messages for VoD streams less spammy in most cases
- Improvement: More compatible UDP socket implementation
- Improvement: Updated web interface to be more modern and more user-friendly.
- Pro Improvement: Added several "stop all" buttons to the push output web interface
- Pro Improvement: Recording to file will no longer overwrite existing files with empty files if recording was aborted during start
- Pro Improvement: DTSC inputs/outputs can now (re-)add (new) tracks on the fly
- Pro Improvement: FLV output can now (re-)add (new) tracks on the fly
- Pro Improvement: RTSP output compatibility increased
- Pro Improvement: Load balancer can now properly ignore nonsensical values returned by servers
- Pro Improvement: MistInTS and MistInTSStream are now merged into a single binary
- Pro Improvement: TS UDP input now much simpler to set up, made autostarting optional
- Bugfix: Fixed various RTMP protocol corruption bugs
- Bugfix: All Flash-supported codecs now function equally well again
- Bugfix: TS-based outputs can no longer use reserved PIDs
- Bugfix: Fixed Windows builds having abnormally long loading times
- Bugfix: TS PMT entry size corrected
- Bugfix: Fixed several 2.6.X-version TS regressions
- Bugfix: Web interface no longer crashes when previewing folder streams
- Bugfix: Fixed real-time playback of VoD streams that did not start at a zero timestamp
- Bugfix: WebVTT output now compliant with WebVTT spec again
- Bugfix: Fixed controller crash if shared memory was not writable
- Bugfix: Outputs no longer cause a segmentation fault on page load failures
- Bugfix: Embed code and web interface now correctly support international characters/symbols
- Bugfix: Fixed RTMP output not shutting down correctly after playback
- Bugfix: RTMP streams no longer have problems initializing after 5 hours
- Bugfix: Better JWPlayer play/pause compatibility for RTMP outputs
- Bugfix: Fixed support for VoD assets with a > 8 MiB header size
- Bugfix: Fixed crash when push inputs reconnected very quickly
- Bugfix: Fixed seek-to-end issues with very near-live outputs
- Bugfix: Fixed segmentation fault when no outputs were installed/available
- Bugfix: TS input from stdin no longer drops packets randomly
- Bugfix: Fixed 100% CPU usage on DTSC inputs with invalid source
- Bugfix: Fixed FLV input crash on some single-track files
- Bugfix: Fixed crashes caused by corrupted header files
- Bugfix: Fixed slow VoD loading causing 100% CPU usage in some cases
- Bugfix: Fixed input parameters being ignored in many cases
- Bugfix: Patched a race condition in tinythread library
- Pro Bugfix: The + symbol can now be used in filenames in folder streams
- Pro Bugfix: Fixed sometimes missing BUFFER EMPTY trigger
2.6.1 (Bugfix Release)
- Pro Feature: RTMP output and RTMP push output can now (re-)add (new) tracks on the fly
- Improvement: Corrected various small typos
- Improvement: Better default start positions for live streams
- Improvement: Better waiting/loading behaviour for live streams
- Improvement: Inputs now buffer data during negotiation, instead of discarding it
- Improvement: Live buffers now auto-resize to make HLS work, regardless of keyframe interval settings
- Improvement: Better auto-detection of dropped tracks
- Improvement: Config interface: preview sizing and positioning improvements
- Pro Improvement: MP4 live is now less delayed
- Bugfix: Fixed memory corruption bug during seeking in live streams
- Bugfix: Socket data counters are now 64 bits
- Bugfix: Fixed slow loading issue for integrated embed code and preview features
- Bugfix: Fixed VoD slow loading issue for all outputs
- Bugfix: Config interface: no longer show version as non-latest when latest
- Bugfix: Config interface: no longer double-confirms when submitting a form with return key
- Pro Bugfix: Now nulling packet on auto-reconnect to source.
- Pro Bugfix: Fixed RTMP push output failing if streams took long to initialize
- Pro Bugfix: Fixed bandwidth sometimes being inaccurate for prometheus-style statistics
2.6 (Stable Release)
- Feature: A bash helper for easily making API calls from command line is now available in the source repository
- Feature: DTSC pull support, allowing extremely efficient pulling of live streams from MistServer Pro sources
- Pro Feature: Added USER_NEW trigger, allowing for atomic approval or rejection of entire sessions
- Pro Feature: The activestreams and statsstreams API calls have been given new functionalities and better precision
- Pro Feature: Added instrumentation for both Prometheus-style and JSON-style statistics gathering
- Pro Feature: On request, our experimental load balancing algorithm is now available
- Pro Feature: DTSC output support, for pulling and other automation purposes
- Pro Feature: Both automated and manual recording of streams to FLV, TS and MP3 formats is now available
- Pro Feature: Added generic interface and API calls for all future and current recording and push output types
- Pro Feature: RTMP push output
- Pro Feature: FLV output can now output latest key frame for streams over command line, for thumbnailing purposes
- Pro Feature: Sessions are now split over viewer sessions, incoming sessions and outgoing sessions, allowing for accurate human viewer counts
- Pro Feature: RTMP input rate-limiting (off by default)
- Pro Feature: Max simultaneous connections per IP address setting
- Pro Feature: MistAnalyserDTSC now has a --compact flag for automated parsing of output
- Pro Feature: Added STREAM_BUFFER DRY and RECOVER states, for detecting lag on incoming connections
- Pro Feature: Added invalidate_sessions API call, for invalidating all current sessions for a specific stream, allowing conditional disconnecting of existing sessions on request
- Pro Feature: RTMP outputs can now add audio/video tracks that become available after playback has started
- Improvement: HLS playback stability improvements
- Improvement: Resume support is now disabled by default (makes restarting live streams faster)
- Improvement: Resume support is now also an option in the open source edition
- Improvement: MP4 playback in Firefox now works in more cases
- Improvement: Configuration interface compatibility with Edge browser has been improved
- Improvement: RTMP and FLV inputs are now able to (re-)create missing initialization data if needed
- Improvement: Various encoding and decoding helper functions have been split off into a separate library
- Improvement: Fixed statistics subsystem not deleting some stats data when it should (fixes a small memory leak)
- Improvement: Current CPU usage in percent is now reported by capabilities API and displayed in configuration interface
- Improvement: iOS devices can now be told apart by the X-Playback-Session-Id header
- Improvement: In the event of crashes, live buffers now automatically clean up any left over data in memory
- Improvement: Dropped tracks due to inactivity can now be re-added when they become active again
- Improvement: Various waiting times and other delays have been shortened, improving overall responsiveness
- Improvement: All components can now auto-recover from earlier crashes properly
- Improvement: Incoming live source negotiation has been significantly sped up
- Improvement: Verbosity levels of various debug output settings tweaked for usability
- Improvement: HDS and RTMP outputs have had their priorities swapped for better user experience
- Improvement: Most outputs will now pause and wait for streams to become fully available, instead of aborting
- Improvement: Tweaked default sizes for various shared memory data pages
- Improvement: Generic output loop has been optimized for less CPU usage
- Improvement: The standard install prefix is now /usr (still user-override-able)
- Improvement: New and improved systemd service file
- Pro Improvement: STREAM_BUFFER now no longer triggers at 50% of buffer, but at 3 segments
- Pro Improvement: MP4 input header parsing significantly sped up
- Pro Improvement: DASH playback now compatible with practically all players
- Pro Improvement: Most API calls for stats now by default lag behind 15 seconds as opposed to 2, to improve accuracy
- Pro Improvement: Most API calls now only count sessions after they have send or received at least 128k of data
- Pro Improvement: HLS output now sets unique session IDs on each distinct playback session
- Pro Improvement: The stats delay can now be changed with a compile flag, allowing per-customer defaults
- Pro Improvement: The media data page size can now be changed with a compile flag, allowing per-customer defaults
- Pro Improvement: The limits API and interface have been deprecated and their functionality is now replaced by triggers
- Bugfix: Fix various shared memory leaks and improved auto-clean-up algorithms
- Bugfix: Fixed new streams not being named correctly
- Bugfix: Fixed sessions not being deleted in the controller (fixes a small memory leak)
- Bugfix: RTMP input and output now urlunescape playback paths, fixing XSplit compatibility
- Bugfix: Fixed support for X-Real-IP headers
- Bugfix: Listening sockets are now closed when forking processes, freeing listening ports for new listens much earlier than before
- Bugfix: Fixed various segmentation errors and race conditions in the buffer and controller
- Bugfix: Fixed IP address of clients not being set correctly in all cases
- Bugfix: MP4 ouput byte-precise seeking has been fixed
- Bugfix: Configuration interface no longer crashes when no folder-streams are set up
- Bugfix: Fixed TS-based outputs buffer overflow
- Bugfix: Fixed stream name corruptions in statistics
- Bugfix: Various thread-safety improvements
- Bugfix: Fixed active connections being reset in stats every ~10 minutes
- Bugfix: Fixed various time-outs in outputs, making playback during high server load more reliable
- Bugfix: Fixed a long-duration RTMP input timing bug
- Bugfix: Fixed various IPv6 IP address compatibility issues (hostnames were unaffected)
- Pro Bugfix: RTSP timestamps corrected
- Pro Bugfix: MP4 input now correctly retrieves video resolution in all cases
- Pro Bugfix: MP4 input can now correctly handle negative frame offsets
- Pro Bugfix: Triggers now pass through all internal and external GET parameters present in playback URLs
- Pro Bugfix: TS input stability improvements
2.5.3 (Bugfix Release)
- Feature: NGINX proxy support
- Feature: Recording support
2.5.2 (Bugfix Release)
- Improvement: Improved UDP socket binding robustness
- Improvement: Better CORS header support
- Improvement: Removed unused code
- Improvement: Various minor improvements
- Pro Improvement: Added PUSHREWRITE and STREAMBUFFER triggers
- Pro Improvement: Added minimal flag in API for requesting minimal responses
- Bugfix: Fixed the ability to disable video or audio tracks in HTTP outputs
2.5.1 (Bugfix Release)
- Improvement: Various minor improvements
2.5 (Stable Release)
- Note: Old Makefile no longer supported
- Pro Feature: Trigger support
- Improvement: Aspect ratio now works through mp4
- Improvement: Various LSP improvements
- Improvement: JSON library definition is now no longer recursive
- Pro Improvement: TS Input support improved
2.4 (Stable Release)
- Note: We now have a bigmeta version which consumes more memory but allows for longer streams
- Pro Feature: Added Minimal HTTP webserver
- Pro Feature: Added PlayReady/Verimatrix DRM support
- Pro Feature: Added HEVC support in MP4
- Pro Feature: Added MP4 Live streaming
- Pro Feature: Added TS Input Support
- Improvement: Improved MPEG-DASH compatibility
- Improvement: Various minor improvements
- Pro Improvement: Allow for setting MP4 playback speed
- Pro Bugfix: RTSP now works with folder and wildcard support
- Bugfix: Reconnection of an output now happens correctly
- Bugfix: Fixed a race condition in VoD scenarios
2.3.1 (Bugfix Release)
- Note: Recording temporarily disabled
- Pro Feature: Added CORS headers to DASH output.
- Pro Feature: The error text for an unvailable stream is now configurable
- Improvement: Improved shared memory handling for windows
- Improvement: Removed various parts of legacy code
- Improvement: Increased the maximum number of simultaneously selected tracks
- Improvement: Various improvements for the LSP
2.3 (Stable Release)
- Note: CMake is now used as the main build system
- Note: Mist library is no longer a separate repository
- Note: MistInfo is removed
- Feature: Added an mp3 input
- Improvement: Split of generic input/output code to io files
- Improvement: Various optimizes RTMP output and analyser code
- Pro Improvement: AC3, MP3 and generic optimizes for MP4 Input
- Bugfix: Various bug fixes
2.2.1 (Bugfix Release)
- Note: Default buffer size changed from 30s to 50s
- Note: Outdate converters removed
- Improvement: Unified TS protocol implementation
- Improvement: Improved linux signal handling
- Improvement: Statistics kan now properly timeout
- Bugfix: Fixed high CPU usage in HTTP connector
2.2 (Stable Release)
- Feature: New LSP code
- Feature: Better statistics
- Feature: Added API call for storing and retrieving interface settings
- Improvement: Various optimizations for playback through VLC
- Improvement: Re-enabled OGG support
- Improvement: Improved 'conversion mode' for inputs
- Improvement: Buffer position for live streams now more sensible
- Improvement: Added keysizes to metadata
- Improvement: Added failsaves against metatdata corruption for VoD
- Improvement: HTTP based outputs updated to new mechanism
- Improvement: Automatic input selection based on capabilities
- Improvement: Improved on debug message clarity and debug levels
- Improvement: Various minor optimizes
- Bugfix: Fixed a memory leak on shared pages not being removed
- Bugfix: Fixed a memory and filedescriptor leak in RTMP
- Bugfix: Fixed steam info javascript page
- Bugfix: Various fixes for HLS
- Bugfix: Various bug fixes
2.1.4 (Bugfix release)
- Bugfix: Hotfix for HLS and TS over HTTP
2.1.3 (Bugfix release)
- Feature: Added file browsing to LSP
- Feature: Added support for streaming TS over HTTP
- Improvement: HLS and HSS segments are now no longer generated at realtime speed.
- Improvement: HLS now generates crossdomain.xml
- Improvement: Various speed-ups for the analysers.
- Improvement: Various protocols now also support MP3 audio
- Improvement: Various LSP improvements
- Bugfix: Fixed some bugs in statistics
- Bugfix: Internal request now no longer trigger an infinite loop
- Bugfix: Non-h264 video now works in flash-related protocols
- Bugfix: Various bug fixes
2.1.2 (Bugfix release)
- Note: Conversion API temporarily disabled while we work on improvements.
- Feature: MistController is now multi-threaded.
- Improvement: Windows and Mac VoD streams fully operational again.
- Improvement: RTMP analyser no longer shows errors at end of stream.
- Improvement: Tweaked verbosity and wording of various debug messages.
- Improvement: Improved accuracy of several timers.
- Improvement: MistIn processes now correctly obey global debug level setting.
- Bugfix: Fixed single-track streams in the HLS protocol.
- Bugfix: HLS live no longer shows unreliable fragments in the index.
- Bugfix:Fixed stream start-up causing random stability issues.
- Bugfix: Fixed RTMP delta timestamps.
2.1.1 (Bugfix release)
- Improvement: Added more debug messages relevant to certain debug levels.
- Improvement: Added dual-stack support to Windows builds. Windows builds will now correctly listen on both IPv4 and IPv6 when the OS and network support it.
- Improvement: Improved support for Fedora, Slackware and other related Linux distributions.
- Improvement: Various other small tweaks and fixes.
- Bufgix: Fixed semaphore file handle leak.
- Bugfix: Fixed timeout problems in output connectors.
- Bugfix: Fixed various bugs in Windows and MacOS builds.
2.1 (Stable release)
- Feature: Added debug level setting.
- Feature: SMIL support added
- Pro feature: Added support for MP4 and TS input
- Improvement: HTTP proxy rewrite.
- Improvement: Library version numbers now equal to server version number.
- Improvement: MistServer Management Interface includes more statistics
- Improvement: DTSH files now auto-update.
- Improvement: Cleaned up debug messages.
- Improvement: Improved Windows capabilities
- Improvement: Memory optimizations for various protocols.
- Improvement: Stabilized RTMP pushes.
- Improvement: Various bug fixes
- Pro improvement: Improved Live Multibitrate support
- Pro improvement: Improved the experimental MistInAV connector
2.0.2 (Bugfix release)
- Pro feature: Added experimental MistInAV
- Improvement: Updated libmist to version 8.0.2
- Improvement: Windows version now available.
- Improvement: RTMP stability improved
- Improvement: Improved seeking function
- Improvement: Improved HTTP Dynamic protocol
- Improvement: Management Interface improvements
- Improvement: Several other minor bugfixes
- Pro improvement: Limits now function again
- Pro improvement: Recording now works properly
2.0.1 (Bugfix release)
- Note: Mac Version now available.
- Improvement: Updated libmist to version 8.0.1
- Improvement: Updated help function for Management Interface.
- Improvement: Improved Memory management.
- Bugfix: Fixed custom stream properties which caused programs like FMLE & XSplit to be unable to push to MistServer.
- Bugfix: Fixed header handling for Management Interface.
- Bugfix: Fixed incorrect buffer times when left empty within Management Interface.
- Bugfix: Fixed an RTMP end of stream error in VoD streaming.
- Bugfix: Fixed audio page handling for live streams.
2.0 (Stable release)
- Note: Daemonizing no longer standard
- Feature: Added native support for FLV
- Feature: More calls to API for better statistics
- Feature: Init and systemd service files
- Feature: Support for log files
- Pro Feature: Added native support for ISMV
- Improvement: Updated libmist to version 8.0.0
- Improvement: Tremendously increased CPU and Memory performance and stability
- Improvement: Improved Management Interface
- Improvement: Changed converters to MistIn
- Improvement: Changed names of the in/outputs to better fit what they do
- Improvement: Embed code works without compiling with Java
- Improvement: Several minor bugfixes
1.3 (Stable release)
- Feature: Added option to create initial login through web interface
- Improvement: Updated libmist to version 7.0.0
- Improvement: Switched from automake to plain make.
- Improvement: Completely rewritten and redesigned the web management interface.
- Improvement: Metadata efficiency upgrade, streams now use significantly less memory.
- Improvement: DTSC file format efficiency improvements.
- Improvement: Improved Ogg format handling, added live support.
- Improvement: Improved progressive MP4 performance.
- Improvement: Improved HTTP Smooth Streaming performance.
- Improvement: Improved multi-bitrate support for all protocols.
- Improvement: Improved stability and performance for live streams
- Improvement: Dozens of other bug fixes and minor improvements.
- Bugfix: Fixed RTMP live stream resetting problems.
1.2.1 (Bugfix release) ##
- Improvement: Updated libmist to version 6.1.0
- Improvement: Improved Network Efficiëncy of internal formats
- Improvement: RTMP Analyser output has better readability
- Improvement: Improved readability and maintainability of MistBuffer code
- Improvement: Minor RTMP optimises
- Bugfix: Fixed CPU usage problems for the MistBuffer
- Bugfix: Fixed FMLE sync problems
- Bugfix: Dyamic naming bug fixed
- Bugfix: Repushing bug fixed
1.2 (Stable release)
- Feature: Added automatic running of MistDTSCFix.
- Feature: Added a warning/notification if H264 data is not baseline 3.0.
- Improvement: Dozens of general bugfixes and optimizations.
- Bugfix: Now discovers the tmp folder in a cross-platform way, auto-creates mist folder inside it if necessary.
- Bugfix: .exe extension now properly handled, if used.
- Bugfix: Fixed several race conditions in the HTTP proxy.
- Bugfix: Fixed several segmentation faults in the HTTP proxy.
- Bugfix: Re-enabled H263 and VP6 codecs in FLV connector.
- Bugfix: Reduced log duplicity.
- Bugfix: JSON interfaces now properly handle all binary data in strings.
1.2 RC1 (Release candidate)
- Note: OGG video corruption / audio desync
- Note: Conversion API may not detect installed encoder(s) correctly.
- Feature: Added multibitrate support.
- Feature: Added a Conversion API.
- Feature: Added HTTP Progressive connector for MP4.
- Feature: Added HTTP Progressive connector for OGG.
- Feature: Added HTTP connector for SRT and WebVTT.
- Feature: Added a connector for obtaining metadata/subtitles in JSON format.
- Feature: Added support for HTTP chunked encoding in the internal HTTP proxy.
- Feature: Added auto-detection of connectors and their capabilities.
- Feature: Added configuration location option to controller
- Improvement: Updated libmist to version 6.0.0
- Improvement: Updated the internal DTSC format to version 2.
- Improvement: Split up HTTP Progressive into multiple connectors.
- Improvement: Updated the embed code to automatically pick the optimal protocol depending on stream parameters and installed plugins.
- Bugfix: JSON toPrettyString no longer prints binary under rare certain circumstances.
- Bugfix: JSON library no longer mis-reads escape codes in JSON.
- Bugfix: General CPU usage decrease and other optimizations through all parts of MistServer.
- Bugfix: All proccesses shut down correctly and much faster now
- Bugfix: Massive speedups for segmented HTTP streaming (Dynamic, Live, Smooth)
1.1.2 (Bugfix release)
- Feature: Logs in the settings page can now auto-refresh.
- Improvement: Made log messages less verbose for trivial information.
- Bugfix: Generated embed code for live stream was fixed.
- Bugfix: iOS support for HLS fixed.
- Bugfix: Fixed preview button when using default ports for protocols.
- Bugfix: Fixed VoD stream status resetting/displaying improperly.
- Bugfix: Several other minor bugfixes
1.1.1 (Bugfix release)
- Improvement: Updated libmist to version 5.1.2 (backwards compatible with 3.X.X and up)
- Improvement: Improved FLV memory management robustness.
- Improvement: Updated tinythread version to 1.1
- Bugfix: Fixed a memory leak in FLV handling.
- Bugfix: Fixed Flash Media Live Encoder RTMP ingest.
- Bugfix: Live stream fragmenter timings improved.
- Bugfix: Fixed stack corruption problems in optionless binaries (converters).
- Bugfix: Fixed local settings page support for LTS releases and features.
- Bugfix: RTMP Analyser performance improved.
- Bugfix: Fixed Buffer multithreading problems.
- Bugfix: Fixed HTTP proxy multithreading problems.
- Bugfix: Simplified HTTP proxy thread and connection handling.
- Bugfix: Simplified Buffer thread and connection handling.
- Bugfix: Fixed RTMP ingest memory leak.
- Bugfix: Fixed several HTTP proxy memory leaks.
- Bugfix: Fixed Buffer not shutting down properly in some cases.
- Bugfix: Fixed deadlock if buffer is in the process of shutting down while a new user connects.
1.1 (Stable release)
- Feature: Added DVR support to live streaming and buffer time parameter.
- Feature: Added live support to HTTP Smooth Streaming.
- Feature: Added live support to HTTP Live Streaming.
- Feature: Added MP3 support to HTTP progressive.
- Feature: Added simple favicon to internal HTTP handler.
- Feature: Added support for FLV-based metadata packets.
- Feature: Added HTML5-only HLS (Apple devices only) and Smooth Streaming (Windows Phone and Windows 8 only) support to embed code generator.
- Improvement: Updated libmist to version 5.0.2 (backwards compatible with 3.X.X and up)
- Improvement: Simplified streaming source API.
- Improvement: Improved connector uplink support - still disabled by default.
- Improvement: Improved TS and HLS performance by a factor of 5-10.
- Improvement: DTSCFix binary will now automatically be run if needed - but can still be ran manually if preferred.
- Improvement: Added timing information to verbose mode messages of HTTP connector.
- Improvement: Toned down "default" and "verbose" verbosity levels to be more what one would expect.
- Improvement: Code cleanup and refactoring, improving performance, stability and readability.
- Bugfix: HTTP Dynamic Streaming now properly supports live streaming, instead of faking a VoD stream.
- Bugfix: All applications now properly clean up their child processes if they are supposed to.
- Bugfix: Fixed threading and segfault issues in Buffer process.
- Bugfix: Fixed AMF analyser no longer producing output.
- Bugfix: Fixed RTMP push input.
- Bugfix: Fixed VoD statistics problems
- Bugfix: Fixed controller reporting stream statuses wrongly and/or slowly.
- Bugfix: Fixed HLS audio desync problems.
- Bugfix: Fixed embed code generator problems.
- Bugfix: Cancelled HTTP requests no longer corrupt future requests.
- Bugfix: Most protocols will now no longer output channels if an unsupported codec is used for them.
- Bugfix: Added support for some older Adobe-based RTMP sources.
- Bugfix: Hundreds of other minor bugfixes
1.1pre (Preview release)
- Note: HTTP connector behaviour change - other HTTP handlers are now manually configured and started through the Controller process.
- Note: Binaries now no longer all have to be in the PATH to work (but need to be all in the same folder).
- Feature: Added capability detection to Controller with processor, memory, load and supported protocol information.
- Feature: Added HTTP Smooth Streaming support and connector (VoD-only).
- Feature: Added HTTP Live Streaming (HLS) support and connector (VoD-only).
- Feature: Added raw MPEG2 TS support and connector.
- Feature: Added DTSC to TS converter.
- Improvement: Updated libmist to version 4.0.1 (backwards compatible with 3.X.X)
- Improvement: Updated local settings page (LSP) with support for latest API changes.
- Improvement: Updated MP4 analyser with support for the most used boxes.
- Improvement: Code cleanup and refactoring, improving performance and stability.
- Bugfix: Added support for clientaccesspolicy.xml requests.
- Bugfix: Fixed several CPU usage-related bugs.
- Bugfix: Fixed several segmentation faults in Buffer process.
- Bugfix: Fixed embed code generator using wrong default ports.
- Bugfix: Hundreds of other minor bugfixes
1.0.1 (Bugfix release)
- Bugfix: Fixed a HTTP bug causing some requests to never be answered
- Bugfix: Removed some debug output that was left behind.
1.0 (First public release)
- Feature: Added MP4 analyser
- Feature:Added support for VoD seeking to all protocols (MistPlayer binary).
- Improvement: Updated libmist to version 3.0.0
- Bugfix: Fixed several cygwin-related issues under Windows.
0.7
- Feature: Video on Demand support for all protocols.
- Feature: Added support for generating distribution packages.
- Feature: Added embed code generator.
- Improvement: Updated libmist to version 2.0.0
- Improvement: Code cleanup and refactoring, improving performance.
- Bugfix: Dozens of minor bugfixes
0.6
- Note: Removed ABST and MP4 analysers temporarily.
- Feature: Switched to new DTSC internal file format
- Feature: Added DTSC2FLV converter.
- Feature: Added FLV2DTSC converter.
- Feature: Added DTSCFix binary.
- Feature: Added FLV analyser.
- Feature: Added DTSC analyser.
- Feature: Added RTMP analyser.
- Feature: Added local settings page (LSP).
- Feature: Made live buffer process multithreaded.
- Feature: Code cleanup and refactoring, improving performance.
- Improvement:Switched to automake build system
- Improvement: Switched to our own JSON library implementation.
- Improvement: Moved libraries into separate libmist library (version 1.0.0).
- Improvement: Split HTTP connector into HTTP (basic reverse proxy), HTTPProgressive and HTTPDynamic.
- Bugfix: RTMP stability improvements.
- Bugfix: Default verbosity reduced from debugging level to release level.
- Bugfix: Hundreds of other minor bugfixes
0.5
- Feature: Added Controller process and remote administration API.
- Feature: Switched to our own socket library implementation.
- Feature: GET parameter support in HTTP libraries
- Improvement: Code cleanup and refactoring, improving performance.
- Bugfix: Dozens of minor bugfixes
0.4.3
- Featue: Added live HTTP Dynamic Streaming output to the HTTP connector.
- Bugfix: Connectors now properly clean up their child processes.
0.4.2
- Feature: Added support for host binding in all relevant binaries.
- Bugfix: Added support for both IPv4 and IPv6, single and/or dual-stack.
0.4.1 (First private release)
- Feature: Added ABST box analyser
- Feature: Added AMF analyser
- Feature: Added generic MP4 box analyser
- Feature: Support for live FLV input through stdin or RTMP
- Feature: Added live HTTP Progressive output in FLV format
- Feature: Added RAW output in FLV format
- Feature: Added live RTMP output with push support.