1. 程式人生 > >windows下編譯可在visual studio中除錯的FFmpeg

windows下編譯可在visual studio中除錯的FFmpeg

工欲善其事,必先利其器。對於一個開源專案最好最快的熟悉方式莫過於自己能夠進行除錯,而FFmpeg又是如此的強大、複雜。自己能夠除錯FFmpeg將給我們節省很多時間,能夠跟快速的學習FFmpeg。分享一下在window7系統下編譯能夠在visual studio2010中進行除錯FFmpeg的過程。

一、編譯環境

windows7 32位 + visual studio2010 + MingGW + FFmpeg-3.2.2

二、編譯工具下載

(1)下載visual studio2010
(2)MinGW
(3)下載C99-to-C89 Converter & Wrapper
(4)Msinttypes
(5)YASM
(6)pkg-config

三、安裝與配置

3.1、MinGW

(1)下載網址https://github.com/libav/c99-to-c89/releases
(2)安裝
下載MinGW並預設安裝(位置C:\MinGW)勾選如下圖所示安裝包進行安裝
這裡寫圖片描述
(3)配置
配置系統環境變數,把C:\MinGW\bin;C:\MinGW\msys\1.0\bin加入到系統環境變數中。
同時找到C:\MinGW\msys\1.0\msys.bat檔案,右鍵編輯,在最前面新增(visual studio2010的安裝路徑),如下圖所示。
這裡寫圖片描述

3.2、Msinttypes

(1)下載地址(http://code.google.com/p/msinttypes/downloads/list)


主要是MSVC 2012 以及之前需要
此時還需要新建一個名為INCLUDE的系統環境變數,變數值隨意指向一個資料夾,這個資料夾下要裝我們所下載的Msinttypes壓縮包內的兩個標頭檔案,我的目錄為D:\FFmpeg\include; ,配置如下圖所示:
這裡寫圖片描述

3.3、配置c99wrap和yasm

(因為vs2010只支援到c89,不支援c99,所以這裡要安裝c99),將C99-to-C89壓縮包裡面的c99conv.exe、c99wrap.exe、makedef著三個檔案複製到C:\MinGW\msys\1.0\bin(根據自己安裝MinGW的目錄決定)。
同時在這個目錄下(C:\MinGW\msys\1.0\bin)找到一個名為link.exe的檔案,將他重新命名一下(隨便換個名字),目的是讓他與vc的link.exe不衝突。
將下載好的yasm-1.3.0-win32.exe(如果是64位的作業系統則下載yasm-1.3.0-win64.exe)改名為yasm.exe,放入系統的執行目錄下,如32位系統則放入到C:\Windows\System32目錄下(64位的放入到C:\Windows\SysWOW64目錄下)。

3.4、配置pkg-config

重啟系統,讓配置環境變數生效

4、編譯安裝FFmpeg

4.1 Configure FFmpeg

(1)進入需要編譯的ffmpeg所在的目錄,我的目錄為:
C:\MinGW\msys\1.0\home\Administrator\ffmpeg-3.2.2
首先修改ffmpeg中的configure讓其支援c99,修改結果如下圖所示:
這裡寫圖片描述
(2)開啟 “Visual Studio 命令提示(2010)” 的命令列視窗,cd 跳轉到這個目錄 “C:\MinGW\msys\1.0”,後執行 msys.bat 命令,這樣就進入了即能執行 vs2010 的 cl 等命令,又能執行 msys 裡面的命行的模式了。如下圖所示:
這裡寫圖片描述
這裡寫圖片描述
(3)然後使用如下命令:
./configure –enable-shared –enable-gpl –enable-version3 –toolchain=msvc –prefix=”D:\FFmpeg\bin\FFmpeg3.2.2”(自己建的檔案,configure根據系統引數及環境生成makefile,為make做準備)

4.2、Make

make -j4進行並行編譯,如出現下圖所示錯誤:
這裡寫圖片描述
解決方法:
把d:\FFmpeg\include\stdint. h中<105><109>行的int_fast16_t和uint_fast16_t註釋掉,編譯成功。
然後通過make install進行安裝

5、在Visual Studio2010中進行除錯

5.1、配置檔案

(1)把上面編譯好的include和lib檔案拷貝到當前專案資料夾中進行配置:
專案右鍵->c/c++->常規->附加包含目錄->新增include的目錄
連結器->常規->附加庫目錄->新增lib的目錄
(2)工具欄->除錯->選項和設定->除錯->符號,如下圖所示:
這裡寫圖片描述

5.2、除錯成功介面

這裡寫圖片描述

6、參考文獻