FFMPEGP 入門之所以很難,很大一部分是環(huán)境難以搭配。

FFMPEGP 入門之所以很難,很大一部分是環(huán)境難以搭配。

有時(shí)候照著別人的資料明明完全一樣,還是不行。

這不光是環(huán)境搭配的問(wèn)題,還有FFM存在著各個(gè)版本,且不兼容導(dǎo)致的。

還有一個(gè)是 頭文件、DLL、LIB 要對(duì)應(yīng)一致才可以。

另外一開(kāi)始肯定不熟悉,不直接引入哪些頭文件

自己編譯的話,可能還要區(qū)分DEBUG、RELEASE版本

這些導(dǎo)致了,F(xiàn)FM很難入門,可能你花了很長(zhǎng)時(shí)間,自己搭配環(huán)境時(shí),總是出現(xiàn)這樣那樣的問(wèn)題。

我也是在搭建環(huán)境時(shí),遇到了很多問(wèn)題,現(xiàn)在記錄下來(lái),也供大家做個(gè)參考。

MFC-FFM環(huán)境搭建

首先下載編譯好的,我就不再費(fèi)精力編譯了,你如果想和我一樣省事,可以下載這個(gè)編譯好的。

下載地址:https://github.com/gudianxiaoshuo/FFMPEGP

我之前用過(guò)其它版本的,然后再用這個(gè)時(shí)候,發(fā)現(xiàn)很多問(wèn)題,后來(lái)研究,是版本不一致導(dǎo)致的。所以將工程中,之前版本的ffm頭文件、DLL、LIB都刪除了,尤其是工程目錄下的LIB,容易忽略掉。

目的就是,只用一個(gè)版本,不要多版本沖突,否則,你死都不知道怎么死的。

好,現(xiàn)在已經(jīng)將其他版本清理干凈了,開(kāi)始環(huán)境搭建。

1 項(xiàng)目屬性設(shè)置

VC++目錄設(shè)置

avcodec.lib

avdevice.lib

avfilter.lib

avformat.lib

avutil.lib

postproc.lib

swresample.lib

swscale.lib

2 添加頭文件

extern "C" //一定要以C的形式,加入頭文件

{

#include "libavcodec\\avcodec.h"

#include "libavformat\\avformat.h"

#include "libswscale\\swscale.h"

#include "libavdevice\\avdevice.h"

#include "libavutil\\audio_fifo.h"

};

//因?yàn)樵陧?xiàng)目屬性中,已經(jīng)設(shè)置了頭文件ffm\\include目錄,所以這里頭文件,會(huì)從ffm\\include目錄里查找

3 運(yùn)行

目前來(lái)看,你添加了頭文件,添加了LIB

寫了一段示例程序

那應(yīng)該可以了,但你運(yùn)行時(shí),有可能會(huì)碰到這樣的鏈接錯(cuò)誤

: error LNK2019: 無(wú)法解析的外部符號(hào) "void __cdecl av_free(void *)" (?av_free@@YAXPAX@Z),該符號(hào)在函數(shù)

當(dāng)然,如果沒(méi)有這種錯(cuò)誤,正常運(yùn)行,那就沒(méi)問(wèn)題了。

但是,如果你和我一樣,總是遇到最壞的情況,就像趕公交,急急忙忙趕到達(dá)公交站點(diǎn),而要坐的那趟公交正好剛走,不得不再等一循環(huán)。

如果遇到這種情況,可以試試這種方式,添加LIB

//以C的方式引入

extern "C"

{

#pragma comment (lib, "avcodec.lib")

#pragma comment (lib, "avdevice.lib")

#pragma comment (lib, "avfilter.lib")

#pragma comment (lib, "avformat.lib")

#pragma comment (lib, "avutil.lib")

#pragma comment (lib, "swresample.lib")

#pragma comment (lib, "swscale.lib")

};

如果,你還是遇到錯(cuò)誤,就像我一樣,總是遇到最壞的情景。

提示沒(méi)有對(duì)應(yīng)的DLL,這可能就是版本沖突了。

不同版本的LIB,需要的DLL文件名不同。

我就遇到了這個(gè)問(wèn)題,后來(lái)查了下,原來(lái)我工程主目錄下,有別的版本的LIB文件,這樣,工程加載時(shí),先搜索的工程主目錄下的LIB,找到了就不再搜索別的了,導(dǎo)致了我用的這個(gè)版本的LIB沒(méi)有正確加載。

這就是一開(kāi)始說(shuō)的,一定要清理干凈其它版本的文件和DLL以及LIB,否則就夠你頭疼的,尤其是剛?cè)腴T的,可能你都找不到到底哪里錯(cuò)了,明明和資料配置一樣,還是錯(cuò)誤,以致于讓你懷疑人生。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容