Windows 版本ffmpeg编译概述
创始人
2024-05-26 07:29:07
0

在使用ffmpeg过程当中,ffmpeg在Linux(包括mac,android)编译非常容易,直接configure,make即可,Android需要交叉编译,在windows就比较麻烦,庆幸的是ffmpeg官方提供已编译好Windows版本的二进制库(http://ffmpeg.org/download.html#build-windows),通常情况下直接拿来使用。但如果要对ffmepg就行二次开发(功能定制,定制等)就需要自己动手编译了。本文简单介绍ffmpeg的Windows版本编译的基本方案。

一、基本原理

ffmpeg项目来自linux项目,所以在类Linux中编译非常容易(unix,mac,android),只需要configure,make即可,当然android需要在Linux宿主机上交叉编译,由于windows和Linux 文件系统和环境组织结构不一样,无法执行shell脚本和make命令。所以在Windows上要模拟一个Linux环境。使用Linux风格编译Windows版本程序有主要有3种方案

1)cygwin方案

cygwin就是一个windows上类unix环境,可以在cygwin使用Linux的思路编译Windows 程序。cygwin安装使用了 setup-x86_64.exe安装器,镜像源可以选择163(网易的)地址,这样下载包比从国外源快,以前安装过一次cygwin,,不知如何选包,全部安装了,结果占用5个G。现在的cywin默认是最小化安装,但并不包括Gcc,如果要使用gcc,g++,make,gdb工具,是需要选择这些包的 gcc-core、gcc-g++、make、gdb、binutils,五个包都在Category下的Devel下 。

该方法优点完整Linux模拟环境,完全可以像在Linux发行版一样容易编译。缺点是程序在Windows上运行需要依赖cygwin核心库。类似于QT程序依赖Qt核心库一样。当然cygwin只是一个Windows上模拟的Linux环境,我们可以将他当做Linux环境使用交叉编译器做嵌入式开发。嵌入式开发通常都是交叉编译。通常是在Linux发行版上编译嵌入式程序,当然不想安装一个独立Linux系统,也可以在Windows上安装cygwin开发嵌入式程序(早期很多做嵌入式就是用这个方式)。见到早期更直接在Windows上编译嵌入式程序(当然需要Windows版本的工具链+Windows版本的make程序结合Windows的bat程序)。

2)mysys2+minGW方案

Mysys2是一个cygwin的裁剪版本,是一个精简的类unix环境,minGW只是一个Windows的编译工具链。该方法优点就是使用minGW交叉编译出来的程序可以直接跑在Windows上,不需要依赖第三方库(当然cygwin也可以安装minGW工具链交叉编译ffmpeg,直接跑在Windows上)。

3)mysys2+MSVC方案

mysys2只是精简的Linux环境,我们也可以使用微软的MSVC编译ffmpeg,编译的cpp库能直接被Visual studio调用,而不需要按照C语言风格导出符号表。

4)Linux环境+minGW方案

该方案本质就是Linux上使用minGW 工具链交叉编译出Windows程序,无论是ubuntu,centos,还是国产Linux,只要能下载到minGW工具链就可以采用该方案,不过建议还是ubuntu,ubuntu上源相对丰富,更容易下载到最新版本的minGW工具链。

二、总结

以上方法普遍适应于Linux 风格程序移植到Windows上(如ffmpeg,vlc,x264,openssl等)。后面将针对Windows平台编译ffmpeg进行实战演练。更多更新信息请关注公众号:AV_Chat

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...