这篇文章是根据《ShiftMediaProject+VS2017+win764位环境搭建》 《使用 VS2015 编译并调试 ffmpeg》来编译的,亲自测试,并做个记录。

一环境
(1)、win7 64企业版
(2)、VS2015业版
(3)下载源代码工具 : git 客户端

二、下载源代码
1.项目地址:https://github.com/ShiftMediaProject/FFmpeg

需要注意的是,克隆到本地的目标项目目录 至少需要有2层,因为期望的项目的结构是这样子的:

  • msvc (OutputDir)                (该项目默认的 VS 编译输出的目录)
  • source                      (这个是需要的上一级目录,待会下载的依赖项目有很多,十几二十来个依赖项目都会下载到这里)
      - FFmpeg                    (这个是 clone 到本地的项目目录)
      - …Any other libraries source code… (其他的十几二十个依赖的项目)
    准备好文件夹后,比如这里上面的 “source” 文件夹,在这个文件夹下,克隆代码下来

git clone https://github.com/ShiftMediaProject/FFmpeg.git

2、切换到ffmpeg/SMP下,运行脚本project_get_dependencies.bat,该过程会下载编译ffmpeg所依赖的所有代码。过程比较耗时,可重复执行该命令,保证所有依赖代码全部下载。

下载项目中默认提供的其他依赖的 git 项目
ShiftMediaProject 使用默认的配置生成了一些项目文件,这些文件可以使用 VS 打开,同时需要依赖特定的额外的项目,才能进一步编译。

依赖的项目包括:

bzlib    iconv    zlib    lzma    libxml2    sdl2    libmp3lame    libvorbis    libspeex    libopus
libilbc    libtheora    libx264    libx265    libxvid    libvpx    libgme    libmodplug    libsoxr    libfreetype
fontconfig    libfribidi    libass    gnutls    libgcrypt    libssh    libcdio    libcdio_paranoia
libbluray    opengl    ffnvcodec    libmfx

上面大部分的依赖项目都被放在了 ShiftMediaProject 用户的 git 仓库,这些都可以手动下载,当然强烈建议还是使用 FFmpeg\SMP\project_get_dependencies.bat 批处理自动clone下载,这个脚本不仅仅可在第一次用于clone项目(及其本身依赖的其他git项目),还可以在后面任何时候执行,用来自动更新各自最新的版本

下载完后得到的文件如下:

3、从https://github.com/ShiftMediaProject/VSNASM下载VSNASM。
4、从https://github.com/ShiftMediaProject/VSYASM载VSYASM。

三、编译环境配置
1.安装VS汇编语言编译器nasm和vsyasm
方法1:
下载完后,注意最好 不要 直接运行 install_script.bat

最好是先 以管理员身份,在预设好 VS 相关变量的脚本环境中 (开发者命令行 / dev command line),运行该 install_script.bat 脚本

nasm:报错如下

没有找到解决的办法,转到方法2。

方法2:
分别执行 nasm和yasm只需运行各自文件夹下的install_script.bat安装脚本(注:要求管理员权限的命令行提示符运行)
nasm:直接运行

yasm:

一般YASM 不会有什么问题,如果NASM安装不上,可以手动下载安装包,nasm-2.14.02-win64.zip然后修改install_script.bat(没有试过)
转到方法3.

方法3:
(1)、将下载的VSYASM和VSNASM中的.props,.targets和.xml复制到“安装目录\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\BuildCustomizations”下。
(2)、将下载的VSYASM中的yasm-32.exe(根据自己编译的ffmpeg位数而定),复制到“安装目录\Microsoft Virusl Studio\2017\Enterprise\VC”下,并命名为yasm.exe。
(3)、从mingw中找到nasm.exe(根据自己编译的ffmpeg位数而定),复制到“安装目录\Microsoft Virusl Studio\2017\Enterprise\VC”下。

2.在/ffmpeg/SMP下有一个readme.txt,可根据其中的说明配置opengl, ffnvcodec和AMF。如下:
Many of the possible FFmpeg dependencies (and there dependencies) are available in the ShiftMediaProject repositories.
However the following is a list of extra dependency options that require external downloads:
1) opengl (requires glext)
a) Download glext.h and wglext.h from opengl.org.
b) Save the header files into “OutputDir/include/gl/".
c) Download khrplatform.h from khronos.org
d) Save the header file into "OutputDir/include/KHR/
”.
2) ffnvcodec (requires nv-codec-headers)
a) Download the nv-codec-headers repository from https://github.com/FFmpeg/nv-codec-headers
b) Save the contents of the nv-codec-headers repositories “include” folder into “OutputDir/include/".
3) AMF (requires Advanced Media Framework (AMF) SDK headers)
a) Download the AMF repository from https://github.com/GPUOpen-LibrariesAndSDKs/AMF
b) Save the contents of the AMF repositories “amf/public/include” into "OutputDir/include/AMF/
”.

1、下载 opengl 的 glext.h 和 wglext.h 到 " OutputDir/include/gl/* "   
2、下载 opengl 的 khrplatform.h 到 " OutputDir/include/KHR/* "
3、下载 nv-codec-headers 项目的 “include” 文件夹下的内容到 " OutputDir/include/* "
4、下载 AMF 项目的 “amf/public/include” 文件夹下的内容到 " OutputDir/include/AMF/* "

复制代码
OutputDir 是在项目属性里指定了的 “输出目录 ”
默认的项目输出目录是相对于 FFmpeg 源代码目录的 “…\msvc”

一个预期的目录结构如下,(这个也是前面 2、下载源代码 步骤中提到的文件结构)

  • msvc (OutputDir)                (该项目默认的 VS 编译输出的目录)
  • source                      (这个是需要的上一级目录,待会下载的依赖项目有很多,十几二十来个依赖项目都会下载到这里)
      - FFmpeg                    (这个是 clone 到本地的项目目录)
      - …Any other libraries source code… (其他的十几二十个依赖的项目)
    复制代码

所以,如上创建 msvc 目录,按步骤创建文件夹并下载对应文件(想偷懒的可以直接点击我下载后打包的 msvc.zip )

四、编译
用VS2015打开ffmpeg/SMP下的ffmepg_deps.sln.编译整个solution,ok。只要按照上述的方法,文件放置正确,可一次编译成功。编译出的文件在D:/ffmpeg/msvc

编译:LINK : fatal error LNK1104: 无法打开文件“libavfilterd.lib”


解决办法:(原文地址在文章结尾)
ShiftMediaProject项目中用到汇编语言编译器的项目有:

libxvidcore: yasm
libx265: nasm
libx264: nasm
libvpx: yasm
libswscale: vsyasm
libsaresample: vsyasm
libnettle: yasm
libhogweed: yasm
libgnutls: yasm
libgmp: yasm
libavutil: vsyasm
libavfilter: vsyasm

libavcodec: vsyasm

libass: yasm

