您当前的位置:首页 > 电脑百科 > 软件技术 > 软件技术

完美解决Linux环境编译ffmpeg库

时间:2022-07-08 10:20:22  来源:  作者:音视频开发老舅

背景说明

项目功能实现需要在linux下编译出可用的FFmpeg库。FFmpeg在编译过程中是需要链接其它三方库的,比如x265 x265等,否则可能会造成功能不全(如程序接口返回找不到H264编码器错误),影响使用。编译这种三方库其实理论简单,但是细节磨人,有时候没设置好就是会有些莫名其妙的问题。我这里也参考了如零声学院分享的文档,结合自己情况总结记录了份编译说明,亲测有效,使用稳定。甚至可以按步骤无脑复制shell执行,编译一路绿灯,快速得到完美的FFmpeg库。

编译

整体思路就是先把依赖的库如x264、x265等先配置好,这些库不是必须的,但是保证库功能完整性最好都配置好。接下来就是下载FFmpeg源码,和依赖库进行配置然后进行编译,编译完成库即可用了。当前环境是 ubuntu18 desktop + ffmpeg 4.2.1

注意

(1)所有操作以我的环境为准,但可以完全按以下步骤依次复制命令执行,因为我是在home目录是通用的,建议按照此方法。如果想使用自己的路径要注意修改命令参数,防止路径不同造成的错误

(2)部分库可能需要连接Github,最好选择网络较好的机器上编译

(3)整个安装过程,基本就是复制命令执行,等待执行结束。。。循环。测试多台机器编译过程中均无报错,正常情况预计用时15分钟以内,即可完成全部编译工作

一、创建目录

在home目录下创建

ffmpeg_sources:用于下载源文件

ffmpeg_build: 存储编译后的库文件

bin:存储二进制文件(ffmpeg,ffplay,ffprobe,X264,X265等)

命令:

cd ~ 
mkdir ffmpeg_sources  ffmpeg_build bin

二、安装依赖

更新软件信息

sudo apt-get update

安装需要的组件

sudo apt-get -y install 
  autoconf 
  automake 
  build-essential 
  cmake 
  git-core 
  libass-dev 
  libfreetype6-dev 
  libsdl2-dev 
  libtool 
  libva-dev 
  libvdpau-dev 
  libvorbis-dev 
  libxcb1-dev 
  libxcb-shm0-dev 
  libxcb-xfixes0-dev 
  pkg-config 
  texinfo 
  wget 
  zlib1g-dev

