从这里开始,就要踏上学习FFmpeg的旅程了,使用的FFmpeg版本5.0.1

1、ubuntu下,如何下载并编译FFmpeg源码

打开FFmpeg官网 Download FFmpeg,我们可以通过git来下载源码

$ git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

也可以拉到页面底部,查看不同的FFmpeg版本,按需下载压缩包。我这里是下载的5.0.1版本的压缩包,执行命令解压

$ tar xvf ffmpeg-5.0.1.tar.xz

进入到工程目录下执行以下命令,可以获取到很多帮助信息

$ ./configure --help

我这里就用默认配置,不去添加或删除模块,执行以下命令指定保存编译结果的路径,这里的路径得用绝对路径(第一次使用~代码home,编译完没有找到编译结果)

$ ./configure --prefix=/home/xxx/work/ffmpeg-5.0.1/out

执行make 和 make install

$ make -j4    #编译
$ make install #将结果拷贝到out目录

生成如下内容

bin中是可执行程序,包括有ffplay以及ffprobe

include是编译用到的头文件

lib中是编译生成的静态库,如果想生成动态库可以通过执行configure来配置

share中是生成的操作手册

2、代码结构

FFmpeg的代码结构相当的工整!不由的想感慨一下,真是个艺术品!

compat目录:如其名字该目录是为了兼容不同平台儿创建的,有很多的头文件

ffbuild目录:存放了configure的配置文件以及相关的makefile文件

fftools目录:存放有ffplay以及ffprobe的源码

libavcodec目录:编码和解码库源码所在路径

libavdevice目录:与设备相关的代码,比如sdl显示设备、alsa音频输出设备、opengl图像加速设备、v412视频采集设备

libavfilter目录:

libavformat目录:复用和解复用代码库

libavutil目录:工具库

libpostproc目录:后其处理库

libswresample目录:音频重采样,格式转换和混合库

libswscale目录:颜色空间转换和大小尺寸缩放代码库

3、windows下如何编译ffmpeg

网上资料层出不穷,踩了很多坑,最后还是没有编译成功!

a. 首先安装mingw,并在环境变量中添加

b.安装MSYS2环境,这里主要是参考的博文 MSYS2+mingw 编译 ffmpeg 在windows下完整过程_坚持学习不能松懈的博客-CSDN博客_msys2编译windows程序

基本参考上面的博文之后就没有什么问题了,但是我在configure时碰到以下错误 gcc is unable to create an executable file,这是因为上面的环境变量没有正确添加,添加完之后重启电脑就OK了。

configure的步骤和linux下基本相同,接着执行make,报错 cc1: some warnings being treated as errors,我直接将ffbuild/config.mak中CFLAGS中的-Werror都删掉了,虽然不讲武德,但好歹是可以继续编译了。

后续的编译又有层出不穷的问题,先搁置,等有空了再来整理一下gcc环境!

还好官网有提供现成的dll和lib给我们使用!使用方法可以参考 VS下搭建FFmpeg开发环境_奋斗吧!骚年!的博客-CSDN博客

4、编译系统

参考 ffmpeg-makefile编译分析_Loken2020的博客-CSDN博客_ffmpeg makefile

