1. 程式人生 > >VS2015編譯FFmpeg3.3.1原始碼

VS2015編譯FFmpeg3.3.1原始碼

作業系統:WIN10-64位

編譯平臺:VS2015

FFmpeg版本:3.3.1

解決方案配置:DEBUG (看個人需要選擇DEBUG,RELEASE,DEBUG DLL等)

解決方案平臺:X64

1、下載 依賴包原始碼,依賴包 ShiftMediaProject.rar(內含51個依賴包,包含 nvidia_video_sdk_6.0.1)。
百度網盤 下載地址:
連結:http://pan.baidu.com/s/1ge9F5Qj 密碼:rbeq

2、下載 yasm、vsyasm、nasm 執行程式及指令碼檔案 包 yasm_vsasm_32_64_exe.rar,百度網盤下載地址:

連結: https://pan.baidu.com/s/1kW3ChgV

密碼:ks8t

3、解壓縮 依賴包原始碼:將壓縮包直接在某個磁碟的根目錄下解壓,解壓後的生成資料夾 G:\ShiftMediaProject,各依賴包存放在此資料夾。

4、解壓縮 yasm_vsasm_32_64_exe.rar 到任意目錄,分別複製以下檔案:

64位 windows:
bin_amd64_win64:將 目錄下 的3個exe 檔案 複製 到 D:\Microsoft Visual Studio 14.0\VC\bin\amd64 資料夾下。其他版本的 vs 自己找下。
BuildCustomizations:將 目錄下的 9個檔案 複製到 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations 資料夾下。其他版本的 vs 自己找下。
vc64:將 目錄下 的1個exe檔案複製到 D:\Microsoft Visual Studio 14.0\VC\ 資料夾下。其他版本的 vs 自己找下。
vcbin_win32:將 目錄下 的3個exe檔案複製到 D:\Microsoft Visual Studio 14.0\VC\bin 資料夾下。其他版本的vs自己找下。

32位 windows:(估計的):
BuildCustomizations:將 目錄下的 9個檔案 複製到 C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations 資料夾下。其他版本的 vs 自己找下。
vc32:將 目錄下 的1個exe檔案複製到 D:\Microsoft Visual Studio 14.0\VC\ 資料夾下。其他版本的 vs 自己找下。
vcbin_win32:將 目錄下 的3個exe檔案複製到 D:\Microsoft Visual Studio 14.0\VC\bin 資料夾下。其他版本的vs自己找下。

5、啟動  ShiftMediaProject\FFmpeg\SMP\ffmpeg_deps.sln,配置 nvidia_video_sdk_6.0.1 的 包含目錄和庫目錄:

libavdevice專案右鍵 - Properties (屬性) - VC++ Directories(VC++目錄)- 包含目錄,新增:D:\ShiftMediaProject\nvidia_video_sdk_6.0.1\Samples\common\inc

libavdevice專案右鍵 - Properties (屬性) - VC++ Directories(VC++目錄)- 庫目錄,新增:D:\ShiftMediaProject\nvidia_video_sdk_6.0.1\Samples\common\lib\Win32

libavcodec專案右鍵 - Properties (屬性) - VC++ Directories(VC++目錄)- 包含目錄,新增:D:\ShiftMediaProject\nvidia_video_sdk_6.0.1\Samples\common\inc

libavcodec專案右鍵 - Properties (屬性) - VC++ Directories(VC++目錄)- 庫目錄,新增:D:\ShiftMediaProject\nvidia_video_sdk_6.0.1\Samples\common\lib\Win32

6、右鍵-》解決方案ffmpeg_deps.sln,選擇 “生成解決方案”。
這時候就要進入漫長的等待時間,如果電腦配置差的話估計幹不了別的,因為會卡,不妨看看視訊休息一下。

編譯完成後,如果在輸出目錄G:\msvc\bin\x64(G:ShiftMediaProject所在根目錄)有ffmpeg.exe,ffprobe.exe.ffplay.exe,那麼就成功了,但是我都是會有錯:

錯誤C1083 無法開啟包括檔案: “GL/glext.h”: No such file or directory libavdevice

G:\ShiftMediaProject\FFmpeg\libavdevice\opengl_enc.c43
錯誤C1083 無法開啟包括檔案: “mfx/mfxvideo.h”: No such file or directorylibavutil

