FFmpeg源码编译(基于MSVC编译器)

ffmpeg源码编译详细过程与使用(含demo) 关于ffmpeg so库的编译,网上存在各种教程。有些基于windows,有些基于linux~而基于linux的:一般会选择安装虚拟机,在其上跑ubuntu系统。其实各种方式都是可以的,只要最后可以编译出我们需要的so库,就是正道。win10开始自带了linux的子系统,我们可以直接使用该子系统进行编译工作,而无需安装虚拟机等繁琐流程。编译新版的ffmpegdemo中会使用ffmpeg新版的api(注:网上好多教程的demo部分其实无法正常使用,部分api在新版已经废弃) 阅读详情
  1. 本地环境:

windows10
Visual Studio 2022
MSYS2

  1. 安装 MSYS2,用于编译FFmpeg。 (安装路径:F:/msys64)

MSYS2(Minimal SYStem 2)是一个集成了大量的GNU工具链、工具和库的开源软件包集合。它提供了一个类似于Linux的shell环境,可以在Windows系统中编译和运行许多Linux应用程序和工具。
下载地址:https://repo.msys2.org/distrib/
image.png
安装路径要求:要求卷类型为NTFS,路径只有ascii字符,没有重音,没有空格,没有符号链接,没有subst或网络驱动器,不能是FAT 。
MSYS2 使用 Pacman 进行软件包管理(包括 安装、更新、卸载等) 。
** **安装完成后,进入 MSYS2 的安装目录,在该目录下打开 msys2_shell.cmd 文件,将该文件第 17 行代码的注释打开,即去掉 rem 关键字,如下所示: image.png

  1. 安装编译工具(msys中安装)

在电脑中打开 x64 Native Tools Command Prompt for VS 2022 命令窗口(可以直接搜索)
image.png
在该命令窗口中打开msys2。

# 进入到 MSYS2 目录下
cd F:\msys64

# 启动 MSYS2
msys2_shell.cmd

image.png
在msys2中安装编译工具:

pacman -S diffutils make pkg-config yasm
  1. 下载FFmpeg源码,直接git下载(路径F:/ffmpeg)
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg   
  1. 编译FFmpeg

在msys2窗口中进入到FFmpeg目录中

cd F:\ffmpeg

运行 FFmpeg 源码目录中的 configure 脚本生成 Makefile 文件 , 使用 mscv 作为 FFmpeg 的编译工具链.

./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --enable-shared --disable-ffprobe --toolchain=msvc

生成Makefile文件之后即可开始编译

make -j4 && make install

编译完成后即可在msys64目录下\usr\local中找到ffmpeg文件夹(路径F:\msys64\usr\local)
image.png

  1. 至此基于MSVC编译器的FFmpeg即编译完成。
FFMpeg源码分析,关键结构体分析(一) Ffmpeg 中 Demux 这一步是通过 avformat_open_input()这个 api 来做的,这个 api 读出文件的头部信息,并做 demux, 在此之后我们就可以读取媒体文件中的音频和视频流,然后通过 av_read_frame()从音频和视频流中读取出基本数据 流 packet,然后将 packet 送到 avcodec_decode_video2()和相对应的 api 进行解码。此时,就可以使用av_frame_unref()释放任何由 Frame 保存的参考帧并还原回最原始的状态。 阅读详情

相关推荐

FFmpeg源码世界:命令篇

最近在做一些音视频领域的工作,这个领域基本绕不开FFmpeg,因此想对其源码进行一些研究,站着这个巨人的肩膀上,学习一下其设计思想以及实现思路,FFmpeg 很多人最开始接触的应该都是它的命令和ffplay,这篇我们就先分析下ffmpeg 命令的实现。

yinshipin007的博客 520

在windows下使用MSVC编译ffmpeg

继承fdk_aac,openssl,x264,x265

weixin_42112444的博客 2785

从零搭建C++ OpenCV开发环境:环境配置、核心API与性能优化实战

