记录桌面每30分钟保存一次

时间:2014-03-31 13:36:18

标签: c# video ffmpeg

这是我的问题,与同一问题有关:

better way to record desktop via ffmpeg

我有这个命令:ffmpeg -f dshow -i video="screen-capture-recorder" -r 30 -t 10 E:\test01.flv

我很高兴,但我想知道我是否可以每30分钟节省一次,所以如果电源关闭我只会在最后30分钟失去。

我使用C#来启动和隐藏ffmpeg cmd,所以我想知道如何让它每隔30分钟保存到同一个test01.flv

2 个答案:

答案 0 :(得分:2)

ffmpeg -f dshow -framerate 30 -i video="screen-capture-recorder" -t 1800 output

ffmpeg -f dshow -framerate 30 -i video="screen-capture-recorder" -t 00:30:00 output

在C#中检查进程是否仍在运行,如果没有,则再次启动,以便在接下来的30分钟内开始录制。这取决于您如何启动子进程,因此我无法提供任何代码。

答案 1 :(得分:2)

一种方法是使用segment muxer

ffmpeg -f dshow -framerate 30 -i video="screen-capture-recorder" -f segment \
-segment_time 1800 out%03d.flv
  • 来自docs

      

    请注意,如果要对视频文件进行精确分割,则需要使输入关键帧对应于分段器预期的精确分割时间,否则分段多路复用器将使用下一个找到的关键帧开始新的分段。指定的开始时间。

  • 这将导致名为out001.flvout002.flvout003.flv等的输出文件

  • 一个问题是,如果重新调用该命令,它将尝试使用相同的输出文件名。

  • 我从您的命令中删除了-r 30,并将其更改为-framerate 30作为dshow input device选项。否则,由于默认输入帧速率为25,ffmpeg将复制帧以达到所需的输出帧速率30.如果仅提供输入帧速率,则输出将使用相同的帧速率并避免掉线或复制帧以进行补偿。