ffmpeg 安装 h264(x264)encoder

news2024/10/5 7:27:42

 #下载并安装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-asm

make

# 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/pkgconfig

source /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-x86asm

make
make install

ls /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能够正确地找到并使用这些依赖项。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一位3D打印工程师繁忙的一天

早晨:准备与规划 7:00 AM - 起床与晨练 3D打印工程师早起进行晨练,如跑步或瑜伽,以保持身心健康。晨练后,享用一顿健康的早餐,为一天的繁忙工作做好准备。 8:00 AM - 检查邮件和项目进展 在开始工作前,先…

封装了一个仿照抖音效果的iOS评论弹窗

需求背景 开发一个类似抖音评论弹窗交互效果的弹窗,支持滑动消失, 滑动查看评论 效果如下图 思路 创建一个视图,该视图上面放置一个tableView, 该视图上添加一个滑动手势,同时设置代理,实现代理方法 (BOOL)gestur…

Zkeys三方登录模块支持QQ、支付宝登录

1,覆盖到根目录,并导入update.sql数据库文件到Zkeys数据库里 2. 后台系统权限管理,配置管理员权限-系统类别-找到云外科技,全部打勾 3,后台系统设置找到云外快捷登录模块填写相应的插件授权配置和登录权限配置&#x…

【python中级】图像从从笛卡尔坐标系转换为极坐标系

【python中级】图像从从笛卡尔坐标系转换为极坐标系 1.背景2.生成二维图3.极坐标转换1.背景 笛卡尔坐标系就是我们常说的直角坐标系。 笛卡尔坐标系,也称为直角坐标系,是由法国数学家和哲学家勒内笛卡尔(Ren Descartes)发明的一种二维或三维坐标系统。它使用两个或三个相互…

人工智能在病理切片虚拟染色及染色标准化领域的系统进展分析|文献速递·24-07-07

小罗碎碎念 本期文献主题:人工智能在病理切片虚拟染色及染色标准化领域的系统进展分析 这一期文献的速递,是有史以来数量最大的一次,足足有十一篇,本来打算分两期写,但是为了知识的系统性,我决定咬咬牙&…

texStudio使用(小白)

原先使用overleaf在线编译,可能eps格式的图片太大导致需要充钱,所以考虑本地安装 安装教程参考B站视频:B站Latex本地编译器安装:TexLive TextStudio 踩到坑: 1. 编译器位置要选择对 因为BibTex选成了Biber导致出现无…

minist数据集分类模型的训练

minist数据集训练 训练方法:利用pytorch来实现minist数据集的分类模型训练 训练模型如下图所示 模型代码: import torch from torch import nn from torch.nn import Flattenclass Net(nn.Module):def __init__(self):super().__init__()self.module …

文件管理下:文件函数的学习

前言 Hello,小伙伴们你们的作者君又来了,上次我们简单介绍了文件的坐拥并简单提到了数据的读取,和C语言的默认流的作用,今天我将继续带领大家探索文件的奥秘,大家准别好了吗? 在内容开始之前还是按照惯例&#xff0c…

**kwargs 字典解包传参的方式

字典解包传参 在Python中,****kwargs**是一种通过字典解包 (dictionary unpacking) 的方式进行参数传递的方式。它将一个字典的键值对解包并传递给函数的命名参数。 示例代码 kwargs实参: {name: "jordan", age: 18, score: [80, 85, 85]} get_info形…

下载linux的吐槽

本来这几天放假了,想下一个linux玩一玩 教程(我就是根据这个教程进行下载的,但是呢在进行修改BIOS 模式的 地方遇见了困难,也许是电脑修过的原因,我狂按F12 以及 FnF12都没有BIOS设置,只有一个让我选择用w…

前端扫盲:cookie、localStorage和sessionStorage

cookie、localStorage和sessionStorage都是存储数据的方式,他们之间有什么不同,各有什么应用场景,本文为您一一解答。 一、什么是cookie、localStorage和sessionStorage 1. Cookie是一种存储在用户计算机上的小型文本文件,由服务…

子数组按位与为k

注意这里的子数组是连续的非空的数组&#xff0c;我们要学会与处理就是求交集 class Solution { public:long long countSubarrays(vector<int>& nums, int k) {long long ans 0;for (int i 0; i < nums.size(); i) {int x nums[i];for (int j i - 1; j > …

通过消息传递同步操作

通信顺序进程&#xff08;CSP&#xff09; 是一种形式语言&#xff0c;用来描述并发性系统间进行交互的模式 每个线程或进程独立运行&#xff0c;它们之间仅通过消息传递进行通信&#xff0c;而不是直接共享状态 每个线程实际上都是一个状态机&#xff1a;当它接收到一条消息时…

Zabbix监控软件

目录 一、什么是Zabbix 二、zabbix监控原理 三、zabbix 安装步骤 一、什么是Zabbix ●zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 ●zabbix 能监视各种网络参数&#xff0c;保证服务器系统的安全运营&#xff1b;并提供灵活的…

基于LoFTR_TRT项目实现LoFTR模型的trt推理与onnx推理,3060显卡下320图像30ms一组图

本博文主要记录了使用LoFTR_TRT项目将LoFTR模型导出为onnx模型&#xff0c;然后将onnx模型转化为trt模型。并分析了LoFTR_TRT与LoFTR的基本代码差异&#xff0c;但从最后图片效果来看是与官网demo基本一致的&#xff0c;具体可以查看上一篇博客记录。最后记录了onnx模型的使用【…

深入探索 Python 中的数据维数:高维数据处理方法与应用

Python 数据维数 在数据科学和机器学习领域&#xff0c;理解数据的维度是至关重要的。Python作为一种强大而灵活的编程语言&#xff0c;提供了丰富的工具和库来处理各种维度的数据。本文将介绍Python中数据维数的概念&#xff0c;以及如何使用Python库来处理不同维度的数据。 什…

27 防火墙不同区域之间是如何通信

26 华三防火墙安全区域-CSDN博客 目标实现不同区域的通信 1 给防火墙配置IP地址 WEB页面配置IP地址 2 在PC机上配置对应对IP地址 &#xff08;该要启用的接口一定要启用 IP地址 子网掩码 网关 一定要查看好&#xff09; 3 将配置好的IP地址对应的不同接口加入到不同的区域上去 …

关于忠诚:忠于自己的良知、理想、信念

关于忠诚&#xff1a; 当我们面对公司、上司、爱人、恋人、合作伙伴还是某件事&#xff0c;会纠结离开还是留下&#xff0c;这里我们要深知忠诚的定义&#xff0c;我们不是忠诚于某个人、某件事、或者某个机构&#xff0c;而是忠诚于自己的良知&#xff0c;忠诚于自己的理想和…

【计算机毕业设计】020基于weixin小程序订餐系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

分班结果老师怎么发给家长?

分班结果老师怎么发给家长&#xff1f; 随着新学期的脚步渐近&#xff0c;老师们的工作也变得愈发繁忙。从准备教学计划到整理课程材料&#xff0c;每一项任务都不容小觑。而其中&#xff0c;分班结果的告知工作&#xff0c;更是让不少老师头疼不已。传统的分班通知方式&#…