本篇原始出處也在?我的有道云筆記?中朝群。
參考的資料主要是下面兩篇?
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上編譯,遇到點問題久妆,求教第一篇文章的作者,他建議我用VS2015跷睦。后來發(fā)現(xiàn)其實用VS2013是沒有問題的筷弦,因此筆記中的截圖有可能是2013,也有可能是2015抑诸。
步驟如下:
1烂琴、從這里完整下載所有源代碼
? ? ?https://github.com/ShiftMediaProject
? ? ?一共48個,實際用到了哪些我也沒管蜕乡,總之我全部clone到本地了奸绷。
注意:
? ? ? ?用git clone,這樣下載下來的源代碼目錄無需改名层玲,后續(xù)在VS里加載很方便号醉。如果下載的zip,解壓后注意去掉"-master "的后綴称簿。
? ? ? ?建議在根目錄新建個目錄扣癣,比如我建了D:\ShiftMediaProject這個目錄,在這個目錄下面git clone憨降,一來好管理父虑,二來生成的exe會在代碼目錄的上兩級。
2授药、打開“FFmpeg\SMP\ffmpeg_deps.sln”解決方案文件士嚎,有部分工程項目加載失敗
這個時候,如果你通過菜單嘗試手工添加失敗的項目悔叽,會提示出錯
什么都不要做莱衩!直接退出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”解決方案文件呆盖,會發(fā)現(xiàn)所有項目均正常加載。
6贷笛、直接開始編譯应又,很不幸,錯誤很多啊乏苦。
7丁频、其中一個錯誤是(截圖是別人的,我出問題后忘了截圖邑贴,這里借用下,但都是類似的關(guān)于vsyasm的)
很好解決叔磷,將第3拢驾、4步改好的BuildCustomizations目錄下的vsyasm工具文件同時要拷貝一份到另一個目錄:
如果用的是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稠腊,第一個錯誤是這個
google了很久也沒找到原因,后來直接把第100行給注釋了鸣哀,freetype2就編譯通過了
誰能告訴我為什么架忌?
9、接著處理編譯錯誤我衬,是這個
從這個頁面的左下角下載“nvidia_video_sdk_6.0.1.zip”叹放,解壓到 D:\ShiftMediaProject 目錄下。
10挠羔、libavdevice項目右鍵 - 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項目右鍵 - Properties - VC++ Directories破加,同上添加inc和lib俱恶。
12、接下來build就成功了范舀,輸出的可執(zhí)行文件目錄在D:\msvc下合是。
13、如果直接debug尿背,會提示
原因是項目設(shè)置的輸出文件(Link.OutputFile)與Debugging的Command不一致端仰,Debugging Command初始的設(shè)置是
$(TargetPath)是"D:\ShiftMediaProject\FFmpeg\SMP\..\..\..\msvc\ffplay.exe"
實際的可執(zhí)行文件按下面的設(shè)置輸出在 "D:\ShiftMediaProject\FFmpeg\SMP\..\..\..\msvc\bin\x86\ffplay.exe"
修改一下Debugging中的Command如下
注意在Command Arguments添加要播放的文件或者網(wǎng)絡(luò)路徑。
補充一下:有時候編譯失敗田藐,會發(fā)現(xiàn)在編譯輸出目錄msvc下bin不是個目錄荔烧,而是個文件吱七。應(yīng)該是某個project里的Post build Event中,copy命令中目標地址bin后沒有\(zhòng)鹤竭,導(dǎo)致系統(tǒng)認為將某個文件拷貝改名為bin踊餐。比如