FFmpeg 編程之VS環境搭建

ffmpeg下載鏈接:https://ffmpeg.zeranoe.com/builds/

共有2部分:shared和dev, shared包含動態鏈接庫,dev包含頭文件和lib文件。

解壓後將share內bin目錄和dev內部include和lib文件放置在同一目錄下,如D:\ffmpeg-4.2.2-win64。

新建環境變量名稱FFMPEG_DIR,值爲D:\ffmpeg-4.2.2-win64,編輯系統環境變量path,增加%FFMPEG_DIR%\bin(該部分能夠使的在運行編譯後的exe時自動調用相關dll,無需單獨拷貝dll到exe目錄)。

新建工程:文件->新建->項目->Win32控制檯應用程序,更改爲配置管理器爲64位,注意下載的時64位的庫。

打開屬性面板:解決方案資源管理器->右鍵單擊項目->屬性
頭文件配置:配置屬性->C/C++->常規->附加包含目錄,輸入“$(FFMPEG_DIR)\include”
導入庫配置:
配置屬性->鏈接器->常規->附加庫目錄,輸入“$(FFMPEG_DIR)\lib”
配置屬性->鏈接器->輸入->附加依賴項,輸入對應的FFMPEG庫avcodec.lib;avdevice.lib;avfilter.lib;avformat.lib;avutil.lib;postproc.lib;swresample.lib;swscale.lib;
動態庫不用配置。

注意:

在VC下使用FFMPEG編譯好的庫,不僅僅需要包含include和lib文件就行,還需要做以下幾步。(此方法適用於自己使用MinGW編譯的庫,也同樣適用於從網上下載的編譯好的庫,例如http://ffmpeg.zeranoe.com/builds/

(1)將mingw安裝目錄下的include的inttypes.h,stdint.h,_mingw.h三個文件拷到你ffmpeg庫的目錄下的include
(2)在_mingw.h文件的結尾處(在#endif 一行之前)添加了一行:
#define __restrict__
(2)把所有long long改成了__int64,如果是直接在vs2008下編譯,則這個修改應該是不需要的(這步我沒有遇到)
(3)修改.cpp文件

#include "stdio.h"
#include "stdlib.h"
#include "string.h"

#define __STDC_CONSTANT_MACROS
#ifdef __cplusplus
extern "C"

#endif
{
        #include "ffmpeg/avutil.h"
        #include "ffmpeg/avcodec.h"
        #include "ffmpeg/avformat.h"

#ifdef __cplusplus
}
#endif

(4)如果遇到error C3861: 'UINT64_C': identifier not found
在common.h里加入定義如下:
#ifndef INT64_C
#define INT64_C(c) (c ## LL)
#define UINT64_C(c) (c ## ULL)

#endif

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章