Ubuntu20.04安装ffmpeg
1.下载源码包
进入官网 https://ffmpeg.org/download.html 下载
点击Download Source Code下载即可 ,此时得到压缩包ffmpeg-snapshot.tar.bz2
也可以查看当前时间官方最新版本 http://www.ffmpeg.org/releases/ ,通过命令行下载,我自己用命令行下载的时候特别慢。
wget http://www.ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
2.解压
进入到指令目录
cd /usr/local/
在压缩包目录下,执行命令
tar -xvjf ffmpeg-snapshot.tar.bz2
此时当前目录下得到了文件夹 “ffmpeg”
安装依赖库
官方有个指导文档,Ubuntu怎么使用FFmpeg:
https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
安装依赖库,执行命令:
sudo apt-get update && sudo apt-get -y install \
autoconf \
automake \
build-essential \
cmake \
git-core \
libass-dev \
libfreetype6-dev \
libgnutls28-dev \
libmp3lame-dev \
libsdl2-dev \
libtool \
libva-dev \
libvdpau-dev \
libvorbis-dev \
libxcb1-dev \
libxcb-shm0-dev \
libxcb-xfixes0-dev \
meson \
ninja-build \
pkg-config \
texinfo \
wget \
yasm \
zlib1g-dev \
libunistring-dev
3.编译
3.1 安装 yasm
yasm是汇编编译器,ffmpeg为了提高效率使用了汇编指令,如MMX和SSE等。所以系统中未安装yasm时,就会报错误。
apt install yasm pkg-config libopencore-amrnb-dev libopencore-amrwb-dev
3.2 配置
进入文件夹ffmpeg
#进入源码文件夹
cd ffmpeg
#配置项
./configure --enable-libmp3lame --enable-gpl --enable-shared --enable-version3 --enable-nonfree --enable-pthreads --enable-postproc --enable-ffplay --enable-libx264 --enable-libxvid --disable-x86asm
我配置时出错的 libx264 出错。我又安装了 libx264-dev
sh-5.0$ sudo apt-get install libx264-dev
[sudo] lyq 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列【新】软件包将被安装:
libx264-dev
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 89 个软件包未被升级。
需要下载 569 kB 的归档。
解压缩后会消耗 2,764 kB 的额外空间。
获取:1 http://mirrors.ustc.edu.cn/ubuntu focal/universe amd64 libx264-dev amd64 2:0.155.2917+git0a84d98-2 [569 kB]
已下载 569 kB,耗时 0秒 (1,262 kB/s)
正在选中未选择的软件包 libx264-dev:amd64。
(正在读取数据库 ... 系统当前共安装有 359109 个文件和目录。)
准备解压 .../libx264-dev_2%3a0.155.2917+git0a84d98-2_amd64.deb ...
正在解压 libx264-dev:amd64 (2:0.155.2917+git0a84d98-2) ...
正在设置 libx264-dev:amd64 (2:0.155.2917+git0a84d98-2) ...
sh-5.0$ sudo apt-get install ffmpeg
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会同时安装下列软件:
libavdevice58 libavresample4
建议安装:
ffmpeg-doc
下列【新】软件包将被安装:
ffmpeg libavdevice58 libavresample4
升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 89 个软件包未被升级。
需要下载 1,581 kB 的归档。
解压缩后会消耗 2,562 kB 的额外空间。
3.3 编译安装
//时间久 耐心等待
make
make install
安装完成后,就可以看到,在/usr/local/bin中,ffmpeg/ffplay/ffprob已经生成了;
则说明ffmpeg安装成功。
4.添加环境变量
4.1 修改环境变量
将ffmpeg的绝对路径添加到PATH环境变量中,以让系统能找到ffmpeg的安装路径。
vim ~/.bashrc # 打开系统环境变量配置文件
4.2 在文件中添以下内容。
export PATH="/usr/local/bin:${PATH}" # 因为编译后的可执行文件都在/usr/local/bin中
export LD_LIBRARY_PATH="/usr/local/lib:{LD_LIBRARY_PATH}" #共享库路径
4.3 设置生效
source ~/.bashrc
5.验证是否成功
5.1 无法打开共享库文件
使用命令行“ ffmpeg -h” ,检测ffmpeg安装情况时,出现异常。
- 使用的命令:
ffmpeg -h
ffmpeg -version
出现以下报错内容:
error while loading shared libraries: libavdevice.so.59: can not open shared object file or directory
error while loading shared libraries: libpostproc.so.56: cannot open shared object file: No such file or directory
这是由于系统找不到ffmpeg的共享库所致。
很多开源的共享库都会安装到/usr/local/lib目录下,打开这个目录确实找到FFmpeg这些共享库。
- 解决的办法:
在动态库配置文件 /etc/ld.so.conf.d 内所列的目录下创建文件 ffmpeg.conf 文件,
在该文件中写入共享库路径:“/usr/local/lib”
执行 ldconfig 命令
# 编辑文件,添加内容“/usr/local/lib”后保存退出
vim /etc/ld.so.conf.d/ffmpeg.conf
# 查看ffmpeg.conf中的内容
cat /etc/ld.so.conf.d/ffmpeg.conf
# 执行ldconfig命令,使/etc/ld.so.conf.d/目录下新加入的配置信息生效
ldconfig
提示找不到共享库的错误解决方法 :https://blog.csdn.net/my_angle2016/article/details/113524560
5.2 测试是否配置成功
命令行输入“which ffmpeg” 或 “ffmpeg -h”,出现以下内容,说明ffmpeg已经完全安装配置成功。
root@a512-3090:/usr/local# which ffmpeg
/usr/local/bin/ffmpeg
注意
若完成以上配置后,代码里面仍报错,考虑以下解决方式
-
在系统里,指出ffmpeg的绝对安装路径。/usr/local/bin/ffmpeg
-
找到“xxxx.py”所在的位置,打开并编辑该文件,对ffmeg行的内容做修改。
-
将 command = "fmpeg -i %s ,改为有绝对路径的 command = "/usr/local/ffmpeg/bin/ffmpeg
到此我就可以顺利的使用,程序跑起来了。