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 组合。
- 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_AVFOUNDATION
api 属性
我正在使用 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 组合。
- 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_AVFOUNDATION
api 属性