使用 ffmpeg 的公共接口
ffmpegdir/include/libavcodec/
ffmpegdir/include/libavformat/
etc.
例如,要打开文件进行读取,请使用 ffmpegdir/include/libavformat/avformat.h 中的 avformat_open_input
AVFormatContext * ctx= NULL;
int err = avformat_open_input(&ctx, file_name, NULL, NULL);
您可以从http://ffmpeg.zeranoe.com/builds/获取最新版本的 ffmpeg
公共头文件可以在开发版本 (http://ffmpeg.zeranoe.com/builds/win32/dev/) 中找到。
UPD:
这是一个工作示例(没有额外的静态链接)
#include "stdafx.h"
#include <windows.h>
#include <libavformat/avformat.h>
typedef int (__cdecl *__avformat_open_input)(AVFormatContext **, const char *, AVInputFormat *, AVDictionary **);
typedef void (__cdecl *__av_register_all)(void);
int _tmain(int argc, _TCHAR* argv[])
{
const char * ffp = "f:\\Projects\\Temp\\testFFMPEG\\Debug\\avformat-54.dll";
HINSTANCE hinstLib = LoadLibraryA(ffp);
__avformat_open_input __avformat_open_input_proc = (__avformat_open_input)GetProcAddress(hinstLib, "avformat_open_input");
__av_register_all __av_register_all_proc = (__av_register_all)GetProcAddress(hinstLib, "av_register_all");
__av_register_all_proc();
::AVFormatContext * ctx = NULL;
int err = __avformat_open_input_proc(&ctx, "g:\\Media\\The Sneezing Baby Panda.flv", NULL, NULL);
return 0;
}