天天看點

MinGW+Msys+SDL2在Windows下編譯、安裝可調試的FFmpeg并生成ffplay

Windows+MinGW編譯可調試的ffmpeg,包括ffplay

  • 說明:FFmpeg在Linux下編譯可調試的ffmpeg是非常友善,由于工作需要,需要在Windows下編譯可調試的ffmpeg,在網上搜尋好多資料都沒能解決問題,總是遇到各種問題,經過幾番周折,終于編譯安裝成功,并成功生成ffplay。下面為大家分享一下經驗。
  • 如有問題可以發郵件聯系我:
    email:[email protected]

簡述

作業系統: Windows10 64

編譯工具: MinGW+MSYS+yasm+SDL2.0(如編譯需加上nasm)

  • MinGW 是Windows下模拟Linux運作的庫、頭檔案等的集合
  • msys 是Windows下模拟Linux運作的最新系統,可以通過類似于linux bash的指令行視窗進行代碼編譯。
  • yasm 是ffmpeg編譯時用到的彙編工具。
  • nasm 和yasm相同,編譯x264可能會用到(本人都安裝了)
  • SDL2.0 ffmpeg編譯ffplay時需要的SDL源代碼,編譯時要生成ffplay,執行configure腳本時必須加入- -enable-sdl2

FFMPEG版本: ffmpeg-4.1.4 ,可從FFMPEG官網進行下載下傳最新的代碼。

FFMPEG官方網址-http://ffmpeg.org/download.html

作者這裡使用的編譯器是MinGW+MSYS+yasm進行編譯

本文的編譯環境安裝目錄為:C:\MinGW (作者不建議安裝在C槽,可建立自己的目錄)

編譯環境搭建

MinGW + MSYS + yasm + nasm下載下傳與安裝

  • 下載下傳MinGW + msys
Mingw下載下傳位址:http://sourceforge.net/projects/mingw/files/
  • 點選紅框處下載下傳最新版本
    MinGW+Msys+SDL2在Windows下編譯、安裝可調試的FFmpeg并生成ffplay
    安裝步驟詳見:https://blog.csdn.net/zhouyongku/article/details/44961447
  • 配置MinGW

    MinGW下載下傳完成後進入安裝目錄,C:\MinGW\msys\1.0

    用記事本打開msys.bat,在第一行加入:

    call “D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat”

    call對應的目錄為你的VC安裝程式所在目錄,網上有說不加這個也是可以的,大家可以試一下。

    下載下傳安裝完成後MinGW目錄結構如下(圖中的SDL、FFmpegExport目錄是後來放進去的)

    MinGW+Msys+SDL2在Windows下編譯、安裝可調試的FFmpeg并生成ffplay

    進入C:\MinGW\msys\1.0執行msys.bat

    輸入gcc -v 驗證gcc環境是否準備好。

    MinGW+Msys+SDL2在Windows下編譯、安裝可調試的FFmpeg并生成ffplay
    如果提示gcc環境找不到,手動設定下環境變量:export PATH="/mingw/bin:$PATH"
  • 下載下傳yasm

    FFmpeg編譯的時候需要yasm.exe,下載下傳與自己系統比對的版本即可,我下載下傳的是 Win64.exe

    下載下傳位址:http://yasm.tortall.net/Download.html
MinGW+Msys+SDL2在Windows下編譯、安裝可調試的FFmpeg并生成ffplay
  • 配置yasm
    将下載下傳好的yasm-1.3.0-win64.exe修改為yasm.exe,并将其拷貝到C:\windows\system32檔案夾下–這樣就不需要做過多的環境變量配置
  • 編譯SDL2.0
    作者這裡是自己根據源碼編譯的,使用dev版本的SDL2.0好像有點問題,選用Source Code:下的源碼即可。
    下載下傳位址:https://www.libsdl.org/download-2.0.php
    解壓後進入相關目錄

    ./configure --prefix=/MingGW/SDL2/

    make -j4 && make install

