1.FFMPEG下載html
進入http://ffmpeg.org/download.html,若是下載源碼,則在右下方:linux
若是在linux中,直接輸入git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg下載便可
下載庫到windows中,則點擊:git
這裏咱們選擇下載最新版本20200831的shared和dev:windows
因爲我使用的QT庫有MSVC2015_64bit版本和MSVC2015_32bit版本的,因此須要64bit和32bit的shared和dev庫,shared庫用來運行時調用的,而dev庫用來編譯時調用的.下載完成後,以下圖所示:app
2.建立vs q項目(兼容64位和32位FFmpeg)
2.1目的 post
2.2開始
首先建立4個目錄include、lib、bin,src,因爲咱們下載的64位和32位的ffmpeg版本是一致的,因此頭文件都是同樣,主要是lib和dll庫文件不一樣,因此在lib和bin目錄里加以區分,項目結構以下圖所示:學習
include、lib、bin,src4個目錄建立好,而且ffmpeg導入完成後,接下來開始進入VS建立項目:測試
這裏須要對"爲解決方案建立目錄「取消勾選,不然的話,會在當前項目目錄下再次建立子目錄來存放項目.
建立過程當中,遇到設置類名的時候,須要勾上全部文件小寫,類名開頭大寫,方便移植到linux平臺,以下圖所示:ui
建立完成,接下來配置debug win32,右擊項目->屬性,能夠看到當前編譯配置:spa
添加頭文件路徑:
添加庫路徑目錄:
添加庫文件,將avcodec.lib;avformat.lib;avutil.lib; avdevice.lib; avfilter.lib;postproc.lib; swresample.lib; swscale.lib;複製到附加依賴項中,以下圖所示:
設置輸出路徑和調試路徑:
因爲生成的執行程序要和dll庫一塊兒,而dll庫能夠經過放入系統文件位置處、或者配置環境變量實現、或者將執行程序配置到dll庫所在位置,也就是..\..\bin\winXX\下面.(linux下,則只能配置環境變量)
因此,咱們須要設置項目輸出路徑和調試路徑和dll庫路徑一致,設置以下兩張圖所示:
最後點擊應用,配置好debug win32後,咱們還須要切換到release win32,以下圖所示:
而後再重複操做配置全部路徑,配置路徑和debug win32的配置一致便可.
配置好win32後,接下來,咱們便切換到x64平臺,以下圖所示:
而後再重複操做,不過庫目錄須要改成..\..\lib\win64,輸出目錄和調試工做目錄改成..\..\bin\win64.
最後修改main.cpp,來打印FFmpeg配置信息:
#include "ffmpegtest.h" #include <QtWidgets/QApplication> #include <QtWidgets/QPlainTextEdit> extern "C" { #include <libavcodec/avcodec.h> } int main(int argc, char *argv[]) { QApplication a(argc, argv); FfmpegTest w; QPlainTextEdit text(&w); text.resize(400,300); text.move(0,0); #ifdef _WIN64 text.setPlainText("is Win64"); #elif defined(_WIN32) text.setPlainText("is Win32"); #endif text.appendPlainText(avcodec_configuration()); w.show(); return a.exec(); }
2.3 測試-經過Debug X86來編譯32位
2.4 測試-經過Debug X64來編譯64位
3.建立creator項目(支持win32和x64)
接下來咱們來建立creator項目,在源目錄裏,新建FfmpegTest.pro:
編輯FfmpegTest.pro,修改成以下所示,而後咱們就能夠打開直接進行編譯了:
# ----------------------------------------------------
# This file is generated by the Qt Visual Studio Tools.
# ------------------------------------------------------
TEMPLATE = app
TARGET = FfmpegTest
QT += core gui widgets
DEFINES += QT_DEPRECATED_WARNINGS
HEADERS += ./ffmpegtest.h
SOURCES += ./ffmpegtest.cpp \
./main.cpp
FORMS += ./ffmpegtest.ui
RESOURCES += ffmpegtest.qrc
# msvc編譯器(這裏是設置源碼爲utf-8(默認爲gbk))
msvc{
QMAKE_CFLAGS += -source-charset:utf-8
QMAKE_CXXFLAGS += -source-charset:utf-8
}
INCLUDEPATH += $$PWD/../../include
#WINDOWS平臺
win32 {
contains(QT_ARCH, x86_64) {
message("x64")
# 輸出目錄
DESTDIR = $$PWD/../../bin/win64/
# 依賴模塊
LIBS += \
-L$$PWD/../../lib/win64 -lavformat \
-L$$PWD/../../lib/win64 -lavcodec \
-L$$PWD/../../lib/win64 -lavutil \
-L$$PWD/../../lib/win64 -lswscale
} else {
message("win32")
# 輸出目錄
DESTDIR = $$PWD/../../bin/win32/
# 依賴模塊
LIBS += \
-L$$PWD/../../lib/win32 -lavformat \
-L$$PWD/../../lib/win32 -lavcodec \
-L$$PWD/../../lib/win32 -lavutil \
-L$$PWD/../../lib/win32 -lswscale
}
}
3.1 測試-編譯32位
3.2 測試-編譯64位
未完待續,下章學習:11.QT-ffmpeg+QAudioOutput實現音頻播放器