win7vs2017怎么编写c语言,Win7 VS2017 NASM编译FFMPEG

今天无意中在gayhub发现个牛逼工程,全VS工程编译FFMPEG库,包括依赖库全是VS生成的,无需Mingw等Linux环境。

简单记录下过程,以防将来重装系统等情况,备忘。

git clone 此项目,运行SMP\project_get_dependencies.bat 下载。

不过我之前并不知道这个自动下载依赖,我直接clone了这个人的所有项目......

查看SMP\readme.txt,可知,除了相关库外,还需要单独下载一些他没有带的内容。

你需要建一个目录,包含这些单独的头文件。

比如叫__FFMPEG_Need,建立一个include目录,再在其下建立4个目录

AMF

ffnvcodec

gl

KHR

在gl目录中放入以下2个文件

KHR放入

然后clone这个项目

把这个项目include下的内容,直接放到我们当前include目录即可,也就是复制那个ffnvcodec目录

最后clone AMF

amf/public/include

内容放到你的AMF目录下,也就是把

components

core

复制到AMF目录下

至此,include目录准备完毕,等会编译工程,把这个目录加入所有工程include路径即可,你可以选择加入VS全局include目录里。

========================================

接下来下载YASM和NASM

YASM只需下载exe即可,32还是64位随意,我只需要32位,

下好后改名yasm.exe

建个目录,比如

E:\Yasm

把yasm.exe放入

新建环境变量YASMPATH,写入路径地址

20181222233205216992.png

注意路径最后要有反斜杠\结尾

然后下载NASM

要下载安装器,不知道为什么,我下载zip好像失败了,所以只能用exe安装版本。

把nasm安装一下,比如

E:\nasm-2.14

之后同上,新建环境变量NASMPATH,加入路径

20181222233205568554.png

因为我是单独clone的所有工程,所以

在这2个工程里,把每个工程的

.props

.targets

.xml

类型配置文件,1个工程有3个文件,总共6个文件,复制到类似下面的目录中,也就是你VS2017的配置目录,VS默认只有masm的配置

D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\BuildCustomizations

然后打开SMP\ffmpeg_deps.sln工程,如果提示更新一些VS组件就都选是更新。

如果工程全都可以打开,不缺少工程的话,那么配置就OK了。如果有加载不了的项目,分2种情况

1.如果是少工程就补全工程。

其他工程都与ffmpeg同级。

ffmpeg

libass

这样同级目录

20181222233205601757.png

2.如果工程文件目录都正常存在,但是还是加载不了,可能就是YASM和NASM配置有问题,但是现在应该都配置好了,我是先有问题,才后装的NASM。

最后,你应该得到一个可以打开

FFmpeg\SMP\ffmpeg_deps.sln

之后,所有工程都可以加载上的,没有Load Fail的Solution

20181222233205707226.png 

此时如果编译libav之类的库,一定会提示缺少头文件,因为最开始单独下载的那些include头文件没有放进VS全局目录,加入即可。

比如

E:\PProjects\GitDownloads\__FFMPEG_Need\include

然后再次编译,直接编译debug即可,因为主要是学习原理,而非测试运行效率。

如果全都编译通过没有错误,就可以再打开

FFmpeg\SMP\ffmpeg.sln

把ffplay之类的也编译了,对我来说ffplay才是重点,因为这是播放器应用实例,我个人能在网上找到播放视频最实用的例子了。

展开ffplay工程,ffplay.c文件,如果直接编译这个ffplay,生成的ffplay.exe播放视频会提示音频初始化失败而播放不出声音,似乎是因为dsound初始化失败了。

根据之前2次编译ffplay的经验,在文件头加入window头

#include

20181222233205748242.png

搜索SDL_OpenAudioDevice

在这行前加入

CoInitialize(NULL);

再编译即可修复音频问题。

20181222233205805859.png

我的FFMPEG工程目录在

E:\PProjects\GitDownloads\FFmpeg

那么生成的文件在

E:\PProjects\msvc\bin\x86\ffplay.exe

这个msvc目录似乎是自动生成的

还不算完,现在要测试一个带字幕的视频文件,并且用ffplay播放字幕。

一般的命令,比如ffplay mv.mkv是不会播放视频的字幕的。

想播放字幕,正确的用法是

ffplay -vf subtitles=filename=mv.mkv mv.mkv

这样才行

20181222233205866406.jpg

至此结束,可以开始断点跟踪代码走向了,最叼的是全VS工程,完全可控的代码,让你有心情看到每一个库的内容,而不是像屎一样的那种一堆源码,自动编译完就能用的那种垃圾。

NASM开发了IDE,听起来很复杂,但并不像看上去那么复杂。虽然汇编编程不是那么容易的微分方程(可能是一个坏例子)。该IDE设计重量轻,但同时使用方便。因为汇编编程对于所有的命令行来说都是一件痛苦的事情。现在有人可能会说记事本++可以完成这项工作,但事实是记事本++只是一个具有可扩展插件的高级源代码编辑器。 特点:创建和打开一个项目(就像在Visual Studio中那样,但要容易得多)。项目格式基于XML,类似于Visual Studio解决方案 ;能够 突出显示语法的源编辑器,具有 调试/运行和构建(编译、链接)、输出窗口(用于错误和警告) 、编译后实时突出显示错误,日志记录系统,其中一个方便的日志文件在应用程序旁边,以防最坏的情况发生——应用程序由于灾难性的未散列错误而崩溃。 自动更新功能,允许您在IDE中更新,无需从源代码重新生成或下载并安装任何东西。能够组装COM文件。需要一台可以运行旧MS-DOS代码的计算机。 添加了对PowerShell脚本和批处理脚本的内部脚本支持。对于高级用户。单击文档链接, 了解如何工作:NASM开发IDE高级功能指南:使用自定义脚本功能构建所有功能都可以在程序中完成。记住,只是一个简单易用的图形界面。最好的是不需要NASM命令行经验。不支持C,请记住,我设想这个项目是一个简单易用的NASM IDE,如果您想开发C应用程序,它们是许多专有的IDE,如Visual Studio,甚至是开源的。这意味着没有C源文件。 但是,如果你真的非常需要它,它不使学习NASM或其他低级汇编语言变得容易。它只是让构建NASM应用程序变得更容易,而不必反复输入无聊的命令;或者反复运行相同的脚本。尽管我可能会添加几个从小型到中型的NASM示例项目,但只要第一个预览版本发布了。如果社区想要捐赠优秀的示范项目,那就加入这个项目吧。 截至2012年11月17日,第一个测试版已经发布了许多错误修复、功能和改进。官方支持Windows 8!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值