今天我了解到了一款仅适用于 Windows 的产品,名为Overwolf重播HUD,用户可以按一个键在屏幕上重播过去 20 秒发生的事情。它适用于玩或观看快节奏视频游戏并希望快速回顾忙碌时刻的人们。
我正在尝试在 Linux 上复制这种行为。到目前为止,我认为我可以轻松地开始ffmpeg
(使用)捕获到(内存映射的)-f x11grab
中的文件,然后使用/tmp
sxhkd
绑定键盘快捷键来启动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 具有可配置的重播缓冲区功能,完全满足您的需求。