1.簡(jiǎn)介
FFmpeg
是音視頻編解碼的開(kāi)源框架继控,下面主要是如何在Qt
工程中導(dǎo)入FFmpeg
,以及在導(dǎo)入FFmpeg
過(guò)程中遇到的一些問(wèn)題與問(wèn)題解決方法
2.下載FFmpeg庫(kù)
解壓庫(kù)文件胖眷,并將其放到合適的目錄武通,我這里放在了工程目錄的平級(jí)處
3.創(chuàng)建工程或控制臺(tái)程序(testffmpeg
)
配置testffmpeg.pro
,將開(kāi)發(fā)庫(kù)包含到我們的工程中
4.編譯項(xiàng)目
編譯我們發(fā)現(xiàn)有如下錯(cuò)誤提示
missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS
的錯(cuò)誤珊搀,這里我們直接在main.cpp
文件 中加入#define __STDC_CONSTANT_MACROS
定義來(lái)屏蔽這個(gè)錯(cuò)誤
繼續(xù)嘗試編譯,這個(gè)時(shí)候會(huì)發(fā)現(xiàn)如下錯(cuò)誤提示
我們根據(jù)錯(cuò)誤提示冶忱,進(jìn)行對(duì)問(wèn)題逐個(gè)解決,這里會(huì)提示頭文件未對(duì)UINT64_C
進(jìn)行定義境析,我們?cè)趍ain文件中手動(dòng)的添加定義UINT64_C
的定義:
#ifndef INT64_C
#define INT64_C(c) (c ## LL)
#define UINT64_C(c) (c ## ULL)
#endif
這樣就解決了編譯錯(cuò)誤的問(wèn)題朗和,運(yùn)行我們編譯好的程序
我們會(huì)發(fā)現(xiàn),在程序中我們嘗試在控制臺(tái)中打印了字符Hello FFmpeg
但是控制臺(tái)中并沒(méi)有顯示簿晓,但是我們的編譯并沒(méi)有報(bào)錯(cuò)眶拉,我們嘗試到項(xiàng)目文件夾中找到我們編譯的可執(zhí)行exe
文件,我們手動(dòng)運(yùn)行該testffmpeg.exe
文件,這個(gè)時(shí)候會(huì)提示如下信息
我們會(huì)發(fā)現(xiàn)我們程序很多動(dòng)態(tài)庫(kù)文件找不到憔儿,這個(gè)時(shí)候有兩種解決辦法
1.找到我們程序依賴的dll
動(dòng)態(tài)庫(kù)文件忆植,直接加到testffmpeg.exe
可執(zhí)行文件的同級(jí)目錄下
2.在編譯Qt
項(xiàng)目的時(shí)候在編譯選項(xiàng)中加入動(dòng)態(tài)庫(kù)路徑的配置,具體做法如下:
找到動(dòng)態(tài)庫(kù)的路徑谒臼,例如我們程序運(yùn)行需要依賴的FFmpeg
的動(dòng)態(tài)庫(kù)(我們之前解壓的庫(kù)文件ffmpeg-2.5.2-win32-shared
)朝刊,將庫(kù)路徑加入到Qt
編譯PATH
中
動(dòng)態(tài)庫(kù)路徑配置完畢后就可以正常運(yùn)行我們的程序了