使用vs2013或vs2015 編譯ffmpeg

本篇原始出處也在?我的有道云筆記?中。

參考的資料主要是下面兩篇?

1、http://www.vcmfc.com/portal.php?mod=view&aid=27

2、(要翻墻)http://siliconandlithium.blogspot.jp/2014/01/building-ffmpeg-in-visual-studio.html

? ? ? 我的系統(tǒng)是Win10 LTSB企業(yè)版,一開始在VS2013上編譯,遇到點(diǎn)問題,求教第一篇文章的作者,他建議我用VS2015。后來發(fā)現(xiàn)其實(shí)用VS2013是沒有問題的,因此筆記中的截圖有可能是2013,也有可能是2015。

步驟如下:

1、從這里完整下載所有源代碼

? ? ?https://github.com/ShiftMediaProject

? ? ?一共48個(gè),實(shí)際用到了哪些我也沒管,總之我全部clone到本地了。

注意:

? ? ? ?用git clone,這樣下載下來的源代碼目錄無需改名,后續(xù)在VS里加載很方便。如果下載的zip,解壓后注意去掉"-master "的后綴。

? ? ? ?建議在根目錄新建個(gè)目錄,比如我建了D:\ShiftMediaProject這個(gè)目錄,在這個(gè)目錄下面git clone,一來好管理,二來生成的exe會(huì)在代碼目錄的上兩級(jí)。

2、打開“FFmpeg\SMP\ffmpeg_deps.sln”解決方案文件,有部分工程項(xiàng)目加載失敗

這個(gè)時(shí)候,如果你通過菜單嘗試手工添加失敗的項(xiàng)目,會(huì)提示出錯(cuò)

什么都不要做!直接退出VS。

3、從這里下載“vsyasm-1.3.0-win32.zip”。

? ? ?如果是vs2013,將“vsyasm-1.3.0-win32.zip”解壓到“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations”,

? ? ?如果是vs2015,將“vsyasm-1.3.0-win32.zip”解壓到“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations“。

4、修改”vsyasm.props“文件,將文中”$(Platform) “ 修改為 ”win$(PlatformArchitecture)“,保存。

5、再次打開“FFmpeg\SMP\ffmpeg_deps.sln”解決方案文件,會(huì)發(fā)現(xiàn)所有項(xiàng)目均正常加載。

6、直接開始編譯,很不幸,錯(cuò)誤很多啊。

7、其中一個(gè)錯(cuò)誤是(截圖是別人的,我出問題后忘了截圖,這里借用下,但都是類似的關(guān)于vsyasm的)

很好解決,將第3、4步改好的BuildCustomizations目錄下的vsyasm工具文件同時(shí)要拷貝一份到另一個(gè)目錄:

如果用的是vs2013,是“C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin”,

如果用的是vs2015,是“C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin”。

8、rebuild,第一個(gè)錯(cuò)誤是這個(gè)

google了很久也沒找到原因,后來直接把第100行給注釋了,freetype2就編譯通過了

誰能告訴我為什么?

9、接著處理編譯錯(cuò)誤,是這個(gè)

這個(gè)頁面的左下角下載“nvidia_video_sdk_6.0.1.zip”,解壓到 D:\ShiftMediaProject 目錄下。

10、libavdevice項(xiàng)目右鍵 - Properties - VC++ Directories,添加

Include Directories:D:\ShiftMediaProject\nvidia_video_sdk_6.0.1\Samples\common\inc

Library Directories:D:\ShiftMediaProject\nvidia_video_sdk_6.0.1\Samples\common\lib\Win32

11、libavcodec項(xiàng)目右鍵 - Properties - VC++ Directories,同上添加inc和lib。

12、接下來build就成功了,輸出的可執(zhí)行文件目錄在D:\msvc下。

13、如果直接debug,會(huì)提示

原因是項(xiàng)目設(shè)置的輸出文件(Link.OutputFile)與Debugging的Command不一致,Debugging Command初始的設(shè)置是

$(TargetPath)是"D:\ShiftMediaProject\FFmpeg\SMP\..\..\..\msvc\ffplay.exe"

實(shí)際的可執(zhí)行文件按下面的設(shè)置輸出在 "D:\ShiftMediaProject\FFmpeg\SMP\..\..\..\msvc\bin\x86\ffplay.exe"

修改一下Debugging中的Command如下

注意在Command Arguments添加要播放的文件或者網(wǎng)絡(luò)路徑。

補(bǔ)充一下:有時(shí)候編譯失敗,會(huì)發(fā)現(xiàn)在編譯輸出目錄msvc下bin不是個(gè)目錄,而是個(gè)文件。應(yīng)該是某個(gè)project里的Post build Event中,copy命令中目標(biāo)地址bin后沒有\(zhòng),導(dǎo)致系統(tǒng)認(rèn)為將某個(gè)文件拷貝改名為bin。比如

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容