使用C#调用mingw的so文件,在C++端使用opencv打开视频。这样的项目完成过了一个,第二次做的时候,发现opencv打开视频文件出错。

首先怀疑是opencv的opencv_ffmpeg2410.dll文件找不到,确认了文件位置仍然不行。

然后怀疑是新换的mingw32编译器问题,换回了老版本仍然不行。

最后确认了视频文件的存在性,传递文件名的正确性,一切正常,视频无法打开。

在试验过程中,出现了很多次segmentation fault的情况,发现是因为两个mingw32编译器和他们的运行时库冲突问题。当我切换了环境变量更换编译器时,由于VS2010不重启,环境变量就不更新,所以使用VS2010启动的程序还使用原来的运行时dll;在vim中编译时,不退出环境变量不更新,有时根本没有换编译器编译。而测试编译器时一般都是在新建的命令窗口中输入g++ --version,这样看到的结果都是对的。

为了确认程序引用的dll正确性,关闭了所有程序,删除了散乱的运行时dll,将PATH环境变量整理后,打开了之前项目里做的工程,结果之前的工程能够在两个版本编译器下正确运行,而且与so文件位置无关。此时问题定位在了新写的so库上。

将新的工程中so库的代码一点一点的注释,最后只剩下视频部分,仍然不能打开。再将老工程直接复制过来,接口与新的工程做成一样的,就是让新的C#程序调用老的so文件,结果能够成功打开,然后在老so基础上逐步修改,发现修改指令部分时就出错了,最后怀疑是视频文件名正确性,之前确认正确性的时候只是从日志文件中看到了文件名,在资源管理器中证明了正确性,但文件名中可能存在无法显示的字符,导致无法访问。所以在程序中加入了  slog.log(sFormat("%s,%d",url.c_str(),url.size()).c_str()); 输出文件名的长度为26个字符,而使用无法打开视频的代码,文件名长度为27字符,说明不对,多出来的是文件名前端的空格,修改命令解析部分,删除空格后,正确执行。

opencv打开视频文件出错的更多相关文章

  1. ffmpeg和opencv 播放视频文件和显示器

    ffmpeg它是基于最新版本,在官网下载http://ffmpeg.zeranoe.com/builds/.编译时VS2010配置相关头文件及库的路径就可以.opencv的搭建參考上一个博客. 首先简 ...

  2. OpenCV读写视频文件解析(二)

    OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++:bool VideoCapture::set(int propId, double value) ...

  3. OpenCV读写视频文件解析

    OpenCV读写视频文件解析 一.视频读写类 视频处理的是运动图像,而不是静止图像.视频资源可以是一个专用摄像机.网络摄像头.视频文件或图像文件序列. 在 OpenCV 中,VideoCapture ...

  4. python实现调用摄像头或打开视频文件

    目录: (一)调用摄像头或打开视频文件代码实现 (二)说明和补充 (一)调用摄像头或打开视频文件代码实现 1 # -*- coding=GBK -*- 2 import cv2 as cv 3 4 5 ...

  5. myeclipse 打开jsp文件出错

    第一步:找到MyEclipse的安装路径:第二步:删除掉MyEclipse\configuration下名为:org.eclipse.update的文件夹:第三步:产出之后重启myeclipse,在打 ...

  6. 【学习ffmpeg】打开视频文件,帧分析,并bmp保存关键帧

    http://www.tuicool.com/articles/jiUzua   http://blog.csdn.net/code_future/article/details/8646717 主题 ...

  7. 从HighGUI的一段代码中看OpenCV打开视频的方式

      OpenCV的HighGUI提供了视频和摄像头的直接打开.那么它是如何实现的了?这里进行初步分析.     ;    switch(apiPreference) {    default:    ...

  8. C++ 调用 opencv 读取视频文件列表并处理

    //g++ trans_video.cpp -o trans_video `pkg-config opencv --libs --cflags` -L/usr/lib/x86_64-linux-gnu ...

  9. matlab -xlsread 打开xls文件出错:服务器出现意外情况

    错误:xlsread:服务器出现意外情况 原因:非matlab问题,Excel的com加载项启用 解决方法:office - Excel选项-加载项:管理-com加载项-转到-取消可用加载项的勾选.

随机推荐

  1. Servlet Struts2 SpringMVC 获取参数与导出数据 方法比较

    servlet中通过request.getParameter()从网页获取参数 通过request session servletContext几个域对象的setAttribute(String ,O ...

  2. 【HDOJ 2888】Check Corners(裸二维RMQ)

    Problem Description Paul draw a big m*n matrix A last month, whose entries Ai,j are all integer numb ...

  3. 解决微信小程序安卓手机访问不到图片,无法显示图片

    关于微信小程序不显示图片 通病可能有以下几个可能性: 非本地图片:确定图片资源存在,copy 图片url再浏览器打开,确定图片资源存在且能正常访问 本地图片:确定相对路径或者绝对路径正确 微信小程序图 ...

  4. HTML+css 文字只显示一行

    电脑端 设置行高,超出隐藏 p{ width: 80%; height: 16px; line-height: 16px; display: block; overflow: hidden; text ...

  5. jquery实现表单验证简单实例

    /* 描述:基于jquery的表单验证插件. */ (function ($) { $.fn.checkForm = function (options) { var root = this; //将 ...

  6. itertools.groupby()分组字典列表

    ## itertools.groupby()分组字典列表数据 from operator import itemgetter from itertools import groupby student ...

  7. hadoop学习笔记——zookeeper平台搭建

    zookeeper是一个自动管理分布式集群的一个工具,以实现集群的高可用. 比如集群中的一个机器挂掉了,没有zookeeper的话就得考虑挂一个机器对剩下集群工作的影响,而有了zookeeper,它就 ...

  8. Ubuntu12.04下zxing源码编译

    1.下载zxing源码 git clone https://github.com/15903016222/zxing-cpp.git 2.安装依赖工具cmake sudo apt-get instal ...

  9. JavaWeb——升级赛-学生成绩管理系统(1)jsp---19.01.03

    add.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"    pa ...

  10. Milking Order

    Milking Order 题意:给出m个描述状态,其中包含若干个边的关系,问最多能取x (x<=m)个状态,使得形成的图没有环.就是说取x个状态,用状态中的关系建边,其中不能有环. 题解:最大 ...