ffmpeg 安装 h264(x264)encoder
#下载并安装x264
# 切换root用户
sudo -i
# 输入密码cd ~
mkdir FFmpeg7#下载并安装x264
git clone https://code.videolan.org/videolan/x264.git
cd x264
mkdir build./configure --help
# 报缺少asm 时 可加入--disable-asm
# --prefix=/home/llh/ffmpeg/build/ 指定安装目录
./configure --prefix=/root/FFmpeg7/x264/build --enable-shared --enable-static --disable-asmmake# x264将会安装到 :/root/FFmpeg7/x264/build 目录下
make install
# 下载并安装 ffmpeg
https://ffmpeg.org/releases/
wget https://ffmpeg.org/releases/ffmpeg-7.0.1.tar.bz2 --no-check-certificate
tar xjf ffmpeg-7.0.1.tar.bz2
cd ffmpeg-7.0.1./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-yasm --enable-libx264 --enable-gpl --enable-pthreads --extra-cflags=-I/root/FFmpeg7/x264/build/include --extra-ldflags=-L/root/FFmpeg7/x264/build/lib --disable-x86asm
# 重要参数含义
# --prefix=/usr/local/ffmpeg :指定 ffmpeg 安装路径
# --extra-cflags=-I/root/FFmpeg7/x264/build/include
# --extra-ldflags=-L/root/FFmpeg7/x264/build/lib #问题:ERROR: x264 not found using pkg-config 解决
vi /etc/profile#末尾加入下面内容,具体看各位自己x264的安装路径
export PKG_CONFIG_PATH=/root/FFmpeg7/x264/build/lib/pkgconfigsource /etc/profile#重新执行 ./configure
./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-yasm --enable-libx264 --enable-gpl --enable-pthreads --extra-cflags=-I/root/FFmpeg7/x264/build/include --extra-ldflags=-L/root/FFmpeg7/x264/build/lib --disable-x86asmmake
make installls /usr/local/ffmpeg -l
# 可以看到 /usr/local/ffmpeg 路径下已经有文件了
#更新系统动态链接库配置
vi /etc/ld.so.conf
# 将下面两行添加到 /etc/ld.so.conf 的最后
/usr/local/ffmpeg/lib/
/usr/local/lib/sudo ldconfig
# 追加环境变量
cd /etc/profile.d/
touch ffmpeg.sh
vi ffmpeg.sh# 具体路径看自己的安装路径在哪里
export PATH="/usr/local/ffmpeg/bin:$PATH"source /etc/profile
# 验证 FFmpeg 是否已添加到 PATH
ffmpeg -version
# 验证 h264 编码格式是否可以正常使用
# output 的 video 是 h264的 就OK了
# Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(progressive), 976x544, q=2-31, 30 fps, 15360 tbn (default)
ffmpeg -i input.mov -vcodec h264 -r 30 output.mp4
命令解析
./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-yasm --enable-libx264 --enable-gpl --enable-pthreads --extra-cflags=-I/usr/local/x264/include --extra-ldflags=-L/usr/local/x264/lib
这个命令是用于配置FFmpeg编译环境的,特别是在安装FFmpeg时,通过./configure脚本自定义编译选项。下面是该命令中各个部分的详细解析:
./configure:- 这是一个脚本文件,通常位于FFmpeg源代码的根目录下。它的作用是检查你的系统环境,准备编译FFmpeg所需的配置文件(主要是Makefile),以便后续使用
make命令进行编译。
- 这是一个脚本文件,通常位于FFmpeg源代码的根目录下。它的作用是检查你的系统环境,准备编译FFmpeg所需的配置文件(主要是Makefile),以便后续使用
--prefix=/usr/local/ffmpeg:- 这个选项指定了FFmpeg安装后的根目录。在这个例子中,FFmpeg的所有文件(包括可执行文件、库文件、配置文件等)都将被安装到
/usr/local/ffmpeg目录下。这有助于管理多个版本的FFmpeg或避免与系统自带的版本冲突。
- 这个选项指定了FFmpeg安装后的根目录。在这个例子中,FFmpeg的所有文件(包括可执行文件、库文件、配置文件等)都将被安装到
--enable-shared:- 启用共享库(动态链接库)的编译。这意味着FFmpeg的库将被编译为动态链接库(.so文件),而不是静态库(.a文件)。动态链接库可以减小程序的大小,因为它们可以被多个程序共享。
--enable-yasm:- 启用YASM汇编器的支持。YASM是一个现代的汇编器,用于编译FFmpeg源代码中某些对性能要求较高的部分。启用此选项可以提高FFmpeg的性能。
--enable-libx264:- 启用对libx264编码器的支持。libx264是一个开源的H.264/AVC视频编码器,被广泛认为是非常高效的。通过启用此选项,FFmpeg将能够使用libx264来编码视频。
--enable-gpl:- 启用GPL(GNU General Public License)许可的编解码器和其他组件。这意味着你可以使用那些受GPL许可保护的FFmpeg组件。
--enable-pthreads:- 启用POSIX线程(pthread)的支持。这允许FFmpeg在多线程环境中运行,从而可以利用多核处理器的优势来加速处理过程。
--extra-cflags=-I/usr/local/x264/include:- 为编译器添加额外的C标志(cflags)。
-I选项用于指定额外的头文件搜索路径。在这个例子中,它告诉编译器在/usr/local/x264/include目录下查找头文件,这对于编译需要libx264支持的FFmpeg部分非常重要。
- 为编译器添加额外的C标志(cflags)。
--extra-ldflags=-L/usr/local/x264/lib:- 为链接器添加额外的标志(ldflags)。
-L选项用于指定额外的库文件搜索路径。这里指定了/usr/local/x264/lib,确保链接器在链接FFmpeg时能够找到libx264的库文件。
- 为链接器添加额外的标志(ldflags)。
综上所述,这个命令是为了在编译FFmpeg时,启用一系列高级特性和依赖项(如共享库、libx264编码器支持等),并指定安装路径和额外的编译/链接选项,以确保FFmpeg能够正确地找到并使用这些依赖项。
相关文章:
ffmpeg 安装 h264(x264)encoder
#下载并安装x264 # 切换root用户 sudo -i # 输入密码cd ~ mkdir FFmpeg7#下载并安装x264 git clone https://code.videolan.org/videolan/x264.git cd x264 mkdir build./configure --help # 报缺少asm 时 可加入--disable-asm # --prefix/home/llh/ffmpeg/build/ 指定安装目录…...
Java项目:基于SSM框架实现的健康综合咨询问诊平台【ssm+B/S架构+源码+数据库+毕业论文】
一、项目简介 本项目是一套基于SSM框架实现的健康综合咨询问诊平台 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、…...
SpringBoot源码阅读(4)——事件
从监听器到事件 SpringApplication运行中触发事件,多播器发送事件到监听器,监听器处理事件。 SpingApplication中事件都是经过SpringApplicationRunListeners类传送到各个监听器。 以starting事件为例 void starting(ConfigurableBootstrapContext boo…...
EDI安全:如何在2024年保护您的数据免受安全和隐私威胁
电子数据交换(EDI)支持使用标准化格式在组织之间自动交换业务文档。这种数字化转型彻底改变了业务通信,消除了对纸质交易的需求并加速了交易。然而,随着越来越依赖 EDI 来传输发票、采购订单和发货通知等敏感数据,EDI …...
RabbitMQ快速入门 - 图像化界面的简单操作
目录 1、RabbitMQ的安装 2、RabbitMQ基本介绍 3、简单案例 4、数据隔离 1、RabbitMQ的安装 官网链接:rabbitmq官网 (官网很详细,也可以在官网学习啦~) 基础入门:自主学习:最新版本:安装我…...
新版亚组交互效应函数(P for interaction)newscitb5 1.3版本发布--用于一键生成交互效应表
在SCI文章中,交互效应表格(通常是表五)能为文章锦上添花,增加文章的信服力,增加结果的可信程度,还能进行数据挖掘。什么是亚组,通常就是特殊类型人群,比如男女,种族等&am…...
gpt讲 Observable 对象
什么是 Observable? Observable 是一种用于处理异步数据流的数据类型。它可以发出多个值,这些值可以是同步或者异步产生的,并且可以在时间上发生变化。在 Angular 中,HttpClient 返回的响应对象、事件流以及许多其他异步任务都可…...
STM32的SPI接口详解
目录 1.SPI简介 2.SPI工作原理 3.SPI时序 3.1 CPOL(Clock Polarity,时钟极性): 3.2 CPHA(Clock Phase,时钟相位): 3.3 四种工作模式 4.相关代码 4.1使能片选信号 4.2使能通…...
谷歌+火狐浏览器——实现生成二维码并实现拖动——js技能提升
最新遇到的问题:前两个二维码拖动不了,只有第三个一维码生成后,才可以拖拽 【问题】:出现在都是绝对定位,但是没有指定z-index导致的。 解决办法:在方法中添加一个变量 renderDrag(id) {var isDragging f…...
128陷阱详解(从源码分析)
1、128陷阱描述 Integer 整型 -128~127 超过这个范围,比较会不准确 例子 public static void main(String[] args) {Integer a128;Integer b128;Integer e127;Integer f127;System.out.println(ab); //输出falseSystem.out.println(a.equals(b)); //输出trueS…...
点云处理实操 基于多项式重构的平滑和法线估计
目录 基于多项式重构的平滑和法线估计 一、什么是移动最小二乘法(Moving Least Squares, MLS) 二、算法原理 三、算法应用 四、PCL代码实践 基于多项式重构的平滑和法线估计 原文地址:Smoothing and normal estimation based on polynomial reconstruction — Point Cl…...
MongoDB在Linux下的安装与基本操作指南
MongoDB是一款高性能、开源的NoSQL数据库系统,特别适合处理大规模数据存储应用。本文将详细介绍MongoDB在Linux系统(以Ubuntu为例)上的安装步骤,以及如何进行基本的数据库操作,帮助你快速上手MongoDB。 一、在Linux上…...
端口占用快速解决
netstat -aon|findsstr 8989 taskkill /pid 13221 -t -f 命令解释 1.检查网络连接状态 2.终止特定进程 netstat -aon | findstr 8989 netstat: 这是一个网络状态统计工具,可以显示活动的网络连接、路由表、接口表、多播成员信息等。-a: 显示所有连接和监听端口。通…...
普中51单片机:矩阵按键扫描与应用详解(五)
文章目录 引言电路图开发板IO连接矩阵键盘的工作原理行列扫描逐行/逐列扫描 LCD1602代码库代码演示——暴力扫描代码演示——数码管(行列式)代码演示——线翻转法代码演示——LCD1602密码锁 引言 矩阵按键是一种通过行列交叉连接的按键阵列,可以有效地减少单片机I/…...
SQLite Glob 子句
SQLite Glob 子句 SQLite 的 GLOB 子句是一种强大的搜索工具,用于在数据库中执行模式匹配操作。它类似于 SQL 中的 LIKE 子句,但 GLOB 使用的是基于文件系统的通配符,而不是 SQL 的百分比 (%) 和下划线 (_) 通配符。在本文中,我们…...
Redis基础教程(十七):Redis数据备份与恢复
💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝Ὁ…...
基于FPGA的千兆以太网设计(1)----大白话解释什么是以太网
1、什么是以太网? 还记得初学以太网的时候,我就被一大堆专业名词给整懵了:什么以太网,互联网,MAC,IP,局域网,万维网,网络分层模型等等等等。慢着!我学的不是以太网吗?怎么出来这么一大堆东西? 啊!以太网究竟是什么?别急,我接下来就尽量用通俗的大白话来给你解释…...
wordpress的restfull API使用教程,之如何用postman调试API,以便能使用vue等前端框架开发主题
文章目录 API开发手册在postman中调试这里以 post 一篇文章为例,讲解如何调试: 步骤 1:生成应用密码步骤 2:配置Postman步骤 3:创建文章 参考链接 API开发手册 官方API手册:https://developer.wordpress.o…...
刷题刷题刷题
P1123 取数游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路: 从1,1开始dfs,若行数x>n则立马刷新最大值退出搜索,若y>m则进入下一行从第一列开始搜索即x1,y1,对当前的搜索点x,y的八个方向进行1,因为不能相邻 AC:…...
【Spring Boot】统一异常处理
目录 统一异常处理一. 概念二. 全局异常处理三. 处理特定异常 统一异常处理 一. 概念 其实统一异常是运用了AOP(对某一类事情的集中处理)的思维,简单概括就是在我们进行前后端数据交互的时候,抛出的任何的异常都能够自动捕获然后…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...
pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...
STM32标准库-ADC数模转换器
文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”:输入模块(GPIO、温度、V_REFINT)1.4.2 信号 “调度站”:多路开关1.4.3 信号 “加工厂”:ADC 转换器(规则组 注入…...
