【问题标题】:Best scheduling practice using VC++ for capture in directshow在 directshow 中使用 VC++ 进行捕获的最佳调度实践
【发布时间】:2012-05-23 16:00:42
【问题描述】:

我有一个捕获应用程序,它执行MP4 捕获。我需要安排此捕获应用程序以每 30 分钟(或某个动态值)捕获视频。

我从我不确定的文章中阅读了 IReferenceClock::AdviseTime 的 MSDN 文章,但我认为会在结束时间过去时触发事件。但它似乎不起作用。如果我的理解不正确,请告诉我。或者是否有任何其他击球手方式可以在 30 分钟内重复计划以捕获视频??

谢谢

【问题讨论】:

    标签: visual-c++ video directshow video-capture timing


    【解决方案1】:

    IReferenceClock::AdviseTime 是让我们关闭日程设置事件。过滤器可能会在内部利用这一点作为流操作的一部分。然而,对你来说,这种方法是没有用的。有多种方法可以每 30 分钟触发一次操作。在正在运行的应用程序上,您通常会使用 SetTimer + WM_TIMER API。如果您希望您的应用每 30 分钟启动一次,任务计划程序就在这里。

    【讨论】:

    • 感谢@Roman 的回复。我知道 SetTimer 不能提供很好的精度,我们可以使用其他什么来提供精度??
    • 您没有提到您需要特定的高精度。您需要什么精度?
    • 不确定您需要这种精度的原因,但是没有计时器可以做到如此准确。您可能希望连续捕获视频,然后使用时间戳在正确的位置剪切 - 停止文件并开始新的文件(但这在普通的单个图表中是不可能的)。
    • 最好的方法是在输出图中保持平滑捕获而不停止它,并将数据传递到单独的写入图中。有些人使用桥接器gdcl.co.uk/gmfbridge,有些人更喜欢在图表之间实现自定义数据传递。重新启动捕获图,您远远落后于所需的计时精度。
    • 登录不中断捕获,就不必担心时间问题。所有媒体数据都带有时间戳,因此您的录制不必具有实时精度来保持时间准确性。为您提供线索,编写良好的代码运行精度为几毫秒,具体取决于系统负载和正在运行的应用程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 2016-06-28
    • 2013-08-15
    • 1970-01-01
    • 2015-12-10
    • 2013-07-12
    相关资源
    最近更新 更多