https://github.com/ShiftMediaProject
在ShiftMediaProject同级目录,新建msvc/include/AMF目录、msvc/include/gl目录。并下载Advanced Media Framework (AMF) SDK headers( https://github.com/GPUOpen-LibrariesAndSDKs/AMF),opengl(链接: https://pan.baidu.com/s/1RaszDV_EFOE-TgqvEm3-fQ 密码: dsvj)、nv-codec-headers(https://github.com/FFmpeg/nv-codec-headers)
5. 将下载得到的AMF-master/amf/public/include下的内容拷贝到msvc/include/AMF下;将前步下载得到的nv-codec-headers-master/include/下的ffnvcodec文件夹拷贝到msvc/include/目录下;将下载得到的opengl中的GLEXT.H、WGLEXT.H文件拷贝到msvc/include/gl文件夹下。
6. 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$(PlatformArchitecture)“,保存。最后将vsyasm.exe拷贝到C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin目录下
7. 进入到ShiftMediaProject/FFmpeg***/SMP目录下,打开ffmpeg_deps.sln,发现所有项目均已加载成功,如图:
若出现用到汇编的项目加载失败,则第6步配置存在问题。
8. 编译所有项目,第一次编译过程中,可能会提示无法打开***.h文件之类的错误,不用管,等编译完再重新编译即可。若编译过程中出现如图错误:
则是汇编语言编译器可执行文件的拷贝路径存在问题。请参考第6步配置。
9. 编译完成后,在之前新建的msvc目录下产生了许多输出文件,如图:
题外话:对于上图笔者比较好奇的是,在msvc这个结果目录里面,ShiftMediaProject不仅输出了编译好的lib文件,竟然把相关的头文件也给拷贝过来了,也就是说,以后我们想写FFMPEG的相关程序,直接在我们的新项目里面包含该目录就可以了。这一招是怎么实现的,笔者之前是没接触过啦,上网查了之后原来是ShiftMediaProject的大神利用VS工程项目属性里的BUILD EVENT实现的。举个例子,利用对于libavcodec这个项目,如图:
大神在Post-Build Event里面写了个脚本,告诉VS编译完要做的工作:
最后将lib文件夹下,在我们的ffmpeg项目中所要到的库所对应的.pdb文件拷贝到新项目的DEBUG目录下(是.exe文件所在的目录),比如在我的live555项目play这个程序用到了ffmpeg:
如上图所示,即可在Debug模式下对ffmpeg的相关函数进行跟踪,最后附上一张结果图:
左图为调用ffmpeg的函数,右图为ffmpeg的库函数。
笔者经验:我原本是在visual studio 2013上编译,结果报了很多语法性的错误,后来直接将VS2013到update5才编译通过.
微信
支付宝