在c ++中播放过场动画

时间:2014-05-07 23:48:35

标签: c++ opengl video sdl

我正在使用SDL打开一个窗口并处理事件。和OpenGL将我的对象渲染到屏幕上。 SDL_mixer用于声音,SDL_ttf用于文本。现在,我正在试图弄清楚如何将视频显示出来。就像动画徽标或游戏开始之前的东西一样。只是为了试验它。在某些时候我需要知道它......

我发现并尝试安装FFMPEG,我已经包含了“include”文件夹,并设置了“lib”文件夹。起初我得到一个错误,告诉我它无法加载“inttypes.h”。所以我下载了一个包,并把它放在FFMPEG的include文件夹中。

现在我遇到了这个错误,我似乎无法解决这个问题。

  

C:\程序   文件\ FFMPEG-20140507-GIT-4cdea92-Win64的-dev的\包括\ libavutil \ COMMON.H(87):   致命错误C1004:发现意外的文件结尾

另一个问题是,是否有其他可用的库可以更容易用于显示简单的视频?我读到了一些关于SDL可以做到的事情,但没有找到任何关于它的信息。

编辑:这是第78到96行:

#if FF_API_AV_REVERSE
extern attribute_deprecated const uint8_t av_reverse[256];
#endif

#ifdef HAVE_AV_CONFIG_H
#   include "config.h"
#   include "intmath.h"
#endif

/* Pull in unguarded fallback defines at the end of this file. */
#include "common.h"

#ifndef av_log2
av_const int av_log2(unsigned v);
#endif

#ifndef av_log2_16bit
av_const int av_log2_16bit(unsigned v);
#endif

2 个答案:

答案 0 :(得分:1)

Wrap your #include <libav*.h>s inside a block like this:

#ifndef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
#define UNDEFINE_STDC_CONSTANT_MACROS
#endif
extern "C"
{
#include <libavdevice/avdevice.h>
#include <libavdevice/version.h>
}
#ifdef UNDEFINE_STDC_CONSTANT_MACROS
#undef __STDC_CONSTANT_MACROS
#endif

可能一种使用UNDEFINE_STDC_CONSTANT_MACROS黑客的方法,但逻辑现在不是来找我。

使用Zeranoe's 32-bit ffmpeg development binariesmsinttypes' inttypes.h在VS2012上为我工作。

答案 1 :(得分:0)

嗯,我找到了DLL文件,它给了我64位库的链接器错误。 我改回32位和32位dll,它工作正常。我想图书馆会问你是否有Windows的32/64位Visual Studio insite。