FFmpeg笔记:使用MSVC工具链编译Windows版本静态库、动态库
2019年3月开始,为了将音视频编解码功能集成到Cocos2d-x中,开始接触到FFmpeg;
当时开发环境还在Mac下,编译FFmpeg相比现在用Windows平台要方便的多;
最近,公司内部有个Unity项目中的功能需要用到音视频编解码功能;
新项目目标是移动平台,需要跨平台支持;选定FFmpeg作为音视频编解码库+自行封装C++ Api方便C#层调用。
新项目的开发平台是Windows;所以首先需要的就是编译Windows版本的FFmpeg动态库;
2019年接触FFmpeg时,源码编译的平台包括Mac OS、iOS和Android;没有在Windows平台编译过;
当初为了编译FFmpeg源码,也是花了不少时间在网上搜索各种编译脚本;
两年多的时间过去了,再次需要用到相关技术却发现,之前并没有留下多少可以供重新捡起来,并可快速、全面上手的文档;有的只是零星、琐碎的一些笔记和浏览器中保存的书签;
下面开始进入标题正文
FFmpeg源码提供了configure脚本,用来配置功能模块并生成Makefile脚本;
所以第一步是需要一个shell环境,官方文档中用的是MSYS2;这里记录的就是使用MSYS2的步骤;
1、安装MSYS2;
MSYS2网站首页提供了安装包下载、包管理器的简单使用方法;
这里假设使用默认路径安装:C:\msys64
官网的步骤,在"MSYS MinGW 64bit"终端中,make、gcc等工具应该就可以使用了;
2、MSYS2中的必要工具:nasm、pkg-config
从开始菜单中打开【MSYS2 64bit】-【MSYS2 MinGW 64bit】,依次执行下面的命令:
pacman -S nasm pke-config
3、MSVC工具链环境变量
这里需要安装Visual Studio C++开发环境(不赘述);
打开“x64 Native Tools Command Prompt for VS 2019”终端,并执行命令:
C:\msys64\msys2_shell.cm -mingw64 -full-path
4、在新打开的MingW64终端中切换到FFmpeg源码所在目录,并依次执行命令:
./configure --toolchain=msvc --prefix=./output
make -j6
make install
如果都顺利的话,默认的静态库会安装在FFmpeg-src/output目录下;
动态库: 添加选项 --enable-shared
./configure --toolchain=msvc --enable-shared --prefix=./output
make -6
make install
参考:
https://www.msys2.org/
https://www.ffmpeg.org/platform.html#Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows
最新文章
- JsonResult序列化并保存json文件 以及对json文件读取反序列
- Tower of Hanoi问题
- SVN 基本操作
- When does layoutSubviews get called?
- 利用svg技术实现在线动画演示
- 快速搭建Japser Report
- 抛弃JQ,回归原生js……
- jquery.base64.js 中文乱码处理
- [LeetCode] Maximum Sum of 3 Non-Overlapping Subarrays 三个非重叠子数组的最大和
- webdriver API
- OPUS/SILK/SPEEX 音频编码比较
- Robot Framework 自动化框架大纲
- iOS:检测多媒体(相机、相册、麦克风)设备权限,弹框提示
- http stream
- springboot和mybatis之thymleaf整合简单插入用户数据
- SQLserver 还原数据库报“指定转换无效”的错的解决方案
- Python介绍以及安装
- A - A Secret (扩展kmp)
- 异常+远程控制Linux-14
- 图像的上采样(upsampling)与下采样(subsampled)
热门文章
- Noip模拟42 2021.8.17
- 2021.7.28考试总结[NOIP模拟26]
- 『学了就忘』Linux基础 — 7、补充:安装Linxu系统时设置硬盘挂载说明
- Mybatis的分页插件com.github.pagehelper
- Web实时通信,SignalR真香,不用愁了
- [loj3333]混合物
- [cf1392H]ZS Shuffles Cards
- [tc13008]Egalitarianism2
- [源码解析] PyTorch 分布式(10)------DistributedDataParallel 之 Reducer静态架构
- ES6学习 第二章 变量的解构赋值