为此,需将汇编语言编译器nasm(https://github.com/ShiftMediaProject/VSNASM)、yasm(https://github.com/ShiftMediaProject/VSYASM)、vsyasm(https://link.jianshu.com/?t=http://www.tortall.net/projects/yasm/releases/vsyasm-1.3.0-win32.zip)集成到visual studio2013中。 方法分别是:nasm和yasm只需运行各自文件夹下的install_script.bat安装脚本(注:要求管理员权限的命令行提示符运行),否则可能会安装失败。安装的结果为:拷贝(.pros、.targets、.xml)到C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations目录下,自动下载相应的可执行文件到C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC目录下(注意:这两处的路径跟VS安装的版本和路径有关)。vsyasm则需手动拷贝(.pros、.targets、.xml)三个文件到上述的BuildCustomizations目录下,并将vsyasm.pros文件中的将文中”(Platform)“修改为”win(Platform) “ 修改为 ”win(Platform)“修改为”win(PlatformArchitecture)“,保存。最后将vsyasm.exe拷贝到C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin目录下

编译成功!

在X86下编译
libx264以及使用这个依赖项的其他项目编译不过,x64全部都能编译通过。

经大神提醒:应该是不小心搞坏了。为此删掉libx264重新下载,编译通过

五、调试
调试报错如下:

根据如下解决:
最后的最后,编译完运行 “本地 Windows 调试器”,大概会弹出错误如下:

这是因为“调试”->“命令”使用的文件路径,和 实际在“链接器”->“常规”中设置的“输出文件”路径不一致导致,将前者设置和后者一致即可。

现在可以调试如下

参考文章:
1.《VS2013 update5 采用ShiftMediaProject编译FFmpeg》
2.《vs2015编译ffmpeg源代码,ShiftMediaProject编译FFmpeg》
3.《win10 vs2017 ShiftMediaProject/ffmpeg 工程编译 踩过的坑 总结篇》

ShiftMediaProject+VS2015win764位环境搭建相关推荐

  1. win8能开发android的sdk么,win8.1 64位环境搭建android开发环境

    2.安装刚刚下载的JDK 3.环境变量配置, 新建JAVA_HOME系统变量:C:Program FilesJavajdk1.7.0_65(JDK安装目录) 新建CLASS_PATH系统变量: .;% ...

  2. Linux入门-环境搭建、基本指令以及权限讲解

    这次我给大家介绍Linux系统,究竟怎么更快上手Linux,怎么学习Linux?接下来我给大家分享一下干货. Linux入门 环境搭建 Linux指令 基本指令 ls命令 cd指令 安装软件的指令 r ...

  3. stm32f4 hal 4位数码管_STM32裸机开发基础篇01开发环境搭建(HAL库)

    前言 众所周知,在32位单片机中,STM32占有重要市场份额,其社区活动频繁,网上相关资料也比较多,无论是学习入门,还是工作使用,都无疑是极好的选择,本节开始,我们将学习如何使用STM32,首先,我们 ...

  4. (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功

    (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功 Visual Studio 2015下载地址:https://msdn.itellyo ...

  5. 64位Windows7下TQ2440开发板的环境搭建

    一年前就买了TQ开发板TQ2440,但是按照开发手册一直玩不了,当时并没有找出原因,后来发现根本问题是驱动不对,软件一般都分32位和64位,驱动也一样. 环境搭建一般就是安装软件,这不需要废话了,可以 ...

  6. 32位tomcat_64的mysql_tomcat环境搭建

    在liunx上搭建web服务器(tomcat_别名:中间件,web应用服务器.项目容器.) 一.环境准备(开发正式提测之前2天):没有的话,把jdk.tomcat.mysql安装好 uname -a  ...

  7. Hadoop2.2.0伪分布式环境搭建(附:64位下编译Hadoop-2.2.0过程)

    Hadoop2.2.0伪分布式环境搭建: 写在前面:Hadoop2.2.0默认是支持32位的OS,如果想要在64位OS下运行的话,可以通过在64位OS下面编译Hadoop2.2.0来实现,编译的操作步 ...

  8. win7下android开发环境搭建(win7 64位)

    注意:此为win7 (64)位系统 那么win7下32位系统如何进行android开发环境搭建呢?>>>win7下android开发环境搭建(win7 32位) 一.安装 JDK 下 ...

  9. 和12岁小同志搞创客开发:手撕代码,Arduino IDE 软件下载和环境搭建

    目录 1.软件下载 2. 软件安装 3.环境搭建和使用 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_3810 ...

最新文章

  1. Datawhale组队学习周报(第032周)
  2. ​Openresty最佳案例 | 第8篇:RBAC介绍、sql和redis模块工具类
  3. Windows 技术篇 - 如何查看cpu支持的指令集、型号、属性等详细信息,使用cpu-z工具查看处理器、内存、显卡、主板、缓存、SPD信息方法
  4. python集合的并集、交集_Python 集合set()添加删除、交集、并集、集合操作详解
  5. python 单元测试_Python 单元测试(unittest)
  6. [python] LDA处理文档主题分布及分词、词频、tfidf计算
  7. wpf调用其他项目界面_WPF开发Prism框架实现一个简单播放器
  8. 无法扩展该卷 因为群集的数量将超过文件系统_浏览器将支持Python项目!Mozilla发布Pyodide...
  9. pyCharm最新2017激活
  10. 冒泡、鸡尾酒、选择、插入、归并、快速排序的C++程序
  11. 乐鑫科技线上笔试什么内容_2020广东省公务员考试笔试考什么内容?笔试如何去备考?...
  12. soem学习2 osal
  13. Linux时间戳与日期相互转换
  14. PDF文件怎样修改,怎么修改PDF文件内容
  15. numpy与scipy安装
  16. 正高职称 程序员_软考通过之后,如何评职称呢?
  17. 计算机社团宣传招新活动方案,社团招新策划书范本及活动方案
  18. python 泰森多边形边界_泰森多边形
  19. 电脑c盘哪些文件可以删除_c盘满了怎么清理垃圾而不误删(答案在这里)
  20. 电脑硬件及电脑配置知识大全

热门文章

  1. 第 0000 题: 将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果。
  2. 机器人界面调试问题记录
  3. hi3635c uboot 初始化 nor flash (XM25QH128AHIG)
  4. GML,SVG,VML COMPARATION
  5. 【新书速递】程序员必会的40种算法
  6. 计算机专业课题 结题报告,科研项目结题报告表
  7. 单片机之晶振频率(单片机的心脏)
  8. 【飞书应用】自动生成文档
  9. 【旧文档2016年】一种提升黑屏手势响应速度的方法
  10. 了解js中什么是回调函数?