Qt與FFmpeg聯合開發指南(一)--Windows下環境搭建

一、下載ffmpeg:

   https://ffmpeg.zeranoe.com/builds/

 

二、解壓ffmpeg

選擇Windows 64-bit 版本,Static,Share,Dev三個都下載,下載好的三個文件分別爲:

  將三個包解壓後,分別命名爲dev,shared,static,我的目錄結構爲:

添加FFmpeg庫到Qt項目
使用QtCreator創建一個Qt gui項目,創建完項目後:

在項目根目錄下創建ffmpeg文件夾,在ffmpeg文件夾中創建include和lib文件夾
解壓ffmpeg-20190814-8fcc5d9-win64-dev.zip壓縮文件
將解壓後ffmpeg-20190814-8fcc5d9-win64-dev文件夾下include目錄中所有頭文件拷貝到新建的ffmpeg目錄下的include文件夾中
將解壓後ffmpeg-20190814-8fcc5d9-win64-dev文件夾下lib目錄中的所有dll.a結尾的文件拷貝到ffmpeg的lib文件夾中
修改項目pro文件,在pro文件中增加如下內容:

 

#添加庫
INCLUDEPATH += $$PWD/ffmpeg/include 

LIBS    += $$PWD/ffmpeg/lib/avcodec.lib \
            $$PWD/ffmpeg/lib/avdevice.lib \
            $$PWD/ffmpeg/lib/avfilter.lib \
            $$PWD/ffmpeg/lib/avformat.lib \
            $$PWD/ffmpeg/lib/avutil.lib \
            $$PWD/ffmpeg/lib/postproc.lib \
            $$PWD/ffmpeg/lib/swresample.lib \
            $$PWD/ffmpeg/lib/swscale.lib \

測試FFmpeg庫是否能正常使用

  1. 在項目中ffmpeg01.h文件中添加FFmpeg頭文件
//當前C++兼容C語言
extern "C"
{
//avcodec:編解碼(最重要的庫)
#include <libavcodec/avcodec.h>
//avformat:封裝格式處理
#include <libavformat/avformat.h>
//swscale:視頻像素數據格式轉換
#include <libswscale/swscale.h>
//avdevice:各種設備的輸入輸出
#include <libavdevice/avdevice.h>
//avutil:工具庫(大部分庫都需要這個庫的支持)
#include <libavutil/avutil.h>
}

   2.在Widget構造函數中增加如下代碼

qDebug("------------------------------------------------------------------------");
qDebug("%s", avcodec_configuration());
qDebug("version: %d", avcodec_version());
qDebug("------------------------------------------------------------------------");
  1. 編譯運行程序,編譯成功,運行時如下報錯:
Starting E:\code\qt\build-FFmpegLibTest-Desktop_Qt_5_9_2_MinGW_static_32bit-Release\release\FFmpegLibTest.exe...
Cannot retrieve debugging output.
程序異常結束。
The process was ended forcefully.
E:\code\qt\build-FFmpegLibTest-Desktop_Qt_5_9_2_MinGW_static_32bit-Release\release\FFmpegLibTest.exe crashed.

報這個錯是因爲缺少FFmpeg動態庫
解壓ffmpeg-20190814-8fcc5d9-win64-shared.zip,將bin目錄下的所有dll文件拷貝到編譯後的release目錄中。

重新編譯運行程序,程序正常運行,並在QtCreator控制檯輸出如下內容:

------------------------------------------------------------------------
--disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
version: 3814756
------------------------------------------------------------------------

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章