当前位置: 首页 > news >正文

ffmpeg音视频开发从入门到精通——ffmpeg下载编译与安装

音视频领域学习ffmpeg的重要性

  • 音视频领域中ffmpeg的广泛应用,包括直播、短视频、网络视频、实时互动和视频监控等领域。
  • 掌握FM和音视频技术可以获得更好的薪酬。

学习建议音视频学习建议与实战应用

  • 音视频处理机制的学习,需要勤加练习,带着问题去学习会事半功倍。
  • 适合从事音视频相关工作的、想转行到音视频行业的人、在校大学生等人群学习。

了解 FFmpeg

FFmpeg 是一个音视频处理的工具,通过 FFmpeg 可以对视频进行旋转、缩小、添加水印、截图、添加马赛克、直播推流、转化音频等操作。
容器:容器是指一种特定格式的多媒体文件,例如 mp4、flv 文件等;
媒体流:媒体流一般是指时间轴上的连续的数据,这些数据是需要连续的,如一段音频数据、一段视频数据等;
数据帧:数据帧是指媒体流中的最小处理单元,例如很多张图片组成一段连续的视频,每一帧则是每一张图片;
编解码器:指对一个数据流进行变换的程序;
复用:把不同的流根据某种容器(mp4、flv)的规则集合在一起成为一个文件称为复用;
解复用:解复用则是与复用相反,把一个文件中不同的流解析出来称之为解复用;

应用领域

音视频应用广泛,包括直播、短视频、优酷等视频平台和视频通话、监控等场景。播放器架构包括解复用、解码、渲染和同步等步骤,通过了解这些原理,可以轻松实现音视频处理流程。
ffmpeg是一个跨平台的多媒体框架,可以用于解码、编码、转码、复用、解复用、滤镜等处理。

下载安装

git clone https://git.ffmpeg.org/ffmpeg.git./configure --prefix=/usr/local/ffmpeg  --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-filter=delogo --enable-debug --disable-optimizations --enable-libspeex --enable-videotoolbox --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --cc=clang --host-cflags=--host-ldflags=
# 编译器需要支持c11 标准,如果不支持,macos 请参考
# brew install update
# brew install gcc
# brew install clangmake && make install

您提供的命令用于配置FFmpeg的编译选项。以下是每个选项的详细解释:

./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-filter=delogo --enable-debug --disable-optimizations --enable-libspeex --enable-videotoolbox --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --cc=clang --host-cflags= --host-ldflags=

选项详解

  • --prefix=/usr/local/ffmpeg

    • 指定安装FFmpeg的路径。在这里,FFmpeg会被安装到/usr/local/ffmpeg目录下。
  • --enable-gpl

    • 启用GPL(GNU通用公共许可证)组件。这是为了使用一些受GPL许可的库或代码。
  • --enable-nonfree

    • 启用非自由软件组件。某些库可能有不同的许可证,这个选项允许使用这些库。
  • --enable-libfdk-aac

    • 启用libfdk-aac库,这是一个高质量的AAC音频编码库。
  • --enable-libx264

    • 启用libx264库,用于H.264视频编码。
  • --enable-libx265

    • 启用libx265库,用于H.265视频编码。
  • --enable-filter=delogo

    • 启用delogo滤镜,用于去除视频中的水印或标志。
  • --enable-debug

    • 启用调试模式,生成包含调试信息的二进制文件。
  • --disable-optimizations

    • 禁用编译器优化。这对于调试和开发时有帮助,因为它生成的代码更容易理解和调试。
  • --enable-libspeex

    • 启用libspeex库,用于Speex音频编码。
  • --enable-videotoolbox

    • 启用VideoToolbox,这是macOS和iOS上的视频加速API。
  • --enable-shared

    • 生成共享库(.so或.dylib),而不是静态库。
  • --enable-pthreads

    • 启用pthread(POSIX线程)支持,用于多线程处理。
  • --enable-version3

    • 启用FFmpeg的第三版本。
  • --enable-hardcoded-tables

    • 启用硬编码表,这是某些编解码器优化的一部分。
  • --cc=clang

    • 指定使用Clang作为C编译器。
  • --host-cflags= --host-ldflags=

    • 这些选项通常用于指定主机编译器的C编译器标志和链接器标志。在这里它们是空的,表示使用默认值。

在这里插入图片描述
在这里插入图片描述

  • 查看`/usr/local/ffmpeg/ 目录下

在这里插入图片描述
在这里插入图片描述

windows下载

你可以通过以下步骤下载FFmpeg的Windows版本:

  1. 打开FFmpeg官方网站:https://ffmpeg.org/

  2. 在导航栏中选择“Download”,然后点击“Windows Builds”。

  3. 在Windows Builds页面,你可以选择不同的版本和配置。根据你的需求选择合适的版本,如32位或64位,静态或共享等。

  4. 点击适合你的版本,然后你会被重定向到一个新页面。

  5. 在新页面上,你可以从一系列的链接中选择下载源文件或预编译版本。

  6. 选择适合你的需求的链接,然后点击下载。

  7. 下载完成后,你可以解压缩下载的文件,并将FFmpeg的可执行文件添加到系统的环境变量中,以便在任何位置都能够使用它。

请注意,FFmpeg是一个功能强大而复杂的工具,所以在使用之前建议阅读官方文档或其他相关教程。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • php、Java、python房屋租赁系统 在线租房系统 房源出租平台(源码、调试、LW、开题、PPT)
  • 纵向合并单元格——table
  • Python爬虫入门篇!
  • 【QNX+Android虚拟化方案】101 - Android GVM 虚拟网络 Virt-Net 配置
  • YOLOv9模型训练或测试过程中,无法打印模型的GFLOPs
  • shell脚本编程(数组)
  • 智能家居系统(基于STM32F103C8T6标准库+FreeRTOS+Qt串口开发实现)
  • 【系统架构设计师-2010年】综合知识-答案及详解
  • Java 7.3 - 分布式 id
  • QT教程:start()和startTimer()的区别
  • 第五章 Pytorch完成线性回归
  • 小白入门LLM大模型最牛X教程------上交《动手学大模型应用开发》!
  • 语音测试(一)ffmpeg视频转音频
  • 2024年全国大学生数学建模竞赛(A题) 建模解析|“板凳龙” 闹元宵|小鹿学长带队指引全代码文章与思路
  • OpenHarmony轻松玩转GIF数据渲染
  • [笔记] php常见简单功能及函数
  • [译]如何构建服务器端web组件,为何要构建?
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • angular2开源库收集
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • C++入门教程(10):for 语句
  • css属性的继承、初识值、计算值、当前值、应用值
  • FineReport中如何实现自动滚屏效果
  • If…else
  • java第三方包学习之lombok
  • Java教程_软件开发基础
  • Js基础——数据类型之Null和Undefined
  • laravel5.5 视图共享数据
  • Meteor的表单提交:Form
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • React-Native - 收藏集 - 掘金
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Spring声明式事务管理之一:五大属性分析
  • ViewService——一种保证客户端与服务端同步的方法
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 精彩代码 vue.js
  • 双管齐下,VMware的容器新战略
  • 延迟脚本的方式
  • 正则表达式
  • ​Linux·i2c驱动架构​
  • #HarmonyOS:Web组件的使用
  • #includecmath
  • $$$$GB2312-80区位编码表$$$$
  • ${factoryList }后面有空格不影响
  • (003)SlickEdit Unity的补全
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)JAVA中的堆栈
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .mysql secret在哪_MYSQL基本操作(上)