| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> vs2019编译ffmpeg源码为静态库动态库【完整步骤、亲测可行】 -> 正文阅读 |
|
[开发工具]vs2019编译ffmpeg源码为静态库动态库【完整步骤、亲测可行】 |
??ffmpeg大概从两年前版本开始,不再提供编译好的lib,dll,需要开发者自己编译,在linux下编译ffmpeg可能相对简单,windows稍微复杂点,很多文章介绍使用msys2编译,但是绝大多数都是无法正确编译出lib, 而且也只是加上了x264, 然而ffmpeg支持的依赖库很多,用命令行,一个命令写错就编译失败了,本篇博客介绍如何使用vs2019编译最新的ffmpeg源码,可以编译为静态库、动态库,支持x64和win32版本,例如下面是我的vs2019 编译结果: ??我的编译方式不是网上的那种windows linux环境编译,之前我也是参照那种方式编译,结果要么编译的是.a库,vs2019链接失败, 要么就是编译成.dll, 由于项目里需要使用ffmpeg静态链接,因为用不到ffmpeg的所有API, 编译静态库后,自己再封装一个dll使用,这样安装包会小很多,相信大家在很多软件里也看到了libffmpeg.dll这种文件, 这就是自己封装的dll, 不是ffmpeg原始库。 1、ffmpeg代码clone??在clone代码之前,创建代码目录,例如创建ffmpeg_vs2019目录,在该目录里再创建两个目录,msvc,source,为什么要这样创建,这是项目作者的建议,照着做就可以。
??进入source目录,打开git bash克隆代码
??clone完毕大概355M,如果网络环境不好,可能会clone failed。 2、ffmpeg依赖库下载??ffmpeg clone结束后,在ffmpeg_vs2019\source\FFmpeg\SMP目录有个readme.txt介绍了如何编译配置整个项目,比如需要x264、265、vpx等开源,可以手动去ShiftMediaProject里clone, 或者运行脚本clone, 建议使用脚本clone,比较节省时间,方法如下: 3、其它文件下载??先在ffmpeg_vs2019/msvc里创建include目录,include里创建gl、AMP这两个目录,待会儿需要存放opengl、egl、nv-codec、amp的头文件。 (1)opengl头文件??opengl仓库 https://github.com/KhronosGroup/OpenGL-Registry
??找到OpenGL-Registry\api\GL里的glext.h 和 wglext.h放到目录:ffmpeg_vs2019\msvc\include\gl (2)EGL头文件??EGL仓库 https://github.com/KhronosGroup/EGL-Registry
??找到EGL-Registry\api\KHR,复制KHR目录到ffmpeg_vs2019\msvc\include (3)nv-codec 头文件
??将nv-codec-headers\include里的ffnvcodec目录复制到ffmpeg_vs2019\msvc\include (4)AMF 头文件??AMP仓库 https://github.com/GPUOpen-LibrariesAndSDKs/AMF
??将AMF\amf\public\include里的两个文件夹复制到ffmpeg_vs2019\msvc\include\AMF 4、配置NASM、YASMNASM下载地址:??https://github.com/ShiftMediaProject/VSNASM/releases/tag/0.7 YASM下载地址:??https://github.com/ShiftMediaProject/VSYASM/releases ??将下载的VSNASM和VSYASM解压后放到 右键用管理员模式运行,cd到相应的路径,执行安装脚本,如下图 5、开始编译ffmpeg??做好以上步骤后,用vs2019打开SMP目录的ffmpeg_deps.sln,一个47个项目,该工程对静态库、动态库、win32、x64都做了配置,很方便,如下图: ??例如我想编译x64版本的lib,不要dll,选择Debug x64,F7编译,19:11开始编译,19:30编译结束,大概20分钟,这只是Debug版本,编译Release估计还要20分钟, 例如我的生成结果: ??生成的ffmpeg.exe在如下目录 6、创建项目验证ffmpeg lib??有了include、lib,创建vs2019 c++控制台项目,配置好include、lib, 就可以写代码了,例如获取ffmpeg代码版本:
运行结果 ??如果想调试ffmpeg代码,把pdb文件带上,放到lib所在的目录就可以跟踪到ffmpeg源码了,如下图: 7、哪些项目用到了ffmpeg??除了使用lib开发,也可以用dll, 修改编译选项位DebugDLL/ReleasdDLL即可,FFmpeg是开源项目,国内大部分的软件都进入了FFmpeg耻辱柱,没办法,音视频仅此一个伟大的集大成开源项目,很多软件都是编译ffmpeg lib后,自己封装dll,例如: ??腾讯会议 ??迅雷 ??也不是专指这两个项目,99%的音视频项目应该都会用到ffmpeg, 例如视频客户端优酷、爱奇艺、腾讯视频,格式工厂、QQ、微信、钉钉等。 ??当然在开发时,如果需要265,vpx的支持也是可以的,在开发时带上相应的lib即可,如下图: 8、编译问题解决??对于vs2019 ffmpeg编译有问题的可以加qq群894097803咨询我,也不是所有的问题我都能解决,我尽力而为,给ffmpeg爱好者一个交流平台。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 19:50:16- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |