【问题标题】:OpenCV VideoWriter issue crashing on iOS - info.backendFactory.empty() in function 'open'OpenCV VideoWriter 问题在 iOS 上崩溃 - 函数“打开”中的 info.backendFactory.empty()
【发布时间】:2021-07-16 14:59:52
【问题描述】:

我使用 OpenCV 3.5.2 类中的cv::VideoWriter 读取文件并将其写入另一个文件,FPS 速率较低。但是,调用时

  cv::VideoWriter videoWriter = cv::VideoWriter();

  videoWriter.open(
    outputFilePath.UTF8String,
    cv::VideoWriter::fourcc('I', 'Y', 'U', 'V'),
    15,
    cv::Size(1920, 1080),
    true
  );

我明白了

以 cv::Exception 类型的未捕获异常终止:OpenCV(4.5.2) /Volumes/build-storage/build/master_iOS-mac/opencv/modules/videoio/src/cap.cpp:551:错误:( -215:Assertion failed) !info.backendFactory.empty() in function 'open'

其中outputFilePath 是我的缓存目录中的.avi 文件

/var/mobile/Containers/Data/Application/53C6BF23-5F44-4F89-AFD2-0AE271DC5A74/Library/Caches/ckckh35mc76y2071866jxqej6-rendered-2021-4-22_12-17-44.avi

由于我无法从错误中获得更多输出,我假设这可能是意外编解码器的错误。

我尝试了以下容器/编解码器组合。

  • AVI - 'I'、'Y'、'U'、'V'
  • MP4 - 'M'、'J'、'P'、'G'
  • MP4 - 'M'、'P'、'4'、'V'
  • M4V - 'M'、'P'、'4'、'V'
  • M4V - 'M'、'P'、'4'、'V'
  • AVI - 'X'、'V'、'I'、'D'

我在物理 iOS 设备(更准确地说是 iPhone 6s)上运行我的程序

【问题讨论】:

    标签: c++ ios opencv opencv3.0 video-codecs


    【解决方案1】:

    我想通了。对于 iOS,看起来您需要强制用于视频写入的后端。因此,使用

    videoWriter.open(
      outputFilePath.UTF8String,
      cv::CAP_AVFOUNDATION,
      cv::VideoWriter::fourcc('M', 'J', 'P', 'G'),
      15,
      cv::Size(1920, 1080)
    );
    

    为我工作。这里相关的是cv::CAP_AVFOUNDATION api 属性

    【讨论】:

      猜你喜欢
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-12
      • 1970-01-01
      • 2019-03-03
      • 2022-10-12
      相关资源
      最近更新 更多