Windows下mingw32编译ffmpeg5.1.4实现rtsp拉流

        由于客户要求,要在Windows下使用mingw32编译,去ffmpeg.org下载需要编译的版本,使用msys2方法进行编译,使用QT5.10的编译器,基本上把网上的方法试了个遍,编译全部库总是报错出问题

        查看了ffbuild文件夹中config.log提示有些文件和库文件没找到。只能选择性编译了。

        最后还是照着QT Mingw32/64编译ffmpeg源码生成32/64bit库以及测试-CSDN博客实现的。

        记录一下我的配置方法:

1.下载msys2安装

2.安装 (感觉yasm没用上)

        pacman -S yasm nasm

        pacman -S pkg-config glib

        pacman -S libtool

        pacman -S perl
        pacman -S make

        pacman -S diffutils

3.将QT中tools文件夹下mingw530_32编译器复制到msys2安装路径的mingw32文件夹中,

然后敲gcc -v 和make -v验证一下(没改名字应该是 mingw32-make.exe -v)

4.编译安装SDL2

下载页面:Windows 10下基于MinGW编译FFMpeg with x264_mingw glib-CSDN博客

这里使用的是SDL2-2.0.12版本,解压文件到D:\msys64\home\admin目录下面,

打开MSYS2 mingw32.exe终端

cd SDL2-2.0.12
./configure --prefix=/usr/local/sdl2
make
make install

5.编译安装x264

下载x264:
git clone https://code.videolan.org/videolan/x264.git
编译安装:
cd x264
./configure --enable-static --prefix=/usr/local
make
make install

6.修改配置文件D:\msys64\etc\profile

主要是PKG_CONFIG相关的路径增加安装的x264和sdl

然后source /etc/profile 或者重启一下。

7.configure环节

cd /ffmpeg-5.1.4

为方便反复编译建个configure.sh文件

./configure \--prefix="/usr/local/ffmpeg5" \--enable-shared --disable-static \--enable-w32threads --disable-debug --disable-everything \--enable-gpl \--enable-gray --enable-libx264  --enable-sdl2 \--enable-encoder=bmp,mjpeg,jpeg2000,mpeg4 \--enable-decoder=h263,h264,hevc,mpeg4,mjpeg,bmp  \--enable-demuxer=h263,h264,rtp,rtsp,sdp,hevc,avi,matroska,image2,image_bmp_pipe,yuv4mpegpipe \--enable-muxer=h263,h264,rtp,rtsp,sap,hevc,avi,matroska,mp4,mjpeg,image2 \--enable-parser=h263,h264,hevc,mjpeg,bmp \--enable-protocol=file,udp,tcp,ftp,data,http,https,httpproxy,pipe,rtp,srtp,rtsp \--enable-filter=scale,rotate \--disable-indevs \--disable-hwaccels \--extra-libs=-lmsvcrt \--extra-cflags="-I/usr/local/sdl2/include -I/usr/local/include" --extra-ldflags="-L/usr/local/sdl2/lib -L/usr/local/lib"

         ./configure.sh

          make -j12
          make install
折腾好几天总算实现了

编译mingw32之前,还编了个64位的比较容易,编译器使用mingw-w64-x86_64-toolchain。


pacman -S mingw-w64-x86_64-toolchainpacman -S base-develpacman -S yasm nasm gcc./configure --prefix=$PWD/build/ --disable-static --enable-sharedmake -j16

编译32位按说用mingw-w64-i686-toolchain就可以了,可是编译完了链接程序时报错,可能是mingw的版本不同吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/17023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件夹类型异常成文件:原因解析与恢复策略

在数字时代,数据的安全与完整性对于个人和企业都至关重要。然而,有时我们可能会遇到一种令人困惑的情况:原本应该是文件夹的图标,却突然变成了文件的图标,这就是所谓的“文件夹类型成文件”问题。本文将深入探讨这一现…

Swagger测试接口,请求头添加token

概述Swagger 1、概述 在日常开发中,我们的业务需要用户登录,权限控制。但是在某些情况下我们使用Swagger测试接口,部分接口需要携带token,才能访问,就需要在swagger添加token窗口。 效果图: 由 右上角 A…

Python计算回归拟合各项指标

0、各项回归指标简介 Relative Root Mean Squared Error(RRMSE):The RRMSE normalizes the Root Mean Squared Error (RMSE) by the mean of observations. It goes from 0 to infinity. The lower the better the prediction performance.T…

衍生品赛道的 UniSwap:SynFutures 或将成为行业领军者

经过一个周期的发展,DeFi 已经成为基于区块链构建的最成功的去中心化应用,并彻底改变了加密市场的格局。加密货币交易开始逐步从链下转移到链上,并从最初简单的 Swap 到涵盖借贷、Staking、衍生品交易等广泛的生态系统。 在 DeFi 领域&#x…

从普通神经网络到transformer

1.单隐藏层的多层感知机 2. 循环神经网络 3.现代循环神经网络。 GRU 门控循环单元 LSTM 长短期记忆网络 候选记忆元: ˜C t ∈ R (nh) 记忆元

超详细的前后端实战项目(Spring系列加上vue3)前后端篇(四)(一步步实现+源码)

