ShiftMediaProject项目介绍

简介: ShiftMediaProject项目介绍

前面用 WinDgb 跟 VsDebug 断点调试 FFmpeg 源码还不太方便,有没有一种方法能跟 Ubuntu + clion 那样直观地看到各种数据结构 ?

这里就需要介绍一下 Matthew 维护的 ShiftMediaProject 这个项目。虽然这不是一个官方的项目,但是非常好用。

截图一下项目介绍,如下:

ShiftMediaProject 下面有很多子项目,包括 FFmpeg,x264,SDL 等等。虽然 FFmpeg 跟 x264 本身就支持 MSVC 的方式编译,他们的 configure 跟 makefile 脚本都可以使用 msvc 的编译器的。但是那始终是命令行工具,不太方便。

所以 Matthew 把这些编译脚本,移植成了 Visual Studio 原生的解决方案(solution)。这样点几个按钮就可以编译了,而且可以断点调试源码,查看数据。

VS 的版本众多,目前 vs2013 ~ vs2019 都可以使用 ShiftMediaProject 。



《快速上手vs2019》 见过, vs2019 实际上也是调 cl.exe 跟 lib.exe, link.exe 完成编译链接。


因为 ShiftMediaProject 下面有很多个 音视频项目,我们先看 FFmpeg 这个项目,下载 FFmpeg,如下:

从上图可以看到,其实你可以直接用他已经编译好的 lib 跟 dll,上面是已经编译好的各个 msvc 版本的 lib 跟 dll。但是我们还是下载个 Source code 源码压缩包,看一下里面的内容。

ShiftMediaProject 会把 FFmpeg 官方的每一次版本发布都移植 成 vs 原生的解决方案,上图的那个 r100605 就是 FFmpeg 官方的 版本,ShiftMediaProject 的源码是跟 FFmpeg 官方保持一致的,移植的只是编译方式。


我习惯把 ShiftMediaProject 的东西放到 D 盘 的 shift-media-project 目录, shift-media-project 是我自己的目录。

ShiftMediaProject 项目建议,要创建两个文件夹 msvc 跟 source,如下:

msvc 是输出文件夹,vs2019 编译输出的文件都在这里,然后 source 目录下存放 ShiftMediaProject 的各个子项目的源码,例如 FFmpeg,x264,SDL 等等。

下载 ShiftMediaProject 的 4.4.r100605 的 FFmpeg 源码之后,放到 D 盘 的 source 目录,如下:

在 SMP 下有个 readme.txt ,介绍了项目如何配置。ShiftMediaProject 的 FFmpeg 依赖一些外部的项目,如果你现在直接打开 FFmpeg 下面的 SMP 里面的 sln 文件,是无法编译通过的。

Shift Media Project 下面的大部分每个音视频项目x264,ffmpeg,libssh ,gnutls 等等的 SMP 目录下面都有一个 project_get_dependencies.bat 脚本,这个脚本是他解决依赖的脚本。

下图 可以看到 FFmpeg 需要哪些扩展库,这些库都是需要安装编译的。Shift Media Project 把所有 的编码器都集成在里面,不想要 x265 都不行,好像都没有选项配置,要手动改。

补充:好像 bat 脚本有个 PASSDEPENDENCIES 参数。这里埋个坑,后面研究。

我不打算用 这个 bat 脚本来解决依赖。因为不太好控制版本。而且 git 没有科学上网会很慢,我们也不需要查看 git log ,所以可以直接下他的 release 源码压缩包 来手动编译。依赖脚本只是用来参考他的编译思路。

如果跑 FFmpeg 这个 bat 脚本来解决依赖,网络不好可能要 几个小时。

上面的 FFmpeg 依赖的库,都能在 Shift Media Project 里面搜索到,如下:

提示:最好用 搜索框搜索 Shift Media Project 里面的子项目,因为他有分页,第一页可能没有 gnutls。

我们再把 gnutls 项目下载来看一下,如下:

会发现 gnutls 的 smp 下面也有一个 project_get_dependencies.bat 脚本,内容如下:

从上图可以看出,gnutls 项目依赖 nettle ,gmp 跟 zlib 项目。

所以 这个 project_get_dependencies.bat 脚本是一个嵌套关联项目的脚本,例如 FFmpeg 依赖 gnutls,然后 gnutls 依赖 nettle ,gmp 跟 zlib。

FFmpeg 这个 bat 脚本会不断的把依赖项目下载完毕。

了解了 bat 脚本的逻辑,我们就不需要使用这个脚本了,可以自己手动自定义 FFmpeg,把不需要的扩展库删掉,节省下载时间。

下篇文章讲具体操作。


参考资料:

1,《vs2019编译ffmpeg源码为静态库动态库》

目录
相关文章
|
搜索推荐 开发者
关于AskBlog项目存在的问题
关于AskBlog项目存在的问题
85 0
|
Java 前端开发 供应链
DRP项目总结
      DRP项目在6号就已经完工了,总共花费了一个半月的时间,从对java的懵懵懂懂,到现在的略微熟悉,对整个java web开发的认知,清晰了很多。涉及到的web项目开发的必备知识,也都有一次得到锻炼和提升。
1348 0
我的项目总结
     终于做完了两个项目,几乎用了近两年的时间,应该好好总结一下了,要不然这么好的经验就白白浪费了。我做的项目都是企业定制开发的,所以总结也是侧重于定制开发的项目,可能并不适合成型产品的项目。
1025 0
项目问题
        我是一名在校研究生,现在有一个编程项目,是和另一个学院的人一起进行的,我自己虽然做过几个项目,但 对于这个项目来说挑战比较大,首先是技术上自己感觉还不是很强,而且时间比较紧,不容有误,再加上这个项目是通过一个老师介绍的,如果没有做好的...
616 0
PWH 项目奇人之SUNDAR
PWH 项目奇人之SUNDAR   SUNDAR,原名Koduvayur Sundar, 是PWH项目客户在美国总部的SAP内部顾问。
1333 0
|
消息中间件 网络协议 物联网
关于ActvieMQ在项目中的使用
正在了解ActiveMQ,本想找一本书了解,在网上书店搜了好久,发现只有一本英文版的《ActiveMQ in Action》,并且还要到美国代购,好几百块。
1391 0
BGWN项目总结之盘点
  BGWN项目总结之盘点 BGWN项目的客户,对于盘点,其仓库部门很有技巧的避免在SAP系统上操作的工作量:  ?  导出系统上库存清单,然后在系统外对所有物料执行盘点,看看实盘结果和账面库存是否有差异。
899 0
|
7月前
|
机器学习/深度学习 Linux 计算机视觉
项目介绍
【7月更文挑战第30天】项目介绍。
54 1
|
SQL 前端开发 数据库
如何在码云上Down一个项目
如何在码云上Down一个项目
如何在码云上Down一个项目
|
测试技术
老蒋开枪项目
1.第一步:搭建大概的程序框架 创建一个老蒋对象 创建一个敌人 创建子弹对象 创建弹夹对象 创建枪的对象 把子弹压到弹夹中 把弹夹装载到枪中 老蒋拿起枪 老蒋开枪杀敌人 2.
972 0

热门文章

最新文章