2

我正在尝试在 C++/Qt 中的 Windows 上使用 ffmpeg 库。这是我的主要功能:

#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;
}

它被编译和链接得很好。但是当我尝试运行它时出现此错误:
程序已意外完成
这发生在 *avformat_open_input* 函数上。有什么问题?是关于我的代码,还是我的库有问题?
提前致谢

4

2 回答 2

1

最后我找到了。答案很简单。ctx应由 NULL 初始化。

AVFormatContext *ctx = NULL;
于 2012-04-11T14:10:49.450 回答
0

可能是 AVI 的问题。确保您的 avi 受 FFMPEG 支持。使用此工具检查格式到底是什么,并查找 FFMPEG 库帮助/支持以查看是否支持该格式。

于 2012-04-11T13:15:21.383 回答