C++音视频开发学习资料:点击领取→音视频开发(资料文档+视频教程+面试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

完美解决Linux环境编译ffmpeg库

 

三、安装三方库

安装一些最常见的第三方库,默认均以源码方式安装。安装库所需的命令如下

NASM
部分库使用到汇编程序。
使用源码进行安装

cd ~/ffmpeg_sources && 
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2 && 
tar xjvf nasm-2.14.02.tar.bz2 && 
cd nasm-2.14.02 && 
./autogen.sh && 
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && 
make && 
make install

Yasm
部分库使用到该汇编库
使用源码进行安装:

cd ~/ffmpeg_sources && 
wget -O yasm-1.3.0.tar.gz https://www.tortall.NET/projects/yasm/releases/yasm-1.3.0.tar.gz && 
tar xzvf yasm-1.3.0.tar.gz && 
cd yasm-1.3.0 && 
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && 
make && 
make install

libx264

H.264视频编码器。更多信息和使用范例参考H.264 Encoding Guide

要求编译ffmpeg时配置:–enable-gpl --enable-libx264.

使用源码进行编译:

cd ~/ffmpeg_sources && 
git -C x264 pull 2> /dev/null || git clone --depth 1 https://gitee.com/mirrors_addons/x264.git && 
cd x264 && 
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-pic && 
PATH="$HOME/bin:$PATH" make && 
make install

libx265
H.265/HEVC 视频编码器, 更多信息和使用范例参考H.265 Encoding Guide。
要求编译ffmpeg时配置:–enable-gpl --enable-libx265.
使用源码进行编译:

sudo apt-get install mercurial libnuma-dev && 
cd ~/ffmpeg_sources && 
if cd x265 2> /dev/null; then git pull && cd ..; else git clone https://gitee.com/mirrors_videolan/x265.git; fi && 
cd x265/build/linux && 
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source && 
PATH="$HOME/bin:$PATH" make && 
make install

libvpx

VP8/VP9视频编解码器。 更多信息和使用范例参考VP9 Video Encoding Guide 。

要求编译ffmpeg时配置: --enable-libvpx.

使用源码进行编译:

cd ~/ffmpeg_sources && 
git -C libvpx pull 2> /dev/null || git clone --depth 1 https://github.com/webmproject/libvpx.git && 
cd libvpx && 
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm --enable-pic && 
PATH="$HOME/bin:$PATH" make && 
make install

libfdk-aac

AAC音频编码器. 更多信息和使用范例参考AAC Audio Encoding Guide。

要求编译ffmpeg时配置:–enable-libfdk-aac ( 如果你已经配置了 --enable-gpl则需要加上–enable-nonfree).

使用源码进行编译:

cd ~/ffmpeg_sources && 
git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac && 
cd fdk-aac && 
autoreconf -fiv && 
./configure CFLAGS=-fPIC --prefix="$HOME/ffmpeg_build"   && 
make && 
make install

libmp3lame
MP3音频编码器.
要求编译ffmpeg时配置:–enable-libmp3lame.
使用源码进行编译:

cd ~/ffmpeg_sources && 
git clone  --depth 1 https://gitee.com/hqiu/lame.git && 
cd lame && 
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"  --enable-nasm --with-pic && 
PATH="$HOME/bin:$PATH" make && 
make install

libopus
Opus音频编解码器.
要求编译ffmpeg时配置:–enable-libopus.
使用源码进行编译:

cd ~/ffmpeg_sources && 
git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git && 
cd opus && 
./autogen.sh && 
./configure --prefix="$HOME/ffmpeg_build"  -with-pic&& 
make && 
make install

四、安装FFmpeg

到这里常见的三方库默认已经都装好了,唠叨下,上面的库可以不全安装,但是为了库的功能全面性,还是别偷懒,毕竟编译好,可以一直用。下面下载FFmpeg源码和上面的库联合编译,此过程相对用时久一些,耐心等待

cd ~/ffmpeg_sources && 
wget -O ffmpeg-4.2.1.tar.bz2 https://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2 && 
tar xjvf ffmpeg-4.2.1.tar.bz2 && 
cd ffmpeg-4.2.1 && 
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" CFLAGS="-O3 -fPIC" ./configure 
  --prefix="$HOME/ffmpeg_build" 
  --pkg-config-flags="--static" 
  --extra-cflags="-I$HOME/ffmpeg_build/include" 
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" 
  --extra-libs="-lpthread -lm" 
  --bindir="$HOME/bin" 
  --enable-gpl 
  --enable-libass 
  --enable-libfdk-aac 
  --enable-libfreetype 
  --enable-libmp3lame 
  --enable-libopus 
  --enable-libvorbis 
  --enable-libvpx 
  --enable-libx264 
  --enable-libx265 
  --enable-pic 
  --enable-shared   
  --enable-nonfree && 
PATH="$HOME/bin:$PATH" make && 
make install && 
hash -r

五、安装完成

到此,整个编译就完成了。可以去看下最初创建的那三个文件夹,我们最感兴趣的是ffmpeg_build,如下图。
include: 里面是各种头文件,用来加入到业务项目中引用
lib: 便是心心念的库,里面有静态的还有动态的,按自己需求使用

完美解决Linux环境编译ffmpeg库

 

还有像ffmpeg ffplay ffprobe等可执行程序,在以上三个文件夹内可以找到,具体位置不在说明。要说明一点是,这里只是编译出来纯粹的库文件,可以保证库的质量,但具体的使用需自行配置。



Tags:ffmpeg   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
iOS使用FFmpeg命令行
官方文档 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。 FFmpeg的代码是包括两部分...【详细内容】
2023-03-23  Search: ffmpeg  点击:(226)  评论:(0)  加入收藏
Android中使用ffmpeg编码进行rtmp推流
要理解RTMP推流,我们就要知道详细原理。本文将详细的来给大家介绍RTMP推流原理以及如何推送到服务器,首先我们了解一下推流的全过程: 我们将会分为几个小节来展开:一. 本文用到...【详细内容】
2022-09-27  Search: ffmpeg  点击:(525)  评论:(0)  加入收藏
FFmpeg命令帮你实现音视频编辑
FFmpeg是一个非常著名的多媒体框架开源项目,它可用于编码,解码,转码,音视频复用,音视频解复用,播放等重要功能。FFmpeg作为一个多媒体框架被各大音视频播放器软件使用于支持广泛的...【详细内容】
2022-08-29  Search: ffmpeg  点击:(542)  评论:(0)  加入收藏
linux系统中Nginx+FFmPeg+vlc实现网页视频播放配置过程
linux系统中Nginx+FFmPeg实现网页监控视频播放配置过程1.安装好的nginx上添加模块nginx-http-fiv-module-master此模块是rtmp模块的升级版,有它所有的功能,因此安装它(1)从Git...【详细内容】
2022-07-24  Search: ffmpeg  点击:(354)  评论:(0)  加入收藏
简单的视频推流测试(ffmpeg+nginx)
这两天需要做一个视频推流测试,在网上找了一圈资料,使用ffmpeg+nginx是比较快捷和通用的方法,于是就开始动手开整!推流测试一 测试环境推流:ubuntu18.04,ffmpeg。服务器+拉流:win7,n...【详细内容】
2022-07-22  Search: ffmpeg  点击:(761)  评论:(0)  加入收藏
完美解决Linux环境编译ffmpeg库
背景说明项目功能实现需要在Linux下编译出可用的FFmpeg库。FFmpeg在编译过程中是需要链接其它三方库的,比如x265 x265等,否则可能会造成功能不全(如程序接口返回找不到H264编码...【详细内容】
2022-07-08  Search: ffmpeg  点击:(650)  评论:(0)  加入收藏
音视频开源基础 - ffmpeg命令
一、ffmpeg、ffplay、ffprobe区别ffmpeg:超快音视频编码器(类似爱剪辑)ffplay:简单媒体播放器ffprobe:简单多媒体流分析器二、帮助文档查看2.1 ffmpeg查看帮助文档基本信息:ffmpeg...【详细内容】
2022-06-22  Search: ffmpeg  点击:(665)  评论:(0)  加入收藏
FFmpeg 视频解码
摘要这篇文章介绍怎么实现视频解码,具体步骤为读取Sample.mkv视频文件,从中提取视频流,然后解码为YUV图像数据,把YUV数据存储为PGM灰度图像,或者存储为YUV420p RAW格式视频。初始...【详细内容】
2022-06-01  Search: ffmpeg  点击:(366)  评论:(0)  加入收藏
使用ffmpeg转换flv视频为MP4格式
网上有很多转换工具软件,如格式工厂、迅捷视频转换器等,但都不是很纯净,很多带有广告。FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用...【详细内容】
2022-05-07  Search: ffmpeg  点击:(511)  评论:(0)  加入收藏
如何用FFMpeg生成视频
前言FFMpeg读做“FF Mpeg”,“FF”指的是“Fast Forward”,而“Mpeg”指的是Moving Picture Experts Group(动态图像专家组)。根据官方介绍,FFMpeg是一个完整的、跨平台的音频和...【详细内容】
2022-02-11  Search: ffmpeg  点击:(655)  评论:(0)  加入收藏
▌简易百科推荐
如何在Windows 10中查看电脑的名称?这里提供详细步骤
你想在有多台计算机组成的网络上查找你的计算机吗?一种方法是找到你的电脑名称,然后在网络上匹配该名称。下面是如何在Windows 10中使用图形和命令行方法查看你的计算机名称。...【详细内容】
2024-04-10  驾驭信息纵横科技    Tags:Windows 10   点击:(6)  评论:(0)  加入收藏
移动版 Outlook 解锁新技能,可验证登录 OneDrive 等微软服务
IT之家 4 月 9 日消息,微软公司近日发布新闻稿,宣布用户可以使用 Outlook 手机应用,轻松登录 Teams、OneDrive、Microsoft 365 以及 Windows 等微软账号服务。移动端 Outlook...【详细内容】
2024-04-09    IT之家  Tags:Outlook   点击:(7)  评论:(0)  加入收藏
Win10/Win11和 macOS用户反馈:谷歌云服务“捆绑”系统 DNS 设置
IT之家 4 月 6 日消息,谷歌公司承认旗下的 Google One 订阅服务中存在问题,在 Windows 10、Windows 11 以及 macOS 系统上会更改系统 DNS 设置,变更为 8.8.8.8 地址。Google On...【详细内容】
2024-04-08    IT之家  Tags:Win10   点击:(11)  评论:(0)  加入收藏
电脑卡顿怎么重装系统,快看这篇
电脑卡顿时,重装系统确实是一种可能的解决方案。以下是重装系统的详细步骤:备份重要数据:首先,你需要将电脑中的重要文件和数据备份到外部存储设备(如U盘、移动硬盘或云存储)中,以...【详细内容】
2024-04-04  科技数码前锋    Tags:重装系统   点击:(5)  评论:(0)  加入收藏
如何检查电脑的最近历史记录?这里提供详细步骤
如果你怀疑有人在使用你的计算机,并且你想查看他们在做什么,下面是如何查看是否有访问内容的痕迹。如何检查我的计算机的最近历史记录要检查计算机的最近历史记录,应该从web浏...【详细内容】
2024-03-30  驾驭信息纵横科技    Tags:历史记录   点击:(6)  评论:(0)  加入收藏
关于Windows中AppData的相关知识,看这篇文章就可以了
如果AppData文件夹占用了你电脑上的太多空间,则需要清理AppData文件夹。下面是一些帮助你在Windows计算机上进行AppData清理的方法。什么是AppData文件夹AppData文件夹是保存...【详细内容】
2024-03-30  驾驭信息纵横科技    Tags:AppData   点击:(10)  评论:(0)  加入收藏
微软 Edge 浏览器将迎来“内存限制器”功能,用户可自主控制 Edge 内存占用
IT之家 3 月 28 日消息,微软即将为其 Edge 浏览器带来一项实用新功能,据悉该公司正在测试一项内置的内存限制器,这项功能可以让用户限制 Edge 所占用的内存,防止浏览器超出内存...【详细内容】
2024-03-29    IT之家  Tags:Edge   点击:(21)  评论:(0)  加入收藏
一寸照片的大小如何压缩?四个实测效果很好的方法
一寸照片作为生活中常见的尺寸之一,常用于各类证件照与证明文件的制作。然而,受限于其较为狭小的尺寸,上传及打印过程中很容易出现尺寸超限的情况。所以,这个时候就需要对其体积...【详细内容】
2024-03-18  宠物小阿涛    Tags:压缩   点击:(20)  评论:(0)  加入收藏
手机投屏到电脑/电视的方法
方法一:Win10自带的投影功能1、将手机和电脑连接同一个无线网络。2、选择【开始】>【设置】>【系统】>【投影到此电脑】3、将默认的始终关闭的选项更改为所有位置都可用。4、...【详细内容】
2024-03-18    老吴讲I  Tags:投屏   点击:(24)  评论:(0)  加入收藏
微软商店怎么卸载应用 一分钟快速看懂!
微软商店怎么卸载应用 一分钟快速看懂!微软公司(Microsoft Corporation)是一家全球领先的科技企业,总部位于美国华盛顿州的雷德蒙德。成立于1975年,由比尔·盖茨和保罗&mid...【详细内容】
2024-02-27  婷婷说体育    Tags:微软商店   点击:(44)  评论:(0)  加入收藏
站内最新
站内热门
站内头条