[FFmpeg-user] Opencv ffmpeg: Video capture (“Filename.avi”) crashes on a non development machine - MAC 10.8.2

Jerry Louis jerrylouis21 at gmail.com
Fri Mar 8 19:18:22 CET 2013


I was trying to deploy a simple Qt Opencv Application, the following is the
code:

Qt: .pro file:

    QT       += core gui
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    TARGET = opencvVideoTest
    TEMPLATE = app

    SOURCES += main.cpp\
        mainwindow.cpp

    HEADERS  += mainwindow.h

    FORMS    += mainwindow.ui

    INCLUDEPATH = -I/usr/local/include

    LIBS += -lm -lopencv_core -lopencv_highgui -lopencv_imgproc

Mainwindow.cpp:

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <opencv2/core/core.hpp>
    #include <opencv/cv.h>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/imgproc/imgproc.hpp>


    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);

        cv::Mat img;

       cv::VideoCapture cap("/Users/a_alkandri/Desktop/BMWM5.avi");

       if(cap.isOpened()){

       for(;;){
           cap.read(img);
           cv::resize(img,img,cv::Size(604,480));
           cv::imshow("Opencv", img);
           cv::waitKey(33);
       }
       }
       else{

       }


    }

    MainWindow::~MainWindow()
    {
        delete ui;
    }


The above snippet works fine on the development machine, which by the has
Opencv 2.4.3, ffmpeg 1.1.2 & Qt 5.0.1. This what happens when I try to
deploy, running the otool before using macdeployqt and the output:


    > /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
     version 169.3.0) /usr/local/opt/opencv/lib/libopencv_core.2.4.3.dylib
     (compatibility version 2.4.0, current version 2.4.3)
     > /usr/local/opt/opencv/lib/libopencv_highgui.2.4.3.dylib
     (compatibility version 2.4.0, current version 2.4.3)
    > /usr/local/opt/opencv/lib/libopencv_imgproc.2.4.3.dylib
       (compatibility version 2.4.0, current version 2.4.3)
    >
/usr/local/Qt5.0.1/5.0.1/clang_64/lib/QtWidgets.framework/Versions/5/QtWidgets
      (compatibility version 5.0.0, current version 5.0.1)
    > /usr/local/Qt5.0.1/5.0.1/clang_64/lib/QtGui.framework/Versions/5/QtGui
      (compatibility version 5.0.0, current version 5.0.1)
    >
/usr/local/Qt5.0.1/5.0.1/clang_64/lib/QtCore.framework/Versions/5/QtCore
      (compatibility version 5.0.0, current version 5.0.1)
    > /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
      (compatibility version 1.0.0, current version 1.0.0)
    > /System/Library/Frameworks/AGL.framework/Versions/A/AGL
      (compatibility version 1.0.0, current version 1.0.0)
    > /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current
      version 56.0.0)


otool after macdeployqt output:



>     /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
version 169.3.0)
      @executable_path/../Frameworks/libopencv_core.2.4.3.dylib
(compatibility version 2.4.0, current version 2.4.3)
>     @executable_path/../Frameworks/libopencv_highgui.2.4.3.dylib
(compatibility version 2.4.0, current version 2.4.3)
>     @executable_path/../Frameworks/libopencv_imgproc.2.4.3.dylib
(compatibility version 2.4.0, current version 2.4.3)
>
@executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets
  (compatibility version 5.0.0, current version 5.0.1)
>     @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui
(compatibility version 5.0.0, current version 5.0.1)
>     @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore
(compatibility version 5.0.0, current version 5.0.1)
>     /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
(compatibility version 1.0.0, current version 1.0.0)
>     /System/Library/Frameworks/AGL.framework/Versions/A/AGL
(compatibility version 1.0.0, current version 1.0.0)
>     /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current
version 56.0.0)

But after deploying it, when I try and run the app on the user's machine it
crashes, no error reported either, the exact samething used to happen in
Windows but when I copied the opencv_ffmpeg.dll into the exe folder it
worked fine. I tried to use the same logic here and failed, then I manually
addded each lib files of all the ffmpeg and its dependency into the project
folder and still failed. Any other solution, please help? I'm a newbie to
mac dpeloyment. Am i missing or overlooked something?




Thanks & Regards,
Jerry Louis


More information about the ffmpeg-user mailing list