C++/Qt FFmpeg library error: program has unexpecte

2019-05-24 05:18发布

问题:

I am trying to use ffmpeg library on windows in C++/Qt. This is my main function:

#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;

#define INT64_C(val) val##LL
#define UINT64_C(val) val##ULL
#include <QtCore>


#include <SDL/SDL.h>
#ifdef __MINGW32__
#undef main
#endif


//--------------- FFMPEG Headers and Libraries ---------------
extern "C"
{
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
}

int main(int c, char *args[])
{
    av_register_all();
    AVFormatContext *ctx;

    if(avformat_open_input(&ctx,"salam.avi",NULL,NULL)!=0)
        return -1;
    return 0;
}

It gets compiled & linked fine. But I get this error when I try to run it:
The program has unexpectedly finished
This happens on *avformat_open_input* function. What's the problem? Is it about my code, or it is a problem with my libraries?
Thanks in advance

回答1:

Finally I found it. The answer is so simple. ctx should be initialized by NULL.

AVFormatContext *ctx = NULL;


回答2:

Could be a problem with the AVI. Make sure your avi is supported by FFMPEG. use this tool To check what exactly the format is and look up the FFMPEG library help/support to see if the format is supported or not.



标签: c++ qt ffmpeg