G:\ShiftMediaProject\FFmpeg\libavutil\hwcontext_qsv.c22
錯誤LNK1181 無法開啟輸入檔案“libavdeviced.lib”ffplayG:\ShiftMediaProject\FFmpeg\SMP\LINK1
錯誤LNK1181 無法開啟輸入檔案“libavdeviced.lib”ffprobeG:\ShiftMediaProject\FFmpeg\SMP\LINK1
錯誤LNK1181 無法開啟輸入檔案“libavdeviced.lib”ffmpegG:\ShiftMediaProject\FFmpeg\SMP\LINK1

發現明明有GL/glext.h這個標頭檔案,但是它偏偏說找不到,蛋疼。解決方法:

將glext.h從G:\ShiftMediaProject\nvidia_video_sdk_6.0.1\Samples\common\inc\GL拷貝到C:\Program Files (x86)\Windows Kits\8.1\Include\um\gl

然後重新生成解決方案進入漫長等待,最終成功生成ffmpeg.exe三個可執行檔案。

但是很奇怪的是:還有些標頭檔案說找不到,如果實在要用那就像上面一樣放到VS的任意一個包含目錄下吧。

然後F11進入單步除錯的時候提示找不到G:\msvc\ffmpeg.exe, 因為ffmpeg.exe是在G:\msvc\bin\x64目錄下

右鍵ffmpeg專案,屬性,拷貝 連結器->輸出檔案 ($(OutDir)\bin\x64\$(TargetName)$(TargetExt))到 除錯->命令 (覆蓋),ffplay,ffprobe專案同理

最後大功告成,可以進行單步除錯 了,折騰了好久,看個原始碼容易麼?

各位如果成功了記得頂一下

WIN7編譯完成出現的問題:

在WIN7-64位下編譯完成後出現錯誤:無法開啟包括檔案: “GL/glext.h”

然後也是將該檔案拷貝到C:\Program Files (x86)\Windows Kits\8.1\Include\um  ---  $(VC_IncludePath):VC++包含目錄

然後重新編譯成功,F5除錯提示:系統找不到vcomp140d.dll

自己找vcomp140d.dll,然後放在C:\Windows\SysWOW64和C:\Windows\System32下

相關推薦

VS2015編譯FFmpeg3.3.1原始碼

作業系統:WIN10-64位 編譯平臺:VS2015 FFmpeg版本:3.3.1 解決方案配置:DEBUG (看個人需要選擇DEBUG,RELEASE,DEBUG DLL等) 解決方案平臺:X64 1、下載 依賴包原始碼,依賴包 ShiftMediaProject.ra

win7 vs2015編譯protobuf-3.1.0

1、安裝vs2015 2、 安裝cmake https://cmake.org/download/ 3、下載protobuff 3.1.0 https://github.com/google/protobuf/releases/ 解壓protobuf壓縮包,在和prot

Win10+VS2015環境下編譯 OpenCV 3.1和opencv_contrib

一、下載安裝 下載以上內容並安裝opencv和cmake-gui,我的OpenCV安裝路徑為 D:\OpenCV3.1 二、Cmake 做到後面才發現x86和x64的庫生成需要在Configu

手把手練習--cmake+VS2015編譯OpenCV3.3原始碼(x86版本)

1:首先下載OpenCV3.3.0的原始碼: 2:解壓原始碼包opencv-3.3.0.zip,【點選"解壓當前資料夾"】:,為了以下方便說明,這裡以F:\opencv-3.3.0為例: 檢視原始碼包,在資料夾下3rdparty【就是需要的第三方的庫】,但是

flowable-engine6.3.1原始碼編譯

最近專案要整合流程引擎,專案本身使用的是springboot,網上搜索鋪天蓋地的是Activiti和Flowable。兩者區別大家自行百度。最後選擇的是Flowable的最新版本6.3.1。 1、下載原始碼 2、解壓 將原始碼的zip包解壓後方到指定的目錄,修改目錄

ffmpeg3.3.7原始碼編譯

本文介紹在mac os環境下編譯ffmpeg3.3.7原始碼: 建議下載ffmpeg3.3.7和ndk-r14b進行原始碼編譯,否則其它版本可能需要修改編譯指令碼才能成功。當然,如果你比較熟悉shell指令碼或者特定ffmpeg版本的話請自便。 1.下載f

