错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
error: (-210:Unsupported format or combination of formats) Video source is not supported by hardware video decoder in function 'create'
我的环境信息:
- 操作系统: 乌班图 18.04
- 开放CV: 4.3.0
- 库达:10.2
- NVIDIA GPU: GEFORCE RTX 2060
安装opencv之前的cmake列表:
cmake -D CMAKE_BUILD_TYPE=释放-D CMAKE_INSTALL_PREFIX=/usr/local
-D INSTALL_C_EXAMPLES=ON
-D INSTALL_PYTHON_EXAMPLES=OFF
-D WITH_TBB=ON \ -D WITH_CUDA=ON
-D CUDA_GENERATION=图灵 \ -D BUILD_opencv_cudacodec=开
-D ENABLE_FAST_MATH=开
-D NVCUVID_FAST_MATH=开
-D CUDA_FAST_MATH=开
-D WITH_CUBLAS=开
-D
BUILD_opencv_java=关
-DBUILD_ZLIB=ON
-D BUILD_TIFF=ON
-D WITH_GTK=ON
-D WITH_NVCUVID=ON
-D WITH_FFMPEG=ON
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2
-D WITH_1394=ON
-D CUDNN_INCLUDE_DIR=/usr/local/cuda/include
-D CUDNN_LIBRARY=/usr/local/cuda/lib64/libcudnn.so.7.6.5
-D OPENCV_GENERATE_PKGCONFIG=ON
-D OPENCV_PC_FILE_NAME=opencv4.pc
-D OPENCV_ENABLE_NONFREE=ON
-D WITH_GSTREAMER=ON
-D WITH_V4L=ON
-D OPENCV_PYTHON3_INSTALL_PATH=$cwd/OpenCV-4.3.0-py3/lib/python3.5/site-packages
-D WITH_QT=ON
-D WITH_CUDNN=ON
-D OPENCV_DNN_CUDA=ON
-D WITH_OPENGL=ON
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules
-D BUILD_EXAMPLES=ON ..
在 Cmake 输出的一部分之后:
. .
-- Video I/O:
-- DC1394: YES (2.2.5)
-- FFMPEG: YES
-- avcodec: YES (57.107.100)
-- avformat: YES (57.83.100)
-- avutil: YES (55.78.100)
-- swscale: YES (4.8.100)
-- avresample: YES (3.7.0)
-- GStreamer: YES (1.14.5)
-- v4l/v4l2: YES (linux/videodev2.h)
--
-- Parallel framework: TBB (ver 2017.0 interface 9107)
--
-- Trace: YES (with Intel ITT)
--
-- Other third-party libraries:
-- Intel IPP: 2020.0.0 Gold [2020.0.0]
-- at: /home/yongatek02/opencv/build/3rdparty/ippicv/ippicv_lnx/icv
-- Intel IPP IW: sources (2020.0.0)
-- at: /home/yongatek02/opencv/build/3rdparty/ippicv/ippicv_lnx/iw
-- Lapack: NO
-- Eigen: YES (ver 3.3.4)
-- Custom HAL: NO
-- Protobuf: build (3.5.1)
--
-- NVIDIA CUDA: YES (ver 10.2, CUFFT CUBLAS NVCUVID FAST_MATH)
-- NVIDIA GPU arch: 75
-- NVIDIA PTX archs:
--
-- cuDNN: YES (ver 7.6.5)
--
-- OpenCL: YES (no extra features)
-- Include path: /home/yongatek02/opencv/3rdparty/include/opencl/1.2
-- Link libraries: Dynamic load . .
我测试了简单的 cuda 示例和 OpenCV,工作正常没有问题。我尝试了此示例,以便能够使用 GPU 解码我的 IP 摄像机流。它通过终端使用此命令编译良好:
g++ -std=c++11 codec.cpp `pkg-config --libs --cflags opencv4` -o output
这也是我的代码:
#include <opencv2/opencv_modules.hpp>
#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/cudacodec.hpp>
#include <opencv2/highgui.hpp>
int main(int argc, const char* argv[])
{
const std::string fname = "rtsp://usrname/ipadress..."; // Tried also different formats of videos such as YUV,mp4 webM
cv::namedWindow("GPU", cv::WINDOW_NORMAL);
cv::cuda::GpuMat d_frame;
cv::Ptr<cv::cudacodec::VideoReader> d_reader = cv::cudacodec::createVideoReader(fname);
for (;;)
{
if (!d_reader->nextFrame(d_frame))
break;
cv::Mat frame;
d_frame.download(frame);
cv::imshow("GPU", frame);
if (cv::waitKey(3) > 0)
break;
}
return 0;
}
但是当我尝试运行它时,它给了我这个错误:
在抛出 'cv::Exception' 的实例后调用终止
what((: OpenCV(4.3.0(/home/yongatek02/opencv_contrib/modules/cudacodec/src/video_decoder.cpp:101: 错误:(-210:不支持的格式或格式组合(视频 "创建"功能中的硬件视频解码器不支持源已中止(核心已转储(
我还尝试使用一些不同类型的格式,例如YUV,MP4,webm等,但错误仍然相同。
我在这里错过了什么?
当我在本地磁盘上处理视频文件时,我遇到了同样的问题。事实证明,cudacodec不支持其音轨的编解码器。我使用 ffmpeg 来删除音轨,它工作正常。
ffmpeg -i input.mp4 -an output.mp4
- 如何在openssl-ecc中获取十六进制格式的私钥
- 将"打开的CV图像"中的"颜色"转换为整数格式
- TDateTime格式在C++Builder中不会更改
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 检查不带转换的扫描格式
- 如何在c++中录制具有精确帧时间戳的视频
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- 是否可以从格式字符串中检索"width"
- clang格式:宏的缩进
- clang格式:禁用排序包含
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- 强制Qt相机视频格式
- 为什么更改视频格式会更改其像素值?
- 开源或低成本的跨平台视频编解码器库,可用于商业目的,并支持RGBA格式
- 如何在OpenCV中设置相机的视频格式?CAP_PROP_FOURCC不起作用
- 如何以灰度格式读取视频文件
- 如何分析文件,判断文件是否为H.264视频格式?
- 如何在特定文件中检查(控制).avi格式的视频文件,它是否超过0KB且可读
- 是否可以以ITU-R BT.656格式流式传输视频