如何设置 ffmpeg 使用与 OBS 工作室“重播缓冲区”功能(连续记录最后 X 秒)相同的记录方法?

如何设置 ffmpeg 使用与 OBS 工作室“重播缓冲区”功能(连续记录最后 X 秒)相同的记录方法?

我确实喜欢 OBS 工作室“重播缓冲区”功能的工作方式(连续记录最后 X 秒)。

但它似乎是一个过于复杂的重型应用程序,仅用于此目的。

据我了解,它使用 ffmpeg 进行录制。而且 ffmpeg 似乎支持脚本(或配置,我不确定哪个术语更适合这里)。

因此,我尝试找到一些有关如何仅使用 ffmpeg 脚本(不使用 OBS 工作室)来制作它的说明,但还没有找到清晰直接的说明。

那么如何让 ffmpeg 做到这一点:

  1. 开始视频录制,只有执行某些特定操作(例如按下热键)后才能完成
  2. 每秒删除超过 10 秒的录音部分。

答案1

您可以将录音分割成多个片段,然后使用播放列表文件将它们合并。请参阅https://unix.stackexchange.com/a/373148

步骤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

如果您想要一个完整的解决方案来为您完成此操作,我已经为其编写了一个脚本https://github.com/MAPReiff/ShadowRePlay-Linux

相关内容