Linux编译FFmpeg libx264 libx265 libfdk-aac libmp3lame libvpx libopus等

本文主要是介绍Linux编译FFmpeg libx264 libx265 libfdk-aac libmp3lame libvpx libopus等,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

强烈推荐使用系统源安装ffmpeg,例如: sudo apt install ffmpeg for Ubuntu。
当不能满足需求的时候再手动编译吧。


更多FFmpeg第三方库编译集成,详见我的新博客:https://blog.lmshao.com/how-to-build-ffmpeg.html


有些Linux发行版可以在线安装ffmpeg,但是因为版权关系不能包含我们所需的编码器,有时候还是需要手动编译。
下面介绍一些常见编码器的安装。libx264libx265libfdk-aaclibmp3lamelibvpxlibopuslibaom for AV1。不需要的可以不安装,最终ffmpeg configure不指定特定的编码器就可以了。
对版本没要求的,可以使用发行版对应的应用仓库的命令进行安装。
不想自己编译的可以直接下载我编译好的,GNU C Library (GNU libc) 版本大于等于2.17的系统都可以使用。常见的CentOS 7和Ubuntu13.04以上都应该都可以。
https://github.com/lmshao/FFmpegBinary/releases

编译第三方库

nasm

nasm是汇编编译器,有些编码器包含汇编代码,需要使用nasm。有些系统命令安装的nasm版本比较低,比如centos7 yum版本2.10。可以选择手动编译安装2.15版本。

wget https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.xz
tar Jxvf nasm-2.15.05.tar.xz
pushd nasm-2.15.05./configure
make && make installpopd

libx264

libx264是市面上评价比较高的H.264编码器,很多高清电影都是使用x264压缩的。

wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
tar jxvf x264-master.tar.bz2
pushd x264-master./configure --enable-shared
make && make installpopd

Ubuntu系统在线安装

sudo apt install libx264-dev

libx265

hg类似于git,好多系统可以在线安装这个命令。apt install mercurial / yum install mercurial
默认8bit编码模式,可以在配置时把 HIGH_BIT_DEPTH=ON 选择10bit。

hg clone http://hg.videolan.org/x265
pushd x265/build/linux/
cmake ../../source -DHIGH_BIT_DEPTH=ON
make && make installpopd

Ubuntu系统在线安装

sudo apt install libx265-dev

libfdk-aac

libfdk-aac是目前评价最高的开源aac编码器。Ubuntu仓库没有这个,必须手动编译安装。

wget -O fdk-aac-2.0.1.tar.gz https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-2.0.1.tar.gz/download
tar zxvf fdk-aac-2.0.1.tar.gz
pushd fdk-aac-2.0.1./configure
make && make installpopd

libmp3lame

libmp3lame 是mp3编码器。

wget -O lame-3.100.tar.gz https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz/download
tar zxvf lame-3.100.tar.gz
pushd lame-3.100./configure
make && make installpopd

Ubuntu系统在线安装

apt install libmp3lame-dev

libvpx

libvpx 是开源视频编码格式 VP8/VP9 的编码器。

wget https://github.com/webmproject/libvpx/archive/v1.10.0/libvpx-1.10.0.tar.gz
tar zxvf libvpx-1.10.0.tar.gz 
pushd libvpx-1.10.0mkdir libvpx-build && cd libvpx-build
../configure --enable-shared --disable-static
make && make installpopd

Ubuntu系统在线安装

apt install libopus-dev

libopus

libopus 是编码opus格式用的。

wget https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz
tar zxvf opus-1.3.1.tar.gz
pushd opus-1.3.1./configure --enable-shared --disable-static
make && make installpopd

Ubuntu系统在线安装

apt install libopus-dev

libaom

新出的 AV1 视频编码器

git clone https://aomedia.googlesource.com/aom
git checkout v3.2.0 -b v3.2.0 #可指定版本
mkdir build && pushd build
cmake .. -DBUILD_SHARED_LIBS=1
make && make install

Intel Media SDK - Intel 硬件加速 qsv

下载Intel-Media-SDK,https://github.com/Intel-Media-SDK/MediaSDK/releases
,运行install_media.sh 默认安装在/opt/目录下了。

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/intel/mediasdk/lib64/pkgconfig

ffmepg 配置参数

--enable-libmfx

编译FFmpeg

需要的编码器按照上述的文档安装完后,在配置ffmpeg的时候使用特定的参数指定就可以集成进去了。

wget https://www.ffmpeg.org/releases/ffmpeg-4.4.tar.bz2
tar jxvf ffmpeg-4.4.tar.bz2
pushd ffmpeg-4.4export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:$PKG_CONFIG_PATH
./configure --enable-shared --disable-static --enable-gpl --enable-nonfree \--enable-libx264 \--enable-libx265 \--enable-libfdk-aac \--enable-libmp3lame \--enable-libvpx \--enable-libopus \--enable-libaommake && make installpopd

make install 后 ffmpeg 命令和相应的动态库就安装到系统目录了,默认一般是/usr/local/bin//usr/local/lib/目录,可以使用./configure --prefix=./xxxxx来指定安装目录。

编译 ffplay

默认编译可能没有编译出来ffplay,可以通过以下方法编译ffplay。

安装SDL2

sudo apt install libsdl2-dev  # Ubuntu

configure 参数

--enable-ffplay

不想动手的,可以下载这个FFmpeg 4.4.1 Binary。

这篇关于Linux编译FFmpeg libx264 libx265 libfdk-aac libmp3lame libvpx libopus等的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/410988

相关文章

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

基于Java和FFmpeg实现视频压缩和剪辑功能

《基于Java和FFmpeg实现视频压缩和剪辑功能》在视频处理开发中,压缩和剪辑是常见的需求,本文将介绍如何使用Java结合FFmpeg实现视频压缩和剪辑功能,同时去除数据库操作,仅专注于视频处理,需... 目录引言1. 环境准备1.1 项目依赖1.2 安装 FFmpeg2. 视频压缩功能实现2.1 主要功

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

linux安装、更新、卸载anaconda实践

《linux安装、更新、卸载anaconda实践》Anaconda是基于conda的科学计算环境,集成1400+包及依赖,安装需下载脚本、接受协议、设置路径、配置环境变量,更新与卸载通过conda命令... 目录随意找一个目录下载安装脚本检查许可证协议,ENTER就可以安装完毕之后激活anaconda安装更

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

Linux grep 命令的使用指南

《Linuxgrep命令的使用指南》本文给大家介绍Linuxgrep命令的使用指南,包括基础搜索语法、实践指南,感兴趣的朋友跟随小编一起看看吧... 目录linux grep 命令全面使用指南一、基础搜索语法1. 基本文本搜索2. 多文件搜索二、常用选项详解1. 输出控制选项2. 上下文控制选项三、正则表达

Linux部署中的文件大小写问题的解决方案

《Linux部署中的文件大小写问题的解决方案》在本地开发环境(Windows/macOS)一切正常,但部署到Linux服务器后出现模块加载错误,核心原因是Linux文件系统严格区分大小写,所以本文给大... 目录问题背景解决方案配置要求问题背景在本地开发环境(Windows/MACOS)一切正常,但部署到