ubuntu arm64 安装ffmpeg6.0全过程(实测)

有人说不是有apt -y install ffmpeg这个命令么,干嘛还搞那么复杂?实际情况是通过命令直接安装得是3.0的版本,而不是目前最新的6.0的版本。装这个的时候也遇到了很多的问题,踩了不少坑,所以才感觉必须得记录一下。废话不多说,直接开干。

开干前,首先切换为root登录,sudo -s,然后输入当前用户的密码;

1、安装相关基础依赖

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 curl git zlib1g-dev

2、继续安装一些库

apt-get -y install libasound2-dev
apt-get -y install libgl1-mesa-dev
apt-get -y install libglew-dev
apt-get -y install libglm-dev
apt-get -y install mercurial libnuma-dev

3、编译安装相关第三方库

首先需要切换到home的用户名目录下,比如

cd /home/ubuntu

然后创建三个文件夹和一个子文件

mkdir ffmpeg6.0_bin
mkdir ffmpeg6.0_build
mkdir ffmpeg6.0_sources

# 这个后面会用上,还是先创建了,避免一些未知的错误

mkdir -p /home/ubuntu/ffmpeg6.0_build/lib/pkgconfig
#用到汇编相关的程序 nasm (目前最新版本是2.16.02rc1)

wget https://www.nasm.us/pub/nasm/releasebuilds/2.16.02rc1/nasm-2.16.02rc1.tar.bz2
tar jxvf nasm-2.16.02rc1.tar.bz2
cd nasm-2.16.02rc1
./autogen.sh
./configure --prefix="$HOME/ffmpeg6.0_build" --bindir="$HOME/ffmpeg6.0_bin"
make -j4
make install

ln -s $HOME/ffmpeg6.0_bin/nasm /usr/bin/nasm

#同样汇编库  Yasm (目前的最新版本是1.3.0)

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 CFLAGS="-fPIC" CPPFLAGS="-fPIC" --prefix="$HOME/ffmpeg6.0_build" --bindir="$HOME/ffmpeg6.0_bin"
make && make install

ln -s $HOME/ffmpeg6.0_bin/yasm /usr/bin/yasm 

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

cd ~/ffmpeg6.0_sources
git clone --depth 1 https://github.com/mirror/x264.git
cd x264
PKG_CONFIG_PATH="$HOME/ffmpeg6.0_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg6.0_build" --bindir="$HOME/ffmpeg6.0_bin" --enable-static --enable-shared --enable-pic
make
make install

# libx265 要求编译ffmpeg时配置:--enable-gpl --enable-libx265

cd ~/ffmpeg6.0_sources
git clone https://gitee.com/mirrors_videolan/x265.git
cd x265/build/linux
cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg6.0_build" -D ENABLE_SHARED=on -DENABLE_PIC=on -DBIN_INSTALL_DIR="$HOME/ffmpeg6.0_bin" ../../source
make && make install

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

cd ~/ffmpeg6.0_sources
git clone --depth 1 https://github.com/webmproject/libvpx.git
cd libvpx
./configure --prefix="$HOME/ffmpeg6.0_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm --enable-pic --enable-shared
make && make install

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

cd ~/ffmpeg6.0_sources
git clone --depth 1 https://github.com/mstorsjo/fdk-aac.git
cd fdk-aac
autoreconf -fiv
./configure CFLAGS="-fPIC" CPPFLAGS="-fPIC" --prefix="$HOME/ffmpeg6.0_build" --bindir="$HOME/ffmpeg6.0_bin" 
make && make install

# libmp3lame   MP3⾳频编码器.   要求编译ffmpeg时配置:--enable-libmp3lame.

cd ~/ffmpeg6.0_sources
git clone --depth 1 https://gitee.com/hqiu/lame.git
cd lame
./configure --prefix="$HOME/ffmpeg6.0_build" --bindir="$HOME/ffmpeg6.0_bin" --enable-nasm --with-pic
make && make install

# libopus  Opus⾳频编解码器.     要求编译ffmpeg时配置:--enable-libopus

cd ~/ffmpeg6.0_sources
git clone --depth 1 https://github.com/xiph/opus.git
cd opus
./autogen.sh
./configure --prefix="$HOME/ffmpeg6.0_build" -with-pic
make && make install

