Ubuntu20.04 编译安装FFmpeg,出错分析以及解决方案

最近工程上需要对FFmpeg底层源码进行修改,需要重新编译,遇见不少坑,出篇教程记录一下。

文章目录

1.FFmpeg源码下载地址

官方下载地址:Index of /releases (ffmpeg.org)

笔者这里下载的是4.4.4版本,可以根据自己的需求下载不同的版本

注:有些版本可能需要SDL2 支持,FFMpeg4.4.4并没有依赖这个库

SDL 下载地址:http://www.libsdl.org/download-2.0.php
下载后,同样解压,然后进入加压目录
S1执行命令:./configure --prefix=/usr/local
S2执行命令:sudo make
S3执行命令:sudo make install

2.编译环境配置

需要的编译工具如下:

sudo apt install aptitude
sudo aptitude install build-essential
sudo aptitude install yasm nasm

需要的依赖库如下:

sudo apt-get install libgmp3-dev
sudo apt install pkg-config
sudo apt install gnutls-bin
sudo aptitude install libaom-dev
sudo aptitude install libass-dev
sudo aptitude install libbluray-dev
sudo aptitude install libfdk-aac-dev
sudo aptitude install libmp3lame-dev
sudo aptitude install libopencore-amrnb-dev
sudo aptitude install libopencore-amrwb-dev
sudo aptitude install libopenmpt-dev
sudo aptitude install libopus-dev
sudo aptitude install libshine-dev
sudo aptitude install libsnappy-dev
sudo aptitude install libsoxr-dev
sudo aptitude install libspeex-dev
sudo aptitude install libtheora-dev
sudo aptitude install libtwolame-dev
sudo aptitude install libvo-amrwbenc-dev
sudo aptitude install llibvpx-dev
sudo aptitude install libwavpack-dev
sudo aptitude install libwebp-dev
sudo aptitude install libx264-dev
sudo aptitude install libx265-dev
sudo aptitude install libxvidcore-dev
sudo aptitude install liblzma-dev

注:不同的版本,所依赖的库可能略微有些差别,如果说编译的时候缺少xxx,根据提示安装相应的依赖库即可

3.编译FFmpeg

第一步:调用configure脚本,在源码根目录中,输入以下命令

./configure --prefix=/home/marxist/FFmpeg4 --enable-shared --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx  --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-lzma --enable-zlib --enable-gmp --enable-libvorbis --enable-libvo-amrwbenc --enable-libspeex --enable-libxvid --enable-libaom  --enable-libopenmpt --enable-libfdk-aac --enable-nonfree

注:prefix 后面是笔者的安装目录,请根据自己的需求自行修改,后面的参数是需要启用的库,不同版本的库略有些差异,

  • 如果提示xxx.h没有找到

说明该源码中可能没有包含相对应的库,删除报错相关的库即可

  • 如果遇到ERROR: gnutls not found using pkg-config

网上有两种解决方案:

1、sudo apt-get install libunistring-dev -y

笔者Ubuntu版本为20.04 ,试了并没有用

2、sudo apt install libgnutls28-dev

亲测可以使用,请读者根据两种解决方案,自行尝试

第二步:编译安装

上述configure没有出错的话,就可以进行最终编译了,install的位置由上述的prefix指定,这里笔者是安装到了主目录中了

sudo make
sudo make install

4.配置FFmpeg运行环境

install完成之后,系统环境变量中还是没有FFmpeg这个命令的,需要添加到环境变量中:

将 FFmpeg 添加至环境变量:
sudo vim ~/.bashrc
将光标调至文件末尾(快捷方式:shfit + g)
添加如下内容:export PATH=$PATH:FFmpeg安装路径/bin
保存文件(快捷键)::wq

运行命令提示:

ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory

说明没有找到相关的动态库

将FFmpeg的动态链接库添加到系统库中即可

注:临时测试的时候,只需要在当前终端输入:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:FFmpeg 安装路径/lib

如果是要长期使用,建议修改系统配置文件

sudo vim /etc/profile
光标移动至文件末尾
添加如下内容:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:FFmpeg 安装路径/lib

做完上述两步之后,输入FFmpeg 验证是否成功,成功截图如下:

参考文章:
Ubuntu20.04 编译安装 FFmpeg 详细教程

相关推荐
dvlinker1 小时前
C++开源项目 VLC 源代码的交叉编译以及库的裁剪方法详解
ffmpeg·mingw-w64·msys2·cygwin·开源vlc·vlc编译·vlc裁剪
因我你好久不见15 小时前
springboot java ffmpeg 视频压缩、提取视频帧图片、获取视频分辨率
java·spring boot·ffmpeg
cuijiecheng20181 天前
音视频入门基础:MPEG2-TS专题(21)——FFmpeg源码中,获取TS流的视频信息的实现
ffmpeg·音视频
cuijiecheng20181 天前
音视频入门基础:AAC专题(13)——FFmpeg源码中,获取ADTS格式的AAC裸流音频信息的实现
ffmpeg·音视频·aac
流氓也是种气质 _Cookie1 天前
uniapp blob格式转换为video .mp4文件使用ffmpeg工具
ffmpeg·uni-app
网络安全queen2 天前
网络安全-企业环境渗透2-wordpress任意文件读&&FFmpeg任意文件读
安全·web安全·ffmpeg
yerennuo2 天前
FFmpeg库之ffmpeg
qt·ffmpeg
韩曙亮2 天前
【FFmpeg】解封装 ① ( 封装与解封装流程 | 解封装函数简介 | 查找码流标号和码流参数信息 | 使用 MediaInfo 分析视频文件 )
ffmpeg·音视频·视频流·mediainfo·解封装·码流
yerennuo2 天前
FFmpeg 框架简介和文件解复用
ffmpeg
悠着,大嘟嘟2 天前
FFmpeg 视频解码详解
ffmpeg·音视频