OpenCV VideoWriter 问题在 iOS - info.backendFactory.empty() 函数 'open' 上崩溃

OpenCV VideoWriter issue crashing on iOS - info.backendFactory.empty() in function 'open'

我正在使用 OpenCV 3.5.2 cv::VideoWriter class 读取一个文件并将其写入另一个文件,FPS 速率较低。但是,当调用

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

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

我明白了

terminating with uncaught exception of type cv::Exception: OpenCV(4.5.2) /Volumes/build-storage/build/master_iOS-mac/opencv/modules/videoio/src/cap.cpp:551: error: (-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

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

我尝试了以下 container/codec 组合。

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

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

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

对我有用。此处相关的是 cv::CAP_AVFOUNDATION api 属性