OpenCV VideoWriter 問題在 iOS 上宮崩 - info.backendFactory.empty() in function 'open'



我使用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/videio/src/cap.cpp:551:错误:(-215:断言失败(类型的未捕获异常终止!函数'open'中的info.backendFactory.empty((

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

/var/mobile/Channels/Data/Application/53C6BF23-5F44-4F89-AFD2-0AE271DC5A74/库/缓存/ckckckh35mc76y2071866jxqej6-rendered-2021-4-22-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(上运行我的程序

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

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

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

最新更新