VS2015编译FFmpeg3.3.1源码

<<摘自博主On1Yethttp://blog.csdn.net/et_endeavoring/article/details/75331359>>

操作系统:WIN10-64位

编译平台:VS2015

FFmpeg版本:3.3.1

解决方案配置:DEBUG  (看个人需要选择DEBUG,RELEASE,DEBUG DLL等)

解决方案平台:X64


1、下载 依赖包源码,依赖包 ShiftMediaProject.rar(内含51个依赖包,包含 nvidia_video_sdk_6.0.1)。(github:https://github.com/ShiftMediaProject)
百度网盘 下载地址:
链接:http://pan.baidu.com/s/1ge9F5Qj 密码:rbeq

2、下载 yasm、vsyasm、nasm 执行程序及脚本文件 包 yasm_vsasm_32_64_exe.rar,百度网盘下载地址:
链接:http://pan.baidu.com/s/1c2L7hFq 密码:gw60

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下

你可能感兴趣的:(FFmpeg)