You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无网络环境下OpenCV集成FFmpeg问题:VideoCapture无法打开视频文件

OpenCV 3.4.16 VideoCapture 无法打开视频的解决方案

一、FFmpeg绑定库的正确获取与放置

OpenCV 3.x版本依赖专门编译的FFmpeg绑定库,而非原生FFmpeg DLL,这是问题的核心原因:

  • 你需要对应OpenCV 3.4.16 64位MingGW版本的opencv_ffmpeg3416_64.dll(版本号3416对应3.4.16,后缀64表示64位)。
  • 放置规则:
    • 直接将该DLL放到Qt项目生成的可执行文件所在目录(与.exe同文件夹),这是最可靠的方式;
    • 若通过PATH环境变量加载,需将DLL所在目录添加到系统PATH,但不推荐,易引发版本冲突。

二、修正路径与代码错误

你代码中的路径存在两个致命问题:

  1. 使用了中文引号,C++无法正确解析这种字符串,必须替换为英文引号;
  2. 路径分隔符需用单正斜杠(/)或双反斜杠(\\),双正斜杠虽能识别但不规范。

修正后的测试代码:

#include <opencv2/videoio.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    // 两种合法路径写法二选一
    VideoCapture cap("C:/video.mov");
    // VideoCapture cap("C:\\video.mov");

    if (!cap.isOpened()){
        cout << "Error opening video stream or file" << endl;
        return -1;
    }

    // 新增帧读取测试,验证是否真的能加载视频
    Mat frame;
    if (cap.read(frame)) {
        cout << "Successfully read first frame" << endl;
    } else {
        cout << "Failed to read frame after opening" << endl;
    }

    return 0;
}

三、排查其他潜在问题

  1. OpenCV编译配置问题:
    如果你是自行编译的OpenCV,需确保CMake中WITH_FFMPEG选项已勾选,且编译时指定了FFmpeg开发包路径(无网络环境下需提前下载对应MingGW版本的FFmpeg开发包)。
  2. Qt项目链接配置:
    确保.pro文件正确链接OpenCV库,示例配置(根据你的OpenCV安装路径调整):
    INCLUDEPATH += C:/opencv/build/include
    LIBS += -LC:/opencv/build/x64/mingw/lib \
            -lopencv_core3416 \
            -lopencv_highgui3416 \
            -lopencv_videoio3416
    
  3. 文件权限问题:
    避免将视频放在系统受保护目录(如C:\Windows),移至普通用户目录(如C:\Users\你的用户名\Videos)测试,确保程序有读取权限。

内容的提问来源于stack exchange,提问作者Henalds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:20:46