【问题标题】:Speed up reading frames from a video file加快从视频文件中读取帧的速度
【发布时间】:2021-08-20 10:18:09
【问题描述】:

OpenCV 有什么方法可以从视频文件中并行读取帧或以其他方式加快读取速度?

我曾尝试在多个线程中使用cap.read(frame) 函数,但应用程序崩溃了。

我也尝试使用VideoCapture对象数组caps,都引用同一个视频文件,然后在每个线程中我可以使用caps[i].read(frame),所以我可以并行读取,但我只是读取同一帧多个次。

【问题讨论】:

  • 你到底想做什么?你在处理帧吗?您是否尝试将视频放在 SSD 或 RAM 驱动器上?
  • 嗨@Mark Setchell。我正在实现一个自定义 C++ 视频播放器应用程序,它需要能够以 30FPS 运行“特殊”非常大的视频文件,并且我不需要处理帧。正如您所提到的,一种解决方案是预处理视频文件,然后使用内存映射,但由于视频大小不是一个选项。我也尝试使用 FFmpeg 读取视频文件,但它比 OpenCV 慢。互联网上有很多关于图像处理加速技术的资料,但我没有找到任何关于阅读视频文件的资料。
  • “自定义视频播放器”...“不需要处理帧”——那么 OpenCV 是一个糟糕的选择。 VideoCapture 是一个方便的原型制作工具。
  • 嗨@DanMašek。什么是更好的选择?

标签: c++ opencv video


【解决方案1】:

除了更改视频格式之外,我还没有找到任何其他方法来加快阅读速度。我将其更改为 HapQ(原始格式为 Apple ProRes H422),性能明显更好,快了约 30%(读取帧为 20-25 毫秒,而之前为 30-35 毫秒)。

【讨论】:

  • 当您没有分享足够的信息让任何人提供帮助时,结果总是很可能出现。
猜你喜欢
  • 1970-01-01
  • 2018-06-14
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
  • 2018-03-26
  • 2019-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多