English
Release Notes
unreleased
New features
- MPEG-DASH recording: Mesio can now record MPEG-DASH (
.mpd) streams, both live and finished ones. Video and audio delivered separately are merged into one MP4 file. Choose the video and audio quality, audio language, where a live recording starts, and download limits on the new DASH tab of a Mesio engine, and adddashto Preferred Formats to prefer DASH when a platform offers it. Encrypted (DRM) streams are not supported, and the web player cannot play DASH streams. See MPEG-DASH recording. - TikTok DASH streams: TikTok live rooms now also list their MPEG-DASH streams, available for most qualities including audio-only. FLV is still preferred and recorded by default, even when a preferred quality is offered only as DASH; to record DASH with the Mesio engine, put
dashfirst in Preferred Formats for TikTok, a template or a streamer. See TikTok.
Recording and recovery
- Fixed Mesio refusing to record a stream whose address does not show whether it is HLS or FLV. It now uses the format the platform reports.
- Fixed Mesio sometimes leaving segments out of a recording of a finished HLS stream (a replay or VOD). When a segment downloaded slowly or had to be retried while many later ones finished, it was dropped and the recording still ended normally without it. This also applied to high-bitrate streams with large segments.
- Fixed Mesio leaving out repeated segments when recording a finished HLS stream (a replay or VOD). If a playlist listed the same segment more than once, only the last occurrence was recorded.
- Fixed Mesio hanging when recording a finished HLS stream (a replay or VOD) in fMP4 format that switches between more than eight different initialization segments: recording stopped at the first switch and never finished.
- Fixed live Douyin rooms being detected as offline, and so not recorded, when Force Mobile API is turned on or Douyin's mobile data is used because the web data is unavailable. In these cases the streamer's name and avatar, previously left empty, are now filled in too.
- When every segment of an HLS stream fails to download, Mesio now reports why, such as the HTTP status or a network error, instead of "stream is empty". When an fMP4 stream's initialization segment cannot be downloaded, Mesio stops downloading the media that depends on it, which could only be thrown away, so such an attempt ends sooner.
- Fixed Mesio ending HLS recordings, or leaving out segments, within seconds when the server asked it to slow down (HTTP 429 "Too Many Requests"). Mesio now pauses its requests to that server for as long as the server asks, up to a minute, and then resumes gradually instead of giving up after a few refused requests. See rate limiting.
- With HTTP Version set to Auto (the default), Mesio now downloads HLS and DASH over HTTP/2 when the server supports it and the connection does not go through a proxy, fetching segments faster over a single connection. Through a proxy, and for FLV recordings, Auto keeps using HTTP/1.1, which is more reliable there. HTTP/2 only now really uses HTTP/2 (it previously had no effect), so with it, recording from a server without HTTP/2 fails.
- Mesio's buffer size setting, now called Read Buffer Size on the FLV tab, takes effect for FLV recordings; it was previously ignored. Its default is now 64 KiB, the size FLV recordings have always used. Engines that still had the old 8 MiB default are switched to the new default when updating, so their recordings do not start using more memory.
- Fixed a stream that a platform lists without a quality name counting as a match for every entry in Preferred Qualities, so it could be recorded instead of the quality you chose.
- Fixed a live room whose streams are all on CDNs in Blacklisted CDNs being recorded from one of them anyway. Such a room is now treated as offline and a warning is logged.
- Fixed FFmpeg recordings that stopped because the disk was full not always being recognised as running out of space.
- Fixed Bigo rooms being shown as offline, and never recorded, when Bigo asked for a login, which it can do after many requests from the same network. Such checks now fail with a login-required error, and an account whose cookies stopped working is marked as needing a new login. Adding an account with cookies from a browser logged in to Bigo fixes it. See Bigo Live.
- Fixed a recording keeping its earlier title when the stream's title changed while the connection briefly dropped: the session page and the session's workflows used the earlier title, although the recording's new files were already named after the new one.
- Fixed a streamer whose error was cleared through the API or MCP, or which was waiting for an unavailable output folder that became writable again, only being checked again once its previous retry delay ran out. It is now checked right away.
- Clearing a streamer's error through the API or MCP no longer turns a disabled streamer back on or changes the state of a streamer that is live. Clearing the error of a streamer stopped by a fatal error, such as the room not being found, now resumes monitoring it; previously it was only checked again after rust-srec restarted.
- Fixed a recording streamer that was disabled and enabled again soon after sometimes no longer being checked or recorded, until it was disabled and enabled once more or rust-srec restarted.
Workflows and file processing
- Added the Full Processing (Single Pass) workflow. Like Full Processing, it remuxes to MP4, creates a thumbnail and uploads, but it writes the title, streamer and date while remuxing instead of rewriting the whole file in a separate metadata step. The new Include Recording Metadata option in remux settings (Advanced → Streams & Metadata) lets other remux steps do the same. Existing workflows are unchanged.
- Copy / Move steps now show their progress on the job page while copying, including moves to another drive or network share: percentage, amount copied and time remaining for the whole job, speed and, for several files, which file it is on (for example File 2 of 5). When such a step is cancelled, times out or rust-srec shuts down, the copy now stops promptly and its partial file is removed, instead of carrying on with the rest of the file in the background.
- A Copy / Move step whose copy is stuck on a disk or network share that stopped responding cannot be interrupted. It now keeps its worker until the file system answers, instead of carrying on in the background after its job ends, so other file jobs may wait in the queue. When such a copy is still running 30 seconds after its job was cancelled or timed out, a hard-drive icon appears in the top bar listing the affected jobs and how long each has not responded, the job's page shows Still holding a worker, and a warning is logged. See Unresponsive file operations.
- After rust-srec restarts from a crash, power loss or forced exit, unfinished temporary files that interrupted workflow steps left next to their outputs (named like
video.tmp-<id>.mp4) are now listed behind a file icon in the top bar and on the affected job's page, with their folder and size. Delete removes a file, Keep leaves it on disk and only takes it off the list, and Delete all removes them all. Finished outputs and original recordings are never listed or deleted. Only temporary files created after updating are tracked. See Partial files from interrupted jobs. - A workflow's progress now moves while its steps run, for steps that report progress such as remuxing, copying, compression and uploads, instead of only when a step finishes. Failed steps no longer count as progress, so a failed or cancelled workflow shows how much of it completed.
- Live progress of processing jobs is no longer written to the database several times a second, which cuts disk writes while jobs run and keeps progress updates flowing when the database is busy.
- Remuxing to MP4 now shows "Finalizing..." while the file is rewritten for fast start, instead of looking stuck at 99%.
- A job's progress, the top bar and workflow steps now show which file is being processed, and hovering the upload badge on a streamer's card shows the file being uploaded.
- rclone and Baidu Netdisk uploads now note each retry in the job log and show which attempt is running in the job's progress, the top bar and the streamer's card. rclone uploads also show the file being sent.
- Baidu Netdisk uploads now show progress for the whole job (bytes, files and the file being uploaded) instead of starting over for each file, update it more often, and show "Preparing…" while they prepare files before sending them.
- Compression jobs now show their speed and time remaining, and converting several danmu files shows which file it has reached.
- Fixed a workflow step losing its scheduled automatic retry when rust-srec stopped just as the step failed; the workflow was then marked failed on the next start.
- Fixed the confirmation after cancelling a workflow not counting a step that was waiting for its automatic retry.
- Fixed a ZIP or tar.gz compression step that was cancelled, timed out or interrupted by stopping rust-srec leaving a CPU core fully busy in the background, which could also keep rust-srec from exiting.
- Fixed rclone uploads that start at the same time, such as a recording's video and its danmu, creating two folders with the same name on remotes that allow this, such as Google Drive, and splitting the uploaded files between them.
- Fixed rclone's Max Retries setting having no effect: uploads always made 3 attempts. The Rclone Executable field, which was also ignored, is removed; rust-srec still runs
rclonefrom the system path, or the program set in theRCLONE_PATHenvironment variable. - Fixed saving a native-resolution thumbnail preset, such as the built-in Native Resolution Thumbnail, or a workflow step made from one with Detach & Edit, silently making its thumbnails 320 pixels wide. Thumbnail settings now have a Native resolution switch. Presets and steps already changed this way are not repaired: turn the switch on and save them again. The Output Pattern (Optional) field, which had no effect, is removed.
- Fixed a Baidu Netdisk upload that failed while sending a file sometimes showing only that the file was on BaiduPCS-Go's list of failed uploads instead of why it failed; BaiduPCS-Go's own retry notices were also missing from the job log.
- Fixed Baidu Netdisk uploads that wait for another upload to finish using up their timeout and holding up other file jobs such as copies, deletions and rclone uploads. Waiting uploads now stay in the queue, shown as queued uploads in the top bar, and their timeout starts only when they start running. Baidu Netdisk uploads also no longer count toward Max IO Jobs.
- Fixed Audio Extract steps replacing an existing audio file even with Overwrite turned off. Such a step now fails instead, like remuxing.
- Fixed Audio Extract steps on a recording without audio, and Thumbnail steps on a recording without usable video, sometimes failing instead of passing the recording on unchanged.
Notifications
- Fixed webhook channels created or edited in the web interface never sending notifications: they were skipped when loading, Test reported that the channel was not found, and a backup containing one could not be imported.
- Test on a notification channel now always sends the test message, even when the channel's Minimum Priority is set above it; previously it reported success without sending anything.
- Settings updated is no longer offered as a notification event, since nothing sends it. Existing subscriptions to it are kept but have no effect.
Authentication and API
- API key names and passwords are now measured in characters. Names longer than 33 Chinese, Japanese or Korean characters were refused, while passwords of such characters shorter than the minimum length were accepted.
- Creating or updating a streamer with a template that no longer exists, or adding a filter to a streamer that was deleted, now reports that it was not found instead of failing with a server error.
- Engine settings that don't fit the engine's type are now refused when saved, instead of being accepted and failing when the engine is tested or used. Engines already saved this way still load.
- Fixed AI assistants connected over MCP failing to change an engine's type: the tool described the types in lowercase, which the server refuses. It now lists the accepted values.
Web interface
- Fixed cards, editors and detail pages overflowing or squeezing their content at laptop and desktop window sizes once the sidebar takes its share. Card lists now fit as many columns as the page has room for, page headers wrap their buttons, and long names, titles, URLs and settings end in "…" with the full text on hover.
- Fixed Mesio engine overrides in templates. Every HLS and FLV setting, and the Fix FLV Streams, Fix HLS Streams and Fix DASH Streams switches, now show the engine setting they inherit and can be set to use that, the default, or a custom value; previously unset switches showed as off, the HLS settings were locked until HLS fixing was turned on, and a template containing a reset setting could not be saved. Disabled is no longer offered for Max Stall Duration and VOD Segment Timeout in a template, because a template could never turn them off; set that on the engine instead.
- Redesigned the Mesio engine settings. There is now one tab each for FLV, HLS and DASH, starting with that format's fix switch and the settings most recordings need, such as the HLS variant, user agent and query parameters or the DASH quality and tracks. The rest are grouped under Advanced by what they do, such as connection, segment downloads, gaps and stalls, or buffering. Each tab and section shows how many settings differ from the default, or how many a template overrides, and Restore defaults (Use engine settings in a template) clears one section. The HLS settings are no longer locked while HLS fixing is off, since they apply either way, and the FLV loop protection memory limit and HLS progress update settings can now be set in the form. Fix HLS Discontinuities is renamed Fix HLS Streams.
- The FFmpeg and Streamlink engine settings now work like Mesio's: settings are grouped into sections that show how many differ from the default, the less common ones are under Advanced, and in a template override every setting can use the engine setting (shown in the choice), the default, or a custom value. Lossless cutting in a template now takes the engine's own settings into account, so its warning about custom arguments also appears when the arguments come from the engine.
- Saving an engine now stores only the settings you set instead of every default, so engines follow later changes to the defaults.
- Saving an engine or template no longer removes settings the form does not show, such as ones set through the API, and a cleared number in a gap strategy, variant or DASH quality choice is now flagged instead of being saved as 0.
- Removed the Live Reorder Window (ms) and Live Reorder Window (segments) settings from Mesio's HLS buffering settings: they had no effect. Values saved for them are ignored.
- The engines settings page is now a list like proxies, showing each engine's type, installed version and status, with Configure beside it.
- The job page now shows a progress bar, speed and estimated time remaining for FFmpeg steps such as remuxing, transcoding, subtitle burn-in and audio extraction, which file a multi-file job such as an rclone upload has reached, how long a queued job has been waiting and a running job has been going, and a hint when a step has made no progress for over a minute. Failed and cancelled jobs now also show how long they ran and waited in the queue.
- Long-running processing steps, such as remuxing, transcoding, copies and compression, now appear in the top bar with live progress once they have run for 10 seconds. Open it to see each step's streamer, progress and remaining time, or to go to its job.
- Fixed the job page during a workflow step's automatic retries. A step waiting for its next attempt is now shown as retrying, with a countdown and which attempt comes next, instead of as failed; the page follows the job when the retry starts and shows which attempt is running; and it no longer offers a Retry Workflow button that could only fail. When a retry or cancel fails, the message now says why. The job of a cancelled or failed workflow no longer shows an automatic retry that will never run.
- The workflow page now shows whether each step is queued, running or waiting for an automatic retry, instead of showing every step in progress as processing. A running step shows a progress bar when it reports progress, with speed, time remaining and file details in the step list and when you hover over a step in the graph; a step waiting to retry shows when it runs again. A recording session's Jobs tab now updates by itself and shows new workflows as they start.
- Pipeline pages use less processor time while open: the status icons and badges of running jobs and workflows no longer spin or pulse.
- The workflow graph now adjusts its height to its steps, so a few parallel steps are no longer hidden below the frame (larger graphs can still be dragged into view), and each step is titled by its step ID, so steps that use the same processor can be told apart.
- The workflow list and the workflow page now say Created instead of Started beside the time a workflow was created, since a queued workflow has not started yet.
- The message shown after Retry All Failed is now translated.
- Fixed error and warning lines not being highlighted in a job's log on the job page.
- Fixed the web player's stream proxy refusing streams whose address is written as an IPv6 address.
Deployment and desktop
- Fixed the desktop app not applying the chosen Theme Preset or imported theme, Brand Colors or Border Radius, which only worked in the browser. Also fixed an extra scrollbar in the sidebar and some panels, most visible on Windows, where it ran the full height of the sidebar.
- Mesio downloads now trust the certificates your operating system trusts, as live checks and danmu already did, instead of a list built into rust-srec. In the desktop app, notifications, account checks and sign-ins, playback through the server proxy and proxy tests now do the same. A company or self-hosted certificate authority is therefore accepted once it is installed on the system (for Docker, in the container). Email notifications still use the built-in list. If connections fail with a certificate error, update the system's certificates, such as the
ca-certificatespackage on Linux, which the Docker image already includes.