博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用vs2013或vs2015 编译ffmpeg
阅读量:4183 次
发布时间:2019-05-26

本文共 2133 字,大约阅读时间需要 7 分钟。

本篇原始出处也在  中。

参考的资料主要是下面两篇 

1、

2、(要翻墙)

      我的系统是Win10 LTSB企业版,一开始在VS2013上编译,遇到点问题,求教第一篇文章的作者,他建议我用VS2015。后来发现其实用VS2013是没有问题的,因此笔记中的截图有可能是2013,也有可能是2015。

步骤如下:

1、从这里完整下载所有源代码

     

     一共48个,实际用到了哪些我也没管,总之我全部clone到本地了。

注意:

       用git clone,这样下载下来的源代码目录无需改名,后续在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”解决方案文件,会发现所有项目均正常加载。

6、直接开始编译,很不幸,错误很多啊。

7、其中一个错误是(截图是别人的,我出问题后忘了截图,这里借用下,但都是类似的关于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就成功了,输出的可执行文件目录在D:\msvc下。

13、如果直接debug,会提示

原因是项目设置的输出文件(Link.OutputFile)与Debugging的Command不一致,Debugging Command初始的设置是

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

实际的可执行文件按下面的设置输出在 "D:\ShiftMediaProject\FFmpeg\SMP\..\..\..\msvc\bin\x86\ffplay.exe"

修改一下Debugging中的Command如下

注意在Command Arguments添加要播放的文件或者网络路径。

补充一下:有时候编译失败,会发现在编译输出目录msvc下bin不是个目录,而是个文件。应该是某个project里的Post build Event中,copy命令中目标地址bin后没有\,导致系统认为将某个文件拷贝改名为bin。比如

作者:继续奔跑的攻城狮
链接:http://www.jianshu.com/p/e72e6dce7f23
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
你可能感兴趣的文章
如何将 Office 应用程序配置为在交互式用户帐户下运行
查看>>
TCP,IP详解,卷一:协议学习笔记之第三章IP:网际协议
查看>>
Linux命令之chmod详解
查看>>
Linux 安装 Elasticsearch运行及问题解决
查看>>
Linux入门看着一篇就文章就够了
查看>>
微服务发展历程
查看>>
业务基础环境搭建及api网关
查看>>
Dubbo启动检查、负载均衡、多协议支持
查看>>
Dubbo的异步调用
查看>>
Dubbo特性结果缓存、并发与连接控制
查看>>
dubbo服务分组、限流措施以及服务熔断降级
查看>>
Dubbo特性之本地存根、本地伪装和隐式参数传递
查看>>
Oracle恢复某个时间之前的数据
查看>>
Spring Cloud Alibaba 教程 | 安装 Nacos(一)
查看>>
Mysql生成连续的日期统计,没有结果的补充为0
查看>>
Spring Cloud Alibaba 教程 | 将服务注册到 Nacos(二)
查看>>
Spring Cloud Alibaba 教程 | Nacos 配置中心(三)
查看>>
Spring Cloud Alibaba 教程 | Nacos 集成 Feign(四)
查看>>
Git切换项目当前登录账号
查看>>
Spring security 基本原理(一)
查看>>