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

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脚本自定义编译选项。下面是该命令中各个部分的详细解析:

  1. ./configure
    • 这是一个脚本文件,通常位于FFmpeg源代码的根目录下。它的作用是检查你的系统环境,准备编译FFmpeg所需的配置文件(主要是Makefile),以便后续使用make命令进行编译。
  2. --prefix=/usr/local/ffmpeg
    • 这个选项指定了FFmpeg安装后的根目录。在这个例子中,FFmpeg的所有文件(包括可执行文件、库文件、配置文件等)都将被安装到/usr/local/ffmpeg目录下。这有助于管理多个版本的FFmpeg或避免与系统自带的版本冲突。
  3. --enable-shared
    • 启用共享库(动态链接库)的编译。这意味着FFmpeg的库将被编译为动态链接库(.so文件),而不是静态库(.a文件)。动态链接库可以减小程序的大小,因为它们可以被多个程序共享。
  4. --enable-yasm
    • 启用YASM汇编器的支持。YASM是一个现代的汇编器,用于编译FFmpeg源代码中某些对性能要求较高的部分。启用此选项可以提高FFmpeg的性能。
  5. --enable-libx264
    • 启用对libx264编码器的支持。libx264是一个开源的H.264/AVC视频编码器,被广泛认为是非常高效的。通过启用此选项,FFmpeg将能够使用libx264来编码视频。
  6. --enable-gpl
    • 启用GPL(GNU General Public License)许可的编解码器和其他组件。这意味着你可以使用那些受GPL许可保护的FFmpeg组件。
  7. --enable-pthreads
    • 启用POSIX线程(pthread)的支持。这允许FFmpeg在多线程环境中运行,从而可以利用多核处理器的优势来加速处理过程。
  8. --extra-cflags=-I/usr/local/x264/include
    • 为编译器添加额外的C标志(cflags)。-I选项用于指定额外的头文件搜索路径。在这个例子中,它告诉编译器在/usr/local/x264/include目录下查找头文件,这对于编译需要libx264支持的FFmpeg部分非常重要。
  9. --extra-ldflags=-L/usr/local/x264/lib
    • 为链接器添加额外的标志(ldflags)。-L选项用于指定额外的库文件搜索路径。这里指定了/usr/local/x264/lib,确保链接器在链接FFmpeg时能够找到libx264的库文件。

综上所述,这个命令是为了在编译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数据备份与恢复

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…...

基于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(对某一类事情的集中处理)的思维,简单概括就是在我们进行前后端数据交互的时候,抛出的任何的异常都能够自动捕获然后…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂&#xff…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...