计算机视觉是人工智能领域的关键分支,其核心在于通过算法让计算机“看懂”图像与视频。OpenCV作为该领域最广泛使用的开源库,其原生C++接口提供了最优的性能和完整的底层控制能力。理解其核心数据结构cv::Mat的内存管理机制(浅拷贝与深拷贝)是高效编程的基础。从环境搭建开始,通过源码编译可实现对FFMPEG等关键模块的定制化支持,并利用CMake进行跨平台项目管理。在工程实践中,应优先调用高度优化的内置函数(如bitwise_not)而非手动循环,并善用指针访问等技巧以提升处理速度。对于视频流等实时应用场景

weixin_32308101的博客 323

ffmpeg的编译

说明如何完成ffmpeg的静态编译

qq_18345433的博客 4370

[总结]FFMPEG源码编译-Windows篇

0 前言----目前还不可信,不要看~~~~~ ffmpeg本身就是在 linux开发的,因此在linux下编译非常简单,而在windows下编译就不是那么容易了。一般在windows下使用MinGW的gcc toolchain进行编译,这样的话,因为ffmpeg的导出函数均是C风格,因而gcc编译的lib可以被vs链接。但是gcc的debug符号与 vs的debug符号(*.pdb)是无法兼容...

ice_ly000的博客 3603

Windows平台MSVC编译的FFmpeg库

本文详细介绍了在MSYS2环境下使用MSVC编译器编译FFmpeg V6.1.4并集成H.264编解码支持的全过程。主要内容包括:1) 环境准备与配置,包括VS和MSYS2安装及环境变量设置;2) x264库的编译与关键修改(x264.h适配);3) FFmpeg编译配置及x264集成;4) 结果验证方法;5) 常见问题解决方案;6) 项目集成建议。重点强调了MSVC工具链指定、x264兼容性修改和路径正确配置等关键步骤,为开发者提供了完整的MSVC编译FFmpeg+H.264的技术方案。

qinbo1234567890的博客 587

在Windows上基于MSYS2 MSVC工具链编译ffmpeg源码

基于MSYS2 UCRT64工具链编译ffmpeg源码。MSYS2 MINGW 与 UCRT64 均基于 mingw 编译器进行编译,在 Windows 平台上兼容性不好。本文介绍基于 MSVC 编译器进行编译。

asd1147170607的博客 211

win10环境下msys2+vs2017编译ffmpeg(64位含ffplay)

本文在win10下用msys2和vs2017编译ffmpeg 64位(包含ffplay),以及把ffplay.c移植到vs2017环境中,便于学习。ffmpeg 的源码是跨平台的,通过 configure(shell脚本) 实现不同平台的编译规则。在 configure 的时候指定--toolchain=msvc就可以使用 msvc 来编译 ffmpeg。

pinghe2024的博客 2430

windows下msvc编译x264 + ffmpeg静态库

x264+ffmpeg windows下静态编译

milkqaq的博客 1097

基于Arduino 的 FM 调频收音机

这是一个基于 Arduino 的开源的收音机项目,它具备一台标准收音机的全部功能,从控制部分到外壳都可以自己 DIY。在项目中,我们将介绍让 FM 收音机调谐器的 RDA5807 模块与 I2C 协议进行通信的方法,整个过程只需要两根线就可以与 IC 通信,接线非常简单。3D 打印的外壳也非常简洁。总之,是个非常简单和实用的项目,来试试吧!

ByteBox的博客 1642

什么是以太网链路聚合

以太网链路聚合技术通过将多个物理端口捆绑成逻辑端口,可显著提升网络性能。该技术能增加总带宽(各链路带宽之和)、提高可靠性(故障秒级切换)并实现智能负载分担。主要分为手工模式和基于LACP协议的动态模式,后者能检测链路故障更可靠。配置时需确保接口参数一致、模式匹配,适用于核心交换、服务器接入等场景。华为设备通过创建Eth-Trunk接口、指定LACP模式并添加成员接口即可完成部署。这项成熟技术能以低成本解决带宽瓶颈和可靠性问题,是构建高速稳定网络的关键方案。

lai_2020的博客 674

vs2019+Qt搭建带有ffmpeg库,SDL渲染库工程(可以进入ffmpeg源码调试的工程)

