Qt+ffmpeg環境搭建
各平臺常見影片開發庫舉例:
- iOS:AVFoundation AudioUnit
- Android:MediaPlayer,MediaCodec
- Windows:DirectShow
- Linux:GStreamer
FFmpeg 庫是一個跨平臺的影片開發庫, 還有 libVLC 也是一個跨平臺的影片開發庫
- 掌握了其中一個庫, 也能很快上手其它庫, 因為音影片解碼的原理類似
引入 FFmpeg 庫有兩種方式
一種是直接引入原始碼進行開發(因為原始碼龐大,編譯較慢,不推薦新手學習時用這種方法)
一種是引入標頭檔案和動態庫進行開發,下載地址是:
https://ffmpeg.org/download.html
https://github.com/GyanD/codexffmpeg/releases //下載其它版本可以在這裡下載, 已知5.1.2版本可相容win7
shared版本是有動態庫的版本(essentials是必要元件版本,東西可能不全;full是完整版本),gpl和lgpl是開源協議版本不同。
這裡我採用的shared版本。
安裝Qt
我選擇的是5.12版,因為該版本可以直接在網上下載到完整安裝包。
編譯器選擇的是MinGW
將 FFmpeg 庫載入到Qt專案當中
- 在環境變數中新增動態庫檔案所在路徑(例如):
D:\ffmpeg_dev\ffmpeg-6.1.1-full_build-shared\bin
- 在Qt檔案中新增庫檔案
win32: {
FFMPEG_HOME=D:\ffmpeg_dev\ffmpeg-6.1.1-full_build-shared
# 設定 ffmpeg 標頭檔案路徑
INCLUDEPATH += $$FFMPEG_HOME/include
# 載入 ffmpeg 匯入庫
# -L :指定匯入庫的目錄
# -l :指定要匯入的 庫名稱
LIBS += -L$$FFMPEG_HOME/lib \
-lavcodec \
-lavdevice \
-lavfilter \
-lavformat \
-lavutil \
-lpostproc \
-lswresample \
-lswscale
}
測試FFMpeg 庫版本
extern "C" {
#include <libavcodec/avcodec.h>
}
qDebug() << "test: FFMpeg Version: "<< av_version_info();
//加入上述程式碼,如可以正常列印ffmpeg版本,則說明ffmpeg庫正常。如下,執行時會在除錯視窗列印如下資訊:
//test: FFMpeg Version: 6.1.1-full_build-www.gyan.dev
至此,Qt+FFmpeg環境即完成了。