【问题标题】:record desktop save every 30 minutes每 30 分钟记录一次桌面保存
【发布时间】:2014-04-01 01:38:54
【问题描述】:

这是我与同一问题相关的问题:

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

【问题讨论】:

    标签: c# video ffmpeg


    【解决方案1】:
    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 分钟。这取决于您如何启动子进程,因此我无法提供任何代码。

    【讨论】:

    • 实际上,如果你创建了一个 Windows 服务,你可以将 ffmpeg 作为一个子进程启动,并且 - 一旦完成 - 对此做出反应并立即启动一个新进程。
    • 为什么在 video="screen-capture-recorder" 中显示错误。请在我的代码中提出任何建议或如何将其添加到项目中?我真的很困惑
    【解决方案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。如果您只提供输入帧速率,那么输出将使用相同的帧速率并避免丢失或重复帧来补偿。

    【讨论】:

    • 为什么在 video="screen-capture-recorder" 中显示错误。在我的代码中。
    • @Ahmad 我猜你的代码是错误的。如果没有看到您的实际代码和实际错误,就无法说其他任何事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    相关资源
    最近更新 更多