前提准备: Qt5.15.x 并在安装使要选择MSVC2017/MSVC2019编译器 virtual Studio 2019 并在扩展中安装Qt插件 编译好的ffmpeg库及头文件(如何编译ffmpeg源码) SDL库及头文件(SDL源码目录中有VirtualC的目录, 可以直接编译) 准备好后应该是这样的: ffmpeg动态库(*.pdb是支持调试用的文件): ffmpeg的头文件: ffmpeg的lib库: SDL动态库: SDL头文件: 大概有89个头文件 SDLlib库: 创建放工程

qq_40684669的博客 1972

OpenCV-Python实战(26)——复杂场景下的实时物体检测与跟踪

本节介绍了一种鲁棒的特征跟踪方法,该方法速度足够快,能够实时应用于网络摄像头的视频流。首先,算法展示了如何在一幅图像中提取和检测重要特征——无论是我们感兴趣的模板图像(训练图像),还是预期包含该物体的更复杂场景(查询图像),这些特征都具有视角和尺寸不变性。然后对关键点进行聚类,找到两幅图像中特征点之间的匹配。在此基础上,可以计算出一个将一组特征点映射到另一组的透视变换矩阵。利用这些信息,我们可以在查询图像中勾勒出训练图像的轮廓,并对查询图像进行透视变换,使感兴趣的物体以直立状态显示在屏幕中央。

盼小辉丶的博客 1911

无法解析的外部符号 __mingw_vsprintf

windows下的ffmpeg是采取mingw平台上编译,本人采用的是msys2,本人需要h264,于是先在msys2里面编译了x264静态库,注意这里是静态库,动态库经过了链接,不会出现下面的问题,然后在ffmpeg里面用下面配置命令生成Makefile。符号__mingw_vsprintf找不到,本人很好奇,在x264的代码里面搜索__mingw_vsprintf调用的地方,很明显没有直接搜找到,于是到msys2里面的stdio.h,搜寻此符号,还真找到了,如下图所示。再次编译,编译通过。

tusong86的博客 2290

【nvidia-B200】实际生产报错NVRM: nvAssertFailedNoLog: Assertion failed: pIOVAS != NULL @ io_vaspace.c:601

升级 NVIDIA 驱动到 R545/R550 数据中心版本(解决 IOVA bug,这是性能差的根本原因);重启服务器(清理驱动残留资源,消除日志中的 NVRM 错误);验证 NVLink/PCIe 链路(确保 8 卡互联使用高速链路,而非单卡 PCIe 共享带宽)。完成这 3 步后,ncccl-test的all_reduce带宽应能提升至100GB/s 以上(取决于服务器的 NVLink/NVSwitch 配置),恢复正常性能。

jundao1997的专栏 651

在 Eclipse 中接入 DeepSeek:开启 Java 开发新效率

DeepSeek 能够根据自然语言描述,精准生成高质量的 Java 代码片段。无论是简单的方法编写,比如 “编写一个 Java 方法,用于计算两个整数的乘积”,还是复杂的类和功能模块创建,例如 “创建一个 Java 类,实现文件的读写操作,并包含异常处理机制”,它都能快速给出合理且可运行的代码示例。DeepSeek 生成的代码不仅实现了基本功能,还遵循 Java 的编码规范,添加了必要的注释,让代码更易于理解和维护,大大节省了开发者从头编写代码的时间和精力。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 4068

超级简单的跨平台高性能音视频播放框架QtAv编译指南

文章目录一、了解QtAv二、相关文章三、下载QtAv源码四、下载QtAv依赖库五、设置环境变量1、gcc设置方式2、msvc(cl)设置方式六、编译七、测试 一、了解QtAv 这几天抱着试一试的心态,尝试着了解了下QtAv这个库,感觉确实挺不错的,因此就打算学习下这个库。 断断续续的看了不少文章,大多数都是通过百度搜索出来的文章。说实话百度上大多数文章内容都差不多,而且很少有文章说清楚了编译时的环...

朝十晚八 326

LVGL实战 透视卡盘

八张卡立在一个圆柱面上,摄像机在柱心前方。每帧对屏幕上的每个像素发一条射线,与卡片所在平面求交,得到三维交点,再投影回卡片自己的二维坐标系取样。透视、倾斜、近大远小、相互遮挡 —— 全部是这一步的副产物。

摸鱼专家 54

