使用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. UIPanGestureRecognizer 拖动TableView改变其高度

    需求:项目中要求tableView的高度随着手拖动的位置而改变如下图: 关键代码如下: - (void)viewDidLoad{ panGestureRecognizer = [[UIPanGestu ...

  2. Django学习笔记5-url

    先来看一下普通的url的格式 {% url 'login_action'%} 但由于name没有作用域,Django在反解URL时,会在项目全局顺序搜索,当查找到第一个name指定URL时,立即返回 ...

  3. thinkphp5实现定位功能

    一.所需资源链接:百度网盘.主要包含一个ip地址库和一个ip类文件. 二.下载好后,在extend目录下面创建一个location的目录,将下载的文件解压到该目录.给类文件增加一个命名空间,便于我们使 ...

  4. 【Hadoop故障处理】全分布下,DataNode进程正常启动,但是网页上不显示,并且DataNode节点为空

    [故障背景] DataNode进程正常启动,但是网页上不显示,并且DataNode节点为空. /etc/hosts   的ip和hostname配置正常,各个机器之间能够ping通. [日志错误信息] ...

  5. 关于mysql 删除数据后(.MYD,MYI)物理空间未释放

    关于mysql 删除数据后物理空间未释放 OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTIMIZE ...

  6. PHP中计算字符串相似度的函数代码

    similar_text — 计算两个字符串的相似度 int similar_text ( string $first , string $second [, float &$percent ...

  7. Python系列之入门篇——python2.7.13安装

    Python2.7.13 安装 说明 以下所有操作都基于centos6.9 1. Issue zlib zlib-devel是安装setuptools依赖的模块,需要在安装python之前先安装这两个 ...

  8. HDFS重要特性

    首先,它是一个文件系统,用于存储文件,通过统一的命名空间目录树来定位文件: 其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色. 1. master/slave 架构 HD ...

  9. HTTP学习之URL与资源

    URL是因特网资源的标准化名称,该字符串指向一条电子信息片段,定义服务端应用程序在什么位置以及客户端要如何与其交互 一条完整的URL由多个片段组成. 通用URL组件 方案 以哪种协议访问服务器 用户 ...

  10. java 异常与捕获

    几乎所有的代码里面都会出现异常,为了保证程序在出现异常之后可以正常执行完毕,就需要进行异常处理. 先来看一下异常的继承类结构: 所有的异常都是由Throwable继承而来,我们来看他下面的两个子类Er ...