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 clang

make && 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/ 目录下
    在这里插入图片描述
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nginx出现504 Gateway Time-out错误的原因分析及解决

nginx出现504 Gateway Time-out错误的原因分析及解决 1、查看公网带宽是否被打满 2、查看网络是否有波动(可以在nginx上ping后端服务,看是否有丢包情况) 3、查看服务器资源使用情况(cpu、内存、磁盘、网络等) 4、查看nginx日志,具体到哪个服务的哪个…

浙江保融科技2025实习生校招校招笔试分享

笔试算法题一共是有4道,第一道是手搓模拟实现一个ArrayList,第二道是判断字符串是否回文,第三道是用代码实现1到2种设计模式。 目录 一.模拟实现ArrayList 二.判断字符串是否回文 ▐ 解法一 ▐ 解法二 ▐ 解法三 三.代码实现设计模式 一…

189.二叉树:把二叉搜索树转换为累加树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

深度神经网络——决策树的实现与剪枝

概述 决策树 是一种有用的机器学习算法,用于回归和分类任务。 “决策树”这个名字来源于这样一个事实:算法不断地将数据集划分为越来越小的部分,直到数据被划分为单个实例,然后对实例进行分类。如果您要可视化算法的结果&#xf…

【linux】操作系统使用wget下载网络文件,内核tcpv4部分运行日志

打印日志代码及运行日志(多余日志被删除了些): 登录 - Gitee.comhttps://gitee.com/r77683962/linux-6.9.0/commit/55a53caa06c1472398fac30113c9731cb9e3b482 测试步骤和手段: 1、清空 kern.log; 2、使用wget 下载linux-6.9.tar.gz&…

webgis 之 地图投影

地图投影 什么是地图投影目的种类等角投影的分类墨卡托投影Web 墨卡托投影 参考小结 为了更好地展示地球上的数据,需要将地球投影到一个平面上。地图投影是一个数学问题,按照一定的几何关系,将地球上的经纬度坐标映射到一个平面上的坐标。地球…

c++里 父类私有的虚函数,也是可以被子类重写和继承的。但父类私有的普通函数,子类无法直接使用

谢谢 。今天看课本上有这么个用法,特测试一下。这样就也可以放心的把父类的私有函数列为虚函数了,或者说把父类的虚函数作为私有函数了。 再补充一例:

用Nuitka打包 Python,效果竟如此惊人!

目录 为什么选择Nuitka? Nuitka的工作原理 Nuitka的工作流程大致如下: 安装Nuitka 实战案例 示例代码 打包程序 运行可执行文件 进阶技巧 优化选项 多文件项目 打包第三方库 使用Python开发一个程序后,将Python脚本打包成独立可执…

小红书xs-xt解密

在进行小红书爬虫的时候,有一个关键就是解决动态密文的由来 这边用atob对X-S密文进行解密 可以看到他是一个字符串 可以发现他本来是一个json对象,因为加密需要字符串,所以将json对象转化 为了字符串 而在js中,常用JSON.stringify进行json对象到字符串的转化。 这边将JS…

无版权图片素材搜索网站,解决无版权图片查找问题

在数字内容创作领域,图片素材的选择至关重要。一张高质量、合适的图片不仅能够吸引读者的眼球,还能有效传达信息。然而,找到既免费又无版权限制的图片素材并非易事。小编将为大家介绍几个解决这一问题的无版权图片素材搜索网站,这…

第19章 大数据架构设计理论与实践

19.1 传统数据处理系统存在的问题 海量数据的,数据库过载,增加消息队列、甚至数据分区、读写分离、以及备份以及传统架构的性能的压榨式提升,都没有太明显的效果,帮助处理海量数据的新技术和新架构开发被提上日程。 19.2 大数据处…

国产MCU芯片(2):东软MCU概览及触控MCU

前言: 国产芯片替代的一个主战场之一就是mcu,可以说很多国内芯片设计公司都打算或者已经在设计甚至有了一款或多款的量产产品了,这也是国际大背景决定的。过去的家电市场、过去的汽车电子市场,的确国产芯片的身影不是很常见,如今不同了,很多fabless投身这个行业,一种是…

性能测试并发量评估新思考:微服务压力测试并发估算

性能测试并发量评估新思考 相信很多人在第一次做压力测试的时候,对并发用户数的选择一直有很多的疑惑,那么行业内有一些比较通用的并发量的计算方法,但是这些方法在如今微服务的架构下多少会有一些不适合,下面的文章我们对这些问题…

从0开始C++(三):构造函数与析构函数详解

目录 构造函数 构造函数的基本使用 构造函数也支持函数重载 构造函数也支持函数参数默认值 构造初始化列表 拷贝构造函数 浅拷贝和深拷贝 析构函数 总结 练习一下ヽ( ̄▽ ̄)ノ 构造函数 构造函数的基本使用 构造函数是一种特殊的成…

不知道怎么下载原版系统,这几个原版系统下载网站可以帮你

电脑是我们日常办公生活中必备不可少的设备,无论是个人使用还是企业部署,拥有一个稳定、安全且纯净的操作系统对于保障数据安全和提升使用体验至关重要。然而,网络上充斥着各种二次打包的系统版本,这些版本往往携带了第三方软件或…

班古精准营养X朗格力:教你如何应对慢阻肺

#肺科营养#朗格力#班古营养#复合营养素#肺部营养#肺部健康# 肺是除皮肤外人体中唯一直接与外界联系的器官。一副好肺,能为身体供应充足的氧气,使生命动力更足,人体免疫力、自愈力更强。肺好,生命动力就足,保肺就是保命!但有不少人却没能拥有健康的肺,而是患上了慢阻肺。 专家指…

国外创意二维码活动:喜力Heineken助力爱尔兰濒临倒闭酒吧转型博物馆?

今天分享一个很有意思的国外二维码活动案例。爱尔兰酒馆拥有非常悠久的历史,闻名于世界。但是因为经营成本、税收等的不断增加,自2005年起,四分之一的爱尔兰酒吧相继关闭,这其中包括拥有1229年历史的世界上最古老的酒吧。 于是&a…

Hi3861 OpenHarmony嵌入式应用入门--点灯

本篇实现对gpio的控制,通过控制输出进行gpio的点灯操作。 硬件 我们来操作IO2,控制绿色的灯。 软件 GPIO API API名称 说明 hi_u32 hi_gpio_deinit(hi_void); GPIO模块初始化 hi_u32 hi_io_set_pull(hi_io_name id, hi_io_pull val); 设置某个IO…

用群辉NAS打造影视墙(Video Station篇)

目录 一、群辉套件Video Station 1、安装 2、进入系统 3、配置刮削器 4、获取TMDB网站API密钥 5、配置DNS (1)开启SSH (2)使用终端工具连接到NAS (3)修改hosts文件 (4)再次测试连接 6、设置目录 二、手机端APP设置 三、电视端APP 四、解决影视信息错误 N…

TikTok API接口——获取TikTok用户QRcode二维码

一、引言 在数字化时代,QRcode二维码已经成为连接线上线下的重要桥梁。在社交媒体领域,TikTok作为短视频领域的佼佼者,用户量庞大且活跃度高。为了满足用户之间更便捷的互动需求,我们特别开发了一款针对TikTok平台的接口&#xf…