当前位置: 首页 > 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能够正确地找到并使用这些依赖项。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 哈喽GPT-4o,对GPT-4o 论文速写的思考与探索
  • css 选择器汇总
  • 普中51单片机:数码管显示原理与实现详解(四)
  • 在本地运行React集成TypeScript的项目
  • BulingBuling - 作息安排 [Reset Your Routine] - 1
  • 【初阶数据结构】深入解析循环队列:探索底层逻辑
  • 深度学习与CV入门
  • 中国科学技术大学发布了2024年少年班录取名单
  • HTML5使用<mark>标签:高亮显示文本
  • java面试-java基础(上)
  • 商家店铺电商小程序模板源码
  • 联想小新14Pro,误删了一个注册表,怎么办?
  • c#的List<T>的SelectMany 和Select
  • 【LinuxC语言】手撕Http协议之GET方法的实现
  • Spring AOP源码篇四之 数据库事务
  • Apache Zeppelin在Apache Trafodion上的可视化
  • ES6语法详解(一)
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • MaxCompute访问TableStore(OTS) 数据
  • mysql 数据库四种事务隔离级别
  • mysql常用命令汇总
  • nginx 配置多 域名 + 多 https
  • Redux系列x:源码分析
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 大整数乘法-表格法
  • 精彩代码 vue.js
  • 聊聊directory traversal attack
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 使用 Docker 部署 Spring Boot项目
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 国内开源镜像站点
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • # 安徽锐锋科技IDMS系统简介
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (十八)Flink CEP 详解
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)scrum常见工具列表
  • (转)Sublime Text3配置Lua运行环境
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .Net CF下精确的计时器
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET Framework .NET Core与 .NET 的区别
  • .net FrameWork简介,数组,枚举
  • .Net OpenCVSharp生成灰度图和二值图
  • .NET 直连SAP HANA数据库
  • .net后端程序发布到nignx上,通过nginx访问
  • .NET使用存储过程实现对数据库的增删改查
  • .NET中的十进制浮点类型,徐汇区网站设计
  • @Bean有哪些属性