c# - 视频帧事件的触发速度超过了可以处理的速度
问题描述
我的视觉处理代码有问题。我希望有一个实际的错误可以为我指明正确的方向,并且我可以与大家分享。但是,本身没有错误。我得到的是我的视频中无意的副作用。
我有一个在网络上传输 H.264 视频的 IP 网络摄像机。它设置为 20 fps,尽管我尝试将其降低到 15 fps。不知道我是否想要或需要比这更低。
我正在阅读我的代码中的框架。我现在整合它的方式是,每次有来自相机的新帧时,我都会得到一个事件,在我的情况下,每秒 15 到 20 次。
我正在尝试尽快处理该视频帧,但我正在对其进行一些 OpenCV(或更好的 EmguCV)处理以及一些对象跟踪。
因为我是对象跟踪,所以我可以忽略或转储其间的帧,因为按顺序/按顺序排列它们很重要。
我的处理时间会波动,但有时会变慢,但只有几帧,比如 3 到 4 帧。但是,当我变慢时,我自然会错过帧,这会导致对象跟踪器丢失跟踪并且视频看起来像是在跳过,这两种情况我都不想要。
除了查看我是否可以加快处理速度(我可能无法做到)之外,处理这个问题的最佳方法是什么,这样即使我仍在处理或处理一点,我也不会跳过或丢弃触发并进入的帧慢点?
我正在寻找一个并发队列来充当缓冲区,但我不确定沿着这条路走下去是否是正确的方法。
谢谢!!
解决方案
推荐阅读
- android - Android Studio 上没有文本视图或操作栏
- php - 无法加载 URL:此 URL 的域不包含在应用程序的域中。为了能够加载此 URL... Codeigniter
- django - 如何在 Django 的 CreateView 中创建对象?
- lte - LTE传播模型
- ajax - 创建 post 方法并使用 ajax 和 laravel 传递 id
- ruby - Ruby HTTPclient:不推荐使用位置标头中的相对 URI
- ssl - 如何查找特定版本的 nginx 的文档?
- ios - 类型“PlayerConfiguration”没有成员“fromJson”Bitmovin iOS 集成错误
- kotlin - 如何通过在 kotlin 中使用过滤器对列表中的元素进行排序?我的方法有什么问题?
- string - 以编程方式从列表中查找最近的字符串