如何将我的桌面记录到“重播缓冲区”中,以便我可以重播最后 x 秒?

如何将我的桌面记录到“重播缓冲区”中,以便我可以重播最后 x 秒?

今天我了解到了一款仅适用于 Windows 的产品,名为Overwolf重播HUD,用户可以按一个键在屏幕上重播过去 20 秒发生的事情。它适用于玩或观看快节奏视频游戏并希望快速回顾忙碌时刻的人们。

我正在尝试在 Linux 上复制这种行为。到目前为止,我认为我可以轻松地开始ffmpeg(使用)捕获到(内存映射的)-f x11grab中的文件,然后使用/tmpsxhkd绑定键盘快捷键来启动mpv播放该文件的最后 20 秒。

然而,其余的录音仍然会被存储,而且我最终会耗尽内存。我怎么能只保留最后20秒呢?

答案1

分段复用器将工作。

步骤1

ffmpeg -i input force_key_frames expr:gte(t,n_forced*4) -c:v libx264 -c:a aac -f segment -segment_time 4 -segment_wrap 6 -segment_list list.m3u8 -segment_list_size 6 seg%d.ts

这将以 4 秒为单位保存录音。一旦写入 6 个段,下一个段将覆盖第一个文件。播放列表会相应更新。

第2步

ffmpeg -i list.m3u8 -c copy video.mp4

或者

ffplay list.m3u8

保存的素材的持续时间是20 < duration < 24

答案2

OBS 具有可配置的重播缓冲区功能,完全满足您的需求。

相关内容