Visual Studio 2019下32位OpenCV4.5编译实战:从CMake配置到环境变量设置(避坑指南)

本文详细指导在Visual Studio 2019环境下编译32位OpenCV 4.5库的全过程。内容涵盖从CMake关键配置、Visual Studio编译选项设置到系统环境变量配置的完整步骤,并针对32位平台编译的常见问题提供了实用的避坑指南,帮助开发者为遗留系统或特定硬件平台构建可靠的计算机视觉解决方案。

weixin_28826961的博客 287

手把手教你学Simulink——机器人控制场景实例:基于Simulink的双足人形机器人步态生成与ZMP稳定控制仿真

ZMP是地面上合力矩在水平方向为零的点。对于平面行走: [ x_{\text{zmp}} = x_c - \frac{z_c}{g} \ddot{x}_c ]📌稳定性判据ZMP必须始终位于支撑脚的凸包(即脚掌范围内)本文完成了基于Simulink的双足人形机器人ZMP稳定控制仿真,实现了:✅ 基于LIPM生成稳定CoM轨迹✅ 构建ZMP参考与验证机制✅ 设计简化踝关节PD控制器✅ 验证ZMP始终位于支撑脚内 → 动态平衡✅ 为人形机器人步态规划奠定理论基础。

MHD0815的博客 139

携程滑块、点选验证码登录识别逆向

本文分析了携程登录系统的风控机制,主要包含三种验证场景:无验证码、滑块验证码和二次图标点选验证码。通过跟踪risk_inspect风控接口,发现验证流程采用标准AES加密,需提交设备指纹等加密信息。当触发验证码时,需额外提交包含轨迹坐标的verify_msg参数及token/rid参数。最终通过风控检测后,需使用一致的指纹参数和验证token完成加密登录。文章强调所有分析仅用于学习,代码实现需确保符合法律规范。

码王吴彦祖的博客 1100

【FFmpeg】Windows 10 平台 FFmpeg 开发环境搭建 ② ( Qt 配置 MSVC2015 编译器 | 安装 VS2015 并配置 Qt 环境的 C/C++ 编译器 )

一、Qt 配置 MSVC2015 编译器 1、安装 VS2015 并配置 Qt 环境的 C/C++ 编译器为 MSVC2015 编译器 2、安装 Qt 3、测试 Qt 安装效果 4、Qt 重新配置编译器 5、Qt 中使用 MSVC2015 编译器

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 2130

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Windows环境 源码编译 FFmpeg

记录一下windows环境源码编译ffmeg的过程!手把手教你如何源码编译ffmpeg!

cpp_learner的博客 4595

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ffmpeg4.1 MSVC静态编译

ffmpeg的原生依赖编译,你希望想要的那个dll 机器视觉处理时经常要用到视频和流的处理这就难免要用到ffmpeg这货了,有时调试和部署时官方的二进制dll是g++版的,而且也不方便修改内部的操作和定制。部署有时依赖问题造成冲突程序崩溃。dll过多拷贝掉就悲剧了。 ffmpeg的编译是灾难的 linux下发展过来的依赖链接比较复杂。 下面就将ffmpeg的vc依赖和其他依赖都剔除 编译出单个...

xhamigua 1752

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

FFmpeg开发笔记(一):ffmpeg介绍、windows开发环境搭建(mingw和msvc,无需源码编译)

若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.youkuaiyun.com/qq21497936 原博主博客导航:https://blog.youkuaiyun.com/qq21497936/article/details/102478062 本文章博客地址:https://blog.youkuaiyun.com/qq21497936/article/details/104071063 目录 前言...

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 1万+

FFmpeg Windows 编译

使用过 Linux 编译第三方开源库的都知道,主流开源项目,比如 FFmpeg 都提供了 configure 文件,用户只需要预先安装编译工具后,就可以是用 ./configure xxx 去编译源码。那么在 Windows 系统,也能否有一套类似的编译工具集呢!这就是msys2MSYS2 是一个在 Windows 上提供类 Unix 环境的软件发行版和开发平台。

御前带刀侍卫 962
上一篇: Qt5 在Ubuntu系统中进行打包发布
下一篇: Qt5 + FFmpeg
taciturn丶
博客等级 码龄9年 471粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

taciturn丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值