如何在windows编译ffmpeg

2023-11-13

在Windows上编译FFmpeg可以使用MSYS2或Cygwin来配置编译环境,然后使用MinGW或Visual Studio等工具进行编译。下面是使用MSYS2和MinGW的步骤:

  1. 下载并安装MSYS2:https://www.msys2.org/

  2. 打开MSYS2终端,更新软件包列表:

pacman -Syu

  1. 安装编译工具链和依赖库:

pacman -S --needed base-devel mingw-w64-x86_64-toolchain pacman -S git perl yasm pkg-config pacman -S libx264 libx265 libvpx libopus libmp3lame libfdk-aac

  1. 克隆FFmpeg源代码并切换到最新稳定版本:

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg cd ffmpeg git checkout n4.4

  1. 配置编译参数:

./configure --toolchain=mingw64 --arch=x86_64 --enable-shared --disable-static --prefix=/usr/local --disable-debug --enable-pic --enable-gpl --enable-version3 --enable-nonfree --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --pkg-config-flags=--static

这里的参数意义如下:

  • --toolchain=mingw64:使用MinGW编译工具链。

  • --arch=x86_64:编译为64位程序。

  • --enable-shared:生成共享库。

  • --disable-static:禁用静态库。

  • --prefix=/usr/local:指定安装路径。

  • --disable-debug:禁用调试。

  • --enable-pic:启用位置独立代码。

  • --enable-gpl:启用GPL许可证。

  • --enable-version3:启用LGPLv3许可证。

  • --enable-nonfree:启用非自由软件。

  • --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages:禁止生成文档。

  • --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib:添加头文件和库文件路径。

  • --pkg-config-flags=--static:使用静态链接的pkg-config。

  • 编译并安装:

make -j$(nproc) make install

-j$(nproc)参数是使用CPU核心数进行多线程编译,可以加快编译速度。

  1. FFmpeg的头文件和库文件将被安装到/usr/local/include和/usr/local/lib中,可以在自己的项目中使用它们。

注意事项:

  1. 如果需要编码H.264或H.265视频,需要安装x264和x265依赖库。

  2. 如果需要编解码VP8或VP9视频,需要安装libvpx依赖库。

  3. 如果需要编码Opus音频,需要安装libopus依赖库。

  4. 如果需要编码MP3音频,需要安装libmp3lame依赖库。

  5. 如果需要编码AAC音频,可以使用libfdk-aac或libvo-aacenc依赖库。

★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在windows编译ffmpeg 的相关文章

