Qt+ffmpeg環境搭建

技术不支持發表於2024-08-20

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環境即完成了。