ln -s $HOME/ffmpeg6.0_bin/lame /usr/bin/lame 

# ffmpeg6.0的安装

cd ~/ffmpeg6.0_sources

# 直接下载最新的稳定版本6.0

wget -c https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n6.0.tar.gz

# 解压

tar zxvf n6.0.tar.gz

# 改名

mv FFmpeg-n6.0 FFmpeg

# 切换到FFmpeg文件夹
 
cd FFmpeg

PKG_CONFIG_PATH="$HOME/ffmpeg6.0_build/lib/pkgconfig" ./configure  --prefix="$HOME/ffmpeg6.0_build"  --extra-libs="-lpthread -lm"  --bindir="$HOME/ffmpeg6.0_bin"  --pkg-config-flags="--static"  --extra-cflags="-I$HOME/ffmpeg6.0_build/include"  --extra-cflags="-I$HOME/ffmpeg6.0_build/include/fdk-aac"  --extra-ldflags="-L$HOME/ffmpeg6.0_build/lib"  --enable-gpl  --enable-libass  --enable-libfreetype  --enable-libvorbis  --enable-pic  --enable-shared  --enable-static  --enable-nonfree  --enable-libx264  --enable-libx265  --enable-libvpx  --enable-libfdk-aac  --enable-libmp3lame  --enable-libopus --enable-sdl2 --enable-ffplay --disable-optimizations --disable-stripping --enable-debug=3

# 运行完上述的命令后,如果得到如下提示“License: nonfree and unredistributable”,可以直接下一步。

make -j16
make install

# 运行完上述命令后,会在当前文件下(/home/ubuntu/ffmpeg6.0_sources/FFmpeg)和/home/ubuntu/ffmpeg6.0_bin下得到一个ffmpeg的执行文件。

# 直接执行 ./ffmpeg -version,如果得到如下错误:
# libavcodec.so.60: cannot open shared object file: No such file or directory
# 则直接执行如下命令安装修复即可
apt-get remove python-opencv
apt-get install python-opencv

# 编辑和修改/etc/ld.so.conf

nano /etc/ld.so.conf

# 如果提示错误,就安装nano
# apt-get -y install nano
# 增加如下内容(其中"ubuntu"是登录名,可以根据自己实际的修改)

/home/ubuntu/ffmpeg6.0_build/lib

# 使环境变量生效,然后:
ldconfig


# 添加环境变量,⽐如
nano /etc/profile
# 然后加上
export PATH=$PATH:/home/ubuntu/ffmpeg6.0_bin
# 执行如下命令
source /etc/profile

# 当上述的命令执行完毕后就需要创建执行的快捷方式了
ln -s /home/ubuntu/ffmpeg6.0_bin/ffmpeg /usr/bin/ffmpeg

# 如果执行以上命令的同时,提示已经存在/usr/bin/ffmpeg了,那需要先删除再执行一次创建软连接的命令。

rm -f /usr/bin/ffmpeg
ln -s /home/ubuntu/ffmpeg6.0_bin/ffmpeg /usr/bin/ffmpeg

#===================================================================================

# 解决ERROR: libmp3lame >= 3.98.3 not found 问题,在配置后加上“--extra-ldflags=-L$HOME/ffmpeg6.0_build/lib”,具体操作如下:

cd ~/ffmpeg6.0_sources
cd lame
./configure --prefix="$HOME/ffmpeg6.0_build" --bindir="$HOME/ffmpeg6.0_bin" --enable-nasm --with-pic --extra-ldflags=-L$HOME/ffmpeg6.0_build/lib
make && make install

# 当然也可以参考这里的解决办法:
# https://stackoverflow.com/questions/35937403/error-libmp3lame-3-98-3-not-found


最后大公告成,最后看一下ffmpeg的版本号。

ffmpeg -version

如果可以查询出版本号为6.0则安装成功。

ubuntu arm64 安装ffmpeg6.0全过程(实测)_第1张图片

如果是3.0的版本号,那你可能需要重新创建软连接了。

rm -f /usr/bin/ffmpeg
ln -s /home/ubuntu/ffmpeg6.0_bin/ffmpeg /usr/bin/ffmpeg

至此,如果按照上面的步骤安装都可以成功,已实际测试安装过。

你可能感兴趣的:(ubuntu,linux,运维)