[普通]VS2015 采用ShiftMediaProject编译FFmpeg

作者(passion) 阅读(1973次) 评论(0) 分类( 软件)

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才编译通过.


« 上一篇:wifi共享上网(至尊版wifi)
« 下一篇:cmake教程
在这里写下您精彩的评论
  • 微信

  • QQ

  • 支付宝

返回首页
返回首页 img
返回顶部~
返回顶部 img