注意,這裡的/MingGW/SDL2/一定要先建立好

  • 下載下傳安裝pkg-config

    下載下傳連結:http://ftp.acc.umu.se/pub/gnome/binaries/win64/dependencies/pkg-config_0.23-2_win64.zip

    如此連結失效打開父路徑:http://ftp.acc.umu.se/pub/gnome/binaries/win64/dependencies/

    提取壓縮檔案中的檔案改名為pkg-config.exe
    下載下傳:http://ftp.acc.umu.se/pub/gnome/binaries/win64/glib/2.18/glib_2.18.4-1_win64.zip

提取壓縮包中檔案libglib-2.0-0.dll

将上述兩個檔案放入到mingw安裝目錄bin子目錄下,我這裡為:C:/MinGW/bin/

  • 安裝nasm
    作者采用下載下傳nasm.exe并将其放在MinGW/bin目錄。
    下載下傳nasm:https://www.nasm.us/
    另一種方法為:下載下傳nasm源碼,自己解壓進行configure

    下載下傳連結:https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz

    tar xvf nasm-2.13.03.tar.gz

    cd nasm-2.13.03

    ./configure --prefix=/MinGW/

    make && make install

  • 安裝x264

    下載下傳位址:http://mirror.yandex.ru/mirrors/ftp.videolan.org/x264/snapshots/last_x264.tar.bz2

    bunzip2 last_x264.tar.bz2

    tar -vxf last_x264.tar

    cd last_x264

    ./configure --enable-static --enable-shared --disable-asm --disable-avs --prefix=/MinGW/

    make && make install

  • 編譯FFmpeg

    本文FFmpeg源碼路徑位于C:\MinGW\msys\1.0\home (以上所編譯的源碼也大都放在這裡)

    進入C:\MinGW\msys\1.0目錄,執行msys.bat

    cd ffmpeg-4.1.4/ffmpeg-4.1.4

    export PATH="/MinGW/SDL2/bin/:$PATH"

    ./configure --enable-shared --enable-gpl --enable-small --arch=x86_64 --enable-nonfree --enable-libx264 --disabl

    e-static --enable-debug --enable-sdl2 --extra-cflags=’-I/MinGW/SDL2/include/SDL2/’ --extra-ldflags=’-L/MinGW/SDL2/

    lib/’ --prefix=/MinGW/FFmpegExport

    若執行完後,提示sdl2支援找不到,那就是SDL庫的路徑不對,或者是因為SDL2的dev版本無法使用。

    如果執行完後提示WARNING: pkg-config not found, library detection may fail.這個無需理會,這裡不會對編譯 産生影響。

    開始編譯FFmpeg。

    make

    make install

    若編譯過程中出現如下錯誤, 打開libavformat/os_support.h, 添加#include <winerror.h>
    MinGW+Msys+SDL2在Windows下編譯、安裝可調試的FFmpeg并生成ffplay

    編譯完成後需要将MinGW/SDL2/bin/SDL2.dll放置C:/MinGW/ffmpegExport/bin/下, 否則運作ffplay會報

    SDL2.dll找不到。

    同時, 在cmd中使用ffmpeg與ffplay, ffprobe會報libiconv-2.dll找不到, 這時可以從以下網址進行下載下傳, 放入 C:/MinGW/ffmpegExport/bin/下。

    https://download.csdn.net/download/shizheng163/10898267
    到此FFmpeg就可以在Windows下使用了。檢視FFmpeg是否安裝成功,可在msys視窗輸入ffmpeg,顯示如下資訊即可使用。
    MinGW+Msys+SDL2在Windows下編譯、安裝可調試的FFmpeg并生成ffplay
    也可通過ffplay播放視訊進行驗證。由于安裝了x264,可使用一下指令進行檢測x264是否可用。

    ./ffmpeg -i Forrest_Gump_IMAX.mp4 -max_muxing_queue_size 1024 -crf 26 -c:v libx264 -preset placebo -c:a aac -ac

    2 -vsync 0 -y out.mp4

參考文章

  • https://www.imooc.com/article/247113
  • https://blog.csdn.net/zhouyongku/article/details/44961447
  • https://blog.csdn.net/soulmate_scut/article/details/80180092
  • https://blog.csdn.net/tanningzhong/article/details/48573659
  • ffmpeg configure配置選項