VS2015編譯python 3.6.4原始碼

用了很久python, 最近決定在windows下編譯python的原始碼,還是遇到了幾個坑,花了幾個小時==謹記此文,希望為後來者避開這些坑。 首先,我們從官網下載python 3.6.4的原始碼,選擇Gzipped source tarball 或者 X

ubuntu 18.04編譯Android 7.1原始碼

一、提前安裝軟體 1.安裝openjdk 1) 編譯的時候使用的是openjdk,跟我們平時使用的jdk並不一樣,可以到 http://openjdk.java.net/ 下載安裝,也可以通過下面的指令安裝。 sudo apt-get update sudo apt-get instal

Mac 10.14 編譯Android 8.1原始碼及刷入nexus 6p

環境準備 官網 描述得已經相當清楚了 ,這裡稍微總結一下: 建立區分大小寫的磁碟映像 mac系統預設是不區分大小寫的,所以我們需要建立一個區分大小寫的檔案系統 hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 6

lua5.3.1 原始碼閱讀記錄(基礎)

通用資料結構:Tvalue // lua中所有物件的基本資料結構 union Value { GCObject *gc; /* collectable objects */ void

suricata 3.1 原始碼分析36 (dns解析獲取相關內容)

在app-layer-dns-udp.c檔案的DNSUDPRequestParse函式中呼叫DNSStoreQueryInState函式,該函式在app-layer-dns-common.c檔案中。DNSStoreQueryInState中會取dns資訊,包括type, cl

suricata 3.1 原始碼分析13 (流初始化)

簡介 Suricata中用於管理和維護流的模組稱為Flow Engine,主要由兩部分實現,第一部分的入口點是FlowHandlePacket函式,用於為新資料包進行流查詢/分配,另一部分是FlowManagerThread執行緒,用於對超時的流進行刪除。

編譯spark1.6.1原始碼

正常的情況下從spark官方網站下載的發行包已經可以滿足正常使用(預設支援了hive),但如果要編譯相應cdh版本的hadoop或者把ganglia打包進來等,那就要重新指定編譯引數來重新編譯原始碼了。建議最好在linux環境下進行編譯。 原始碼下載

win10+vs2015編譯osg 3.4.0

最近發現之前寫的軟體裡有點問題,字型顯示不正確,解決了半天,不成功。於是只得重新編譯程式碼了,這個軟體使用了osg。 上次編譯還是兩年前,用的vs2010,現在已經到vs2015了,我上網一查,vs2015能編譯osg,於是我就裝了vs2015,準備工作了。

Nutch2.3.1原始碼開發環境搭建

原始碼下載 修改配置檔案 修改配置檔案conf/nutch-site.xml <!-- Put site-specific property overrides in this file. --> <config

Win7 vs2015編譯protobuf-3.0.0

需要工具: 1. visual studio 2015  2. cmake 3.git[可選] 安裝完畢,繼續 從官網下載protobuf :https://github.com/google/protobuf/releases/tag/v3.0.0 window

suricata 3.1 原始碼分析14 (流查詢分配)

流查詢/分配 通過FlowWorker執行緒函式中呼叫FlowHandlePacket來找到流。 下面將按照FlowHandlePacket的流程,分析flow engine對於新送入的解碼後的資料包是如何處理的。 對於一個Packet,首先在流表中查詢其

編譯Android2.3.5原始碼,提供原始碼

參考文章: 1.編譯android原始碼與核心總結 2.老羅-在Ubuntu上下載、編譯和安裝android最新原始碼 現在說下我的安裝情況吧 我在Ubuntu12 64位機器安裝,使用的離線android 原始碼為參考1中提供的 Android2.3.

jq版本3.3.1原始碼

開發十年,就只剩下這套架構體系了! >>>   

Spring原始碼學習01:IntelliJ IDEA2019.3編譯Spring5.3.x原始碼

目錄 Spring原始碼學習01:IntelliJ IDEA2019.3編譯Spring5.3.x原始碼 前言 工欲善其事必先利其器。學習和深讀Spring原始碼一個重要的前提:編譯原始碼到我們的本地環境。這樣方便我們在本地環境添加註釋、斷點追蹤、檢視類或介面的繼承關係等等,更加高效的學習Spring原始