mirror of
https://github.com/gravitational/teleport.git
synced 2026-10-25 10:40:02 +08:00
The tsh recordings export command exports a Windows desktop session recording to a video file that can be played outside Teleport. It was built prior to our RemoteFX support, and to this day only works on legacy PNG recordings. This commit allows us to export RemoteFX recordings by leveraging the Rust RDP decoder library in tsh. This will be the first time tsh links to Rust libraries. In addition to restoring the previous functionality, this adds two new capabilities: 1. We now support recordings that change size. (The original implementation was completed prior to desktop sessions supporting resize) 2. We try to encode an MP4 video with ffmpeg (the system-installed version, not by linking ffmpeg code) if available, and fall back to the slower AVI encoder if ffmpeg is not available. (There's also a --encoder flag choosing one or the other, but most users shouldn't need it). Closes #45388 Also take the opportunity to remove the scholls/progressbar dependency and unify a few different progress bar implementations. Co-authored-by: Ryan Clark <ryan.clark@goteleport.com>