FFmpeg 自從幾年前開始就不再提供編譯好的Lib & DLL, 導致現在現有的lib和dll都是別人用好的, 於是決定參考網路一些資料, 並且在自己電腦實測, 將編譯的技術分享給各位.
首先我們先來看看成功會是如何,
- 創建資料夾
D > open_project > ffmpeg_vs2019 > msvc & source
- , 名字請一定要照打, 不然沒有辦法透過script來進行編譯.
- 下載FFmpeg
#Step1. 使用git bash 去clone ffmpeg
#Step2. CD D:\open_project\ffmpeg_vs2019\source
#Step3. Clone FFmpeg
- 下載FFmpeg相關的依賴Lib, 這個我們可以透過他裡面的script去做, 這樣我們就不需要一個一個下載, 反而會增加錯誤的風險, 但使用這個方式的前提是, <步驟一>一定要是一模一樣的.
#Step1. CD ffmpeg_vs2019\source\FFmpeg\SMP
#Step2. 執行 ./project_get_dependencies.bat
這裡需要下載一段時間, 並且我建議執行個兩三次, 確認所有的下載都出現以下的提示後, 在繼續下一個動作.
- 其他的文件下載
#Step1. 在ffmpeg_vs2019/msvc裡面創建 include和VSNASM & VSYASM 資料夾, include裡面創一個gl和AMF兩個資料夾, 其他不用管他, 等等程式跑起來的時候會自己創建.
#Step2. CD d:/open_project/ffmpeg_vs2019 , 下載opengl頭文件
- git clone https://github.com/KhronosGroup/OpenGL-Registry
- 找到OpenGL-Registry\api\GL裡面的glext.h和wglext.h放到 ffmpeg_vs2019\msvc\include\gl內
#Step3. CD d:/open_project/ffmpeg_vs2019 , 下載EGL頭文件
- git clone https://github.com/KhronosGroup/EGL-Registry
- 找到EGL-Registry\api\KHR, 複製KHR到ffmpeg_vs2019\msvc\include內
#Step4. CD d:/open_project/ffmpeg_vs2019 , 下載nv-codec頭文件
- git clone https://github.com/FFmpeg/nv-codec-headers.git
- 找到nv-codec-headers\include裡面的ffnvcodec複製到ffmpeg_vs2019\msvc\include內
#Step5. CD d:/open_project/ffmpeg_vs2019 , 下載AMF頭文件
- git clone https://github.com/GPUOpen-LibrariesAndSDKs/AMF
- 將AMF\amf\public\include裡面的兩個文件複製到ffmpeg_vs2019\msvc\include\AMF內
#Step6. CD d:/open_project/ffmpeg_vs2019 , NASM和YASM
- NASM下載: https://github.com/ShiftMediaProject/VSNASM/releases/tag/0.7
- YASM下載: https://github.com/ShiftMediaProject/VSYASM/releases
- 然後將兩個檔案分別在 open_project\ffmpeg_vs2019\msvc內對應的資料夾裡面解壓縮
- 找到你的Visual Studio command tools
- 右鍵 > 然後用系統管理員來執行
- 然後我們cd 到這兩個資料夾內, 分別執行相同的程式
- 然後我們就可以打開去d:\open_project\ffmpeg_vs2019\source\FFmpeg\SMP內打開名為 ffmpeg_desp.sln的程式
#Step1. 打開後, 你就開始編吧, 整個過程大概會需要一些時間, 然後你會產生47個lib.
- 如果有少, 代表你路徑錯誤, 或是你資料夾檔案錯誤沒有放好, 不然一定會有47個succeeded
接下來我們來寫點程式驗證Lib可不可以用吧 !
#Step1. D:\open_project\TEST_FFMPEG_LIB
- 將ffmpeg_vs2019\msvc\include的這五個檔案複製到D:\open_project\TEST_FFMPEG_LIB\inc
- Lib的話可以先複製這兩個 libavformatd.lib & libavutild.lib
- 接下來我們到程式裡面去做一些基本配置
程式本體,
執行結果
以上就是如何在windows底下一次將ffmpeg包成lib的方式, 在網路上有許多不同的方式, 但都是要一個一個lib包一次, 那很麻煩, 有了這個方式之後, 以後只要有新出的FFmpeg, 就可以一次打包了; 之後有想到什麼再補充, 照上面的做法是可以成功的, 如果有不行的話請隨時和我說.