FFmpeg下载编译、代码结构以及编译系统的更多相关文章

  1. PDFium-PDF开源之旅(1)-初探代码下载编译

    近日,Google和Foxit合作开源了Foxit的PDF源代码. 叫PDFium 相关新闻不少.哈,虽说已经不是程序猿了.只是还是有兴趣跑起来围观看看.废话少说.先说编译代码的步骤(事实上Googl ...

  2. Android webRTC 代码下载编译

    1.安装depot tools git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git 然后把把depot ...

  3. Android 程序分析环境搭建-Android 9 -代码下载编译

    Android 9 -代码下载编译 一,翻墙下载: 1.背景: 背景: 现在Android framework 开发的同学,整体在公司里面解一些无关痛痒的bug,对于Android framework ...

  4. CEF3开发者系列之工程和代码结构

    CEF支持一系列的编程语言和操作系统,并且能很容易地整合到新的或已有的工程中去.它的设计思想就是易用且兼顾性能. CEF3支持一系列的编程语言和操作系统,并且能很容易地整合到新的或已有的工程中去.它的 ...

  5. 一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp)

    一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp) 程序员的生活要一切自动化,更要幸福^_^. 转载请注明出处http: ...

  6. ffmpeg.c简单的结构功能分析(平局)

    当转码的研究看前一阵子FFmpeg资源. 因为ffmpeg.c与此相反的较长的代码.而有相当一部分人AVFilter相关代码(这部分已经不太熟悉),所以学习之前FFmpeg时间,还没有好好看看它的源代 ...

  7. 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)

                 分类: Android 系统开发(5)                                              作者同类文章X 版权声明:本文为博主原创文章 ...

  8. ffmpeg音频播放代码示例-avcodec_decode_audio4

    一.概述 最近在学习ffmpeg解码的内容,参考了官方的教程http://dranger.com/ffmpeg/tutorial03.html,结果发现这个音频解码的教程有点问题.参考了各种博客,并同 ...

  9. Maven编译代码的相关命令

    第一.main目录下的主代码编写完毕后,使用Maven进行编译,在项目根目录下运行命令mvn clean compile进       行项目编译. 第二.test目录下的测试用例编写完毕之后就可以调 ...

  10. To IOC,代码结构演变的随想

    代码结构演变 项目开始阶段 需求: 提供一个系统,可以在新春佳节之际以邮件的形式给员工发送新春祝福. 开发人员: 张三 版本一 string msg = "新年快乐!过节费5000.&quo ...

随机推荐

  1. 正则表达针对html(九)

    前言 关于处理一些html的东西. 正文 假设有一段html文本: <?xml version="1.0" encoding="UTF-8"?> & ...

  2. MMDeploy部署实战系列【第一章】:Docker,Nvidia-docker安装

    MMDeploy部署实战系列[第一章]:Docker,Nvidia-docker安装 这个系列是一个随笔,是我走过的一些路,有些地方可能不太完善.如果有那个地方没看懂,评论区问就可以,我给补充. 版权 ...

  3. .Net与AI的强强联合:AntSK知识库项目中Rerank模型的技术突破与实战应用

    随着人工智能技术的飞速发展,.Net技术与AI的结合已经成为了一个新的技术热点.今天,我要和大家分享一个令人兴奋的开源项目--AntSK,这是一个基于.net平台构建的开源离线AI知识库项目.在这个项 ...

  4. 力扣1768(java&python)-交替合并字符串(简单)

    题目: 给你两个字符串 word1 和 word2 .请你从 word1 开始,通过交替添加字母来合并字符串.如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾. 返回 合并后的 ...

  5. 阿里云日志服务SLS携手观测云发布可观测性解决方案,共建可观测应用创新

    简介: 2022年云栖大会期间,阿里云同观测云共同发布可观测性联合解决方案.观测云通过集成日志服务SLS的产品能力,发布了观测云SAAS专属版. 2022年云栖大会期间,阿里云同观测云共同发布可观测性 ...

  6. 科学地花钱:基于端智能的在线红包分配方案 (CIKM2020)

    简介: 红包是电商平台重要的用户运营手段,本文将介绍1688基于端智能技术开发的two-stage红包分发方案.这一方案持续在线上生效,相较于原有算法有明显提升. 一.前言 本文是作者在1688进行新 ...

  7. Flink 作为现代数据仓库的统一引擎:Hive 集成生产就绪!

    在2020年,你的数据仓库和基础设施需要满足哪些需求? 我们总结了几下几点: 首先,当下的企业正快速转向更实时化的模式,这要求企业具备对线上流式数据进行低延迟处理的能力,以满足实时(real-time ...

  8. 一文详解SQL关联子查询

    简介: 本文主要介绍什么是关联子查询以及如何将关联子查询改写为普通语义的sql查询. 本文主要介绍什么是关联子查询以及如何将关联子查询改写为普通语义的sql查询. 在背景介绍中我们将讲讲常见的关联子查 ...

  9. 逸仙电商Seata企业级落地实践

    简介: 本文将会以逸仙电商的业务作为背景, 先介绍一下seata的原理, 并给大家进行线上演示, 由浅入深去介绍这款中间件, 以便读者更加容易去理解 Seata 这个中间件. 作者 | 张嘉伟(Git ...

  10. dotnet 修复多框架 TargetFrameworks 包含不受支持平台导致构建失败

    本文将告诉大家如何修复 dotnet 项目里的多框架 TargetFrameworks 如果包含了当前系统无法支持的平台时,如何进行跳过.解决在 Linux 平台构建时提示 Mac Catalyst ...