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-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

[Linux]:进程(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 进程终止 1.1 进程退出的场景 进程退出只有以下三种情况: 代码运行完毕,结果正确。代码运行完毕,结果不正确。代码异常终止(进程崩溃)。 1.2 进程退出码 在编程中,我们通常认为main函数是代码的入口,但实际上它只是用户级

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。