随机推荐

  • 小学生Python编程 —— 欢乐钢琴

    孩子的又一作品 欢乐钢琴 from pgzrun import WIDTH 960 HEIGHT 720 o 0 name s song Actor name str o png 480 180 a press False 动效函数 def
  • sublime text3下搭建Python IDE--Anaconda插件(自动补全)

    今天自己想在sublime text3下装个python自动补全插件 当安装一个包管理器时 Package Contral 时 ctrl shift p输入Install Package时 总是报错说没有这个包 在网上也找了很多解决办法 有
  • Android Apache安装及局域网手机无法访问解决办法

    Android Apache安装及局域网手机无法访问解决办法 Apache是一款常用的开源Web服务器软件 可以在Android设备上安装并提供Web服务 本文将介绍如何在Android设备上安装Apache 并提供解决方案以解决在同一局域
  • 代码静态分析工具——splint的学习与使用

    引言 最近在项目中使用了静态程序分析工具PC Lint 体会到它在项目实施中带给开发人员的方便 PC Lint是一款针对C C 语言 windows平台的静态分析工具 FlexeLint是针对其他平台的PC Lint版本 由于PC Lint
  • ResNet简介

    ResNet Residual Network 此网络于2015年 国人何先生提出 用于解决随着深度学习的层数加深造成的网络退化现象和梯度消失 梯度爆炸 问题1 退化现象 当深度学习的各项指标能够随着训练轮数收敛的情况下 网络的层数增强未能
  • 深度学习车辆检测实现自动驾驶

    在本文中 我将通过一个车辆检测示例演示如何使用深度学习创建目标检测器 相同的步骤可用于创建任何目标探测器 我经常有朋友和同事问我自动驾驶系统如何感知周围的环境并做出 人类 的决定 目标检测是指对图像和视频中的目标进行定位和分类 下图显示了一
  • MySQL体系结构及数据库在Linux的部署

    数据库 存储数据的仓库 是长期存放在计算机内 有组织 可共享的大量数据的集合 数据库中的数 据按照一定数据模型组织 描述和存储 具有较小的冗余度 较高的独立性和易扩展性 并为各种用户共享 先来看看MySQL的体系架构图 可以看出MySQL的
  • 关于串口通信协议的解析,该怎么解决

    关于串口通信协议的解析 该怎么解决 串口通信协议 由于本系统采用非规范式输入 导致一帧数据可能分成几次接收 为了能够判断一帧数据是否接收完整 本系统制定了一套特殊的串口通信协议 如附图所示 附图 通信协议定义 在本系统的串口通信协议中 一帧
  • sql sever2008 R2 检测到索引可能已损坏。请运行 DBCC CHECKDB。

    1 设置成单用户状态 USE MASTER ALTER DATABASE DBNAME SET SINGLE USER GO DBNAME为修复的数据库名 2 执行修复语句 检查和修复数据库及索引 dbcc checkdb DBNAME R
  • 【pip】彻底解决 module ‘tensorflow‘ has no attribute ‘random_normal‘

    翻译 tensorflow显示没有random normal模块 解决 将代码中的 tf random normal 用tf random normal代替 区分 与
  • [leetcode]python3 算法攻略-回文链表

    请判断一个链表是否为回文链表 方案一 指针法 class Solution def isPalindrome self head 判断一个链表是否是回文的 很自然的想法就是两个指针 一个指针从前往后走 一个指针从后往前走 判断元素值是否相同
  • mysql读写分离与监控的使用(proxysql)

    os rhel 7 3 mysql 5 7 proxysql 1 4 15 1 ip 规划如下 172 25 11 1 node1 proxysql 172 25 11 2 node2 mysql master 172 25 11 3 no
  • 对于解决Visual Studio中scanf函数报错的原因及解决方法

    对于C语言初学者 可能会用到devC 或者是visual studio软件 我本人是比较推荐visual studio软件的 毕竟这个软件使用起来功能比devc 软件功能更多 而初学者在使用visual studio软件时会发现在使用初始的
  • Unity-委托2种常用使用场景总结

    委托使用场景1 调用委托 可以分发多个方法出去 举例 定义多个通知不同人的信息 例如经理 员工 客户 可以针对性的制定不同的通知 调用委托 可以一次性的群发给他们 委托使用场景2 方法的参数是个方法 例如按钮方法 参数是一个点击事件的方法
  • 麦克灵敏度调整

    1 先看MIC电路连接 这是个差分输入的例子 MICP2和MICN2是一对差分信号 经过C156的滤波 输入到MIC两端 MIC两引脚分别是到地和供电 上图的R177参数就关系到MIC输入的灵敏度 2 电阻R177影响灵敏度分析 MICBI
  • C++中函数返回引用

    1 返回引用和不返回引用的区别 下面两个代码是在类中的成员函数 而m data 变量为类的私有成员变量 int at return m data int at return m data 上面两个函数 第一个返回值是int的引用int 第二
  • Log Structured Merge Trees(LSM) 原理

    Log Structured Merge Trees LSM 原理 十年前 谷歌发表了 BigTable 的论文 论文中很多很酷的方面之一就是它所使用的文件组织方式 这个方法更一般的名字叫 Log Structured Merge Tree
  • 【数据结构】唯一确定一个二叉树的方法

    唯一确定一棵二叉树的方法 在了解以何种方式能唯一确定一棵二叉树之前 需要先认识树的遍历方式有哪几种 树的遍历方式 先序遍历 后序遍历 层序遍历 二叉树的遍历方式 先序遍历 中序遍历 后序遍历 层序遍历 确定的方式 那么如何唯一确定一棵二叉树
  • “0xc000007b无法正常启动”解决方案汇总

    今天在运行一个Opengl项目时总是一直报 0xc000007b无法正常启动 的错误 于是百度了一些解决方案 当然这些解决方案是针对不同错误原因提出来的 所以如果读者也遇到同样的错误可以一一尝试 或者首先分析原因再选择解决方案 现将这个问题
  • 如何在windows编译ffmpeg

    在Windows上编译FFmpeg可以使用MSYS2或Cygwin来配置编译环境 然后使用MinGW或Visual Studio等工具进行编译 下面是使用MSYS2和MinGW的步骤 下载并安装MSYS2 https www msys2 o