兄弟们,继昨天的代码之后,继续完成最后的用户模块开发, 昨天已经完成了关于用户的信息编辑页面这些,今天再完善一下, 从后端这边开始吧,做一个拦截器,对用户做身份校验, 拦截器 这…

OrangePi AIpro 性能测试以及使用体验

OrangePi AIpro 性能测试以及使用体验 1. 介绍 OrangePi AIpro(8T)采用昇腾AI技术路线。 具体为4核64位处理器AI处理器,集成图形处理器,支持8TOPS AI算力拥有8GB/16GB LPDDR4X,可以外接32GB/64GB/128GB/256GB eMMC模块,支持双4…

输出相关命令

什么是输入输出重定向,就是用另外一个位置来代替它,默认输入为键盘,默认输出为终端窗口 管道能把一系列的命令连起来,|为命令符 cat file 历史查询 history 回车可以查到用过的命令。上下左右键可以回到之前命令或…

记mapboxGL实现鼠标经过高亮时的一个问题

概述 mapboxGL实现鼠标经过高亮可通过注册图层的mousemove和moveout事件来实现,在mousemove事件中可以拿到当前经过的要素,但是当使用该要素时,发现在某个地图级别下会有线和面数据展示不全的情况。究其原因,发现是mapboxGL在绘图…

【多线程】线程安全

目录 1.观察线程不安全 2.线程不安全的原因 2.1 随机调度 2.2 修改共享数据 2.3 原子性 2.4 内存可见性 2.5 指令重排序 3.synchronized 加锁操作 3.1 synchronized是什么? 3.2 synchronized的特性 1) 互斥 2) 可重入 3.3 synchronized使用示例 3.3.1 针…

“二叉堆:不是,啊?”

目录 前言一、堆的概念及结构堆的性质:堆的结构:最大堆最小堆堆顶注意 二、堆的实现1.初始化堆2. 堆的插入什么是堆的向上调整算法? 3.堆的删除什么是堆的向下调整算法? 4.获取堆顶的数据5.获取堆的数据个数6.堆的判空7.堆的销毁 三、建堆的时…

【ES6】ECMAS6新特性概览(一):变量声明let与const、箭头函数、模板字面量全面解析

🔥 个人主页:空白诗 🔥 热门专栏:【JavaScript】 文章目录 🌿 引言一、 let 和 const - 变量声明的新方式 🌟📌 var的问题回顾📌 let的革新📌 const的不变之美 二、 Arro…

第六十六节 Java设计模式 -责任链模式

Java设计模式 -责任链模式 责任链模式为请求创建一个接收者对象列表。 这种模式是行为模式。 当使用责任链模式时,通常每个接收器包含对另一个接收器的引用。 如果一个对象不能处理请求,则它将相同的对象传递给下一个接收者,等等。 例子 …

删除edge浏览器文本框储存记录值以及关闭自动填充

当我们点击输入框时总会出现许多以前输入过的信息。 一、删除edge浏览器文本框储存记录值 1、首先按下↓键选中你想删除的信息 二、关闭自动填充。 1、在地址栏输入edge://wallet/settings跳转到以下界面 2、往下滑找到 全部取消即可

你也许不知道,自己可能是一个热人

今天想跟大家分享的,是一种很少有人了解的人格特质。它非常普遍,许多人都或多或少有一些倾向,但却很少有人意识到它。 不妨看一看,你有没有下面这些特征: 有着极其旺盛的求知欲,对许多奇奇怪怪的问题都有着…

nvm安装教程及使用nvm管理多个node版本

文章目录 前言一、nvm 安装教程温馨提示macOS/LinuxWindows 二、安装 node 前言 工作中,你可能会遇到以下场景: 我想使用 pnpm 命令安装依赖,但是在使用 pnpm 命令时提示如下 $ pnpm -v ERROR: This version of pnpm requires at least No…

捷报!恒瑞医药ADC创新药SHR-A1921卵巢癌适应症拟纳入突破性治疗品种公示

近日,恒瑞医药自主研发的TROP-2抗体偶联药物(antibody-drug-conjugate, ADC)注射用SHR-A1921用于治疗铂耐药复发上皮性卵巢癌、输卵管癌或原发性腹膜癌适应症被国家药品监督管理局药品审评中心拟纳入突破性治疗品种公示名单。今年3月&#xf…

第五天 从零开始构建基于Kubernetes的DevOps平台

基于Kubernetes的DevOps平台实践 持续集成工具: JenkinsgitlabciTekton 本章基于k8s集群部署gitlab、sonarQube、Jenkins等工具,并把上述工具集成到Jenkins中,以Django项目和SpringBoot项目为例,通过多分支流水线及Jenkinsfile…

工业4.0 企业级云MES全套源码,支持app、小程序、H5、台后管理端

工业4.0 企业级云MES全套源码,支持app、小程序、H5、台后管理端 采用javaspringboot-vue.jsuniapp开发 随着工业4.0的快速发展,制造执行系统(MES)成为了智能制造的核心。今天,将为大家介绍一款开源的MES系统——MES管…

本周 MoonBit 核心库进行 API 整理工作、工具链持续完善

MoonBit更新 【核心库 Breaking】核心库进行API整理工作 所有immutable数据结构被放在immut路径下,如immutable_hashmap.Map变为immut/hashmap.Map // Before let a : immutable_hashmap.Map[Int, Int] immutable_hashmap.make() // After let a : immut/hashma…