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

最新文章

  1. JsonResult序列化并保存json文件 以及对json文件读取反序列
  2. Tower of Hanoi问题
  3. SVN 基本操作
  4. When does layoutSubviews get called?
  5. 利用svg技术实现在线动画演示
  6. 快速搭建Japser Report
  7. 抛弃JQ,回归原生js……
  8. jquery.base64.js 中文乱码处理
  9. [LeetCode] Maximum Sum of 3 Non-Overlapping Subarrays 三个非重叠子数组的最大和
  10. webdriver API
  11. OPUS/SILK/SPEEX 音频编码比较
  12. Robot Framework 自动化框架大纲
  13. iOS:检测多媒体(相机、相册、麦克风)设备权限,弹框提示
  14. http stream
  15. springboot和mybatis之thymleaf整合简单插入用户数据
  16. SQLserver 还原数据库报“指定转换无效”的错的解决方案
  17. Python介绍以及安装
  18. A - A Secret (扩展kmp)
  19. 异常+远程控制Linux-14
  20. 图像的上采样(upsampling)与下采样(subsampled)

热门文章

  1. Noip模拟42 2021.8.17
  2. 2021.7.28考试总结[NOIP模拟26]
  3. 『学了就忘』Linux基础 — 7、补充:安装Linxu系统时设置硬盘挂载说明
  4. Mybatis的分页插件com.github.pagehelper
  5. Web实时通信,SignalR真香,不用愁了
  6. [loj3333]混合物
  7. [cf1392H]ZS Shuffles Cards
  8. [tc13008]Egalitarianism2
  9. [源码解析] PyTorch 分布式(10)------DistributedDataParallel 之 Reducer静态架构
  10. ES6学习 第二章 变量的解构赋值