Ubuntu22.04源码安装ffmpeg

Ubuntu22.04源码安装ffmpeg

1.下载ffmpeg的源码包

wget https://ffmpeg.org/releases/ffmpeg-7.0.1.tar.xz

解压:

tar -xvf ffmpeg-7.0.1.tar.xz

2.安装基本编译构建工具

sudo apt-get install gcc g++ cmake make pkgconf -y

3.编译ffmpeg

进入解压后的ffmpeg源码目录,目录中有一个名为configure的shell脚本,通过该shell脚本可以配置ffmpeg的安装位置以及需要安装的ffmpeg组件,这里选择将ffmpeg安装到~/util/ffmpeg/,使用的命令如下:

mkdir -p ~/util/ffmpeg/lib
./configure --prefix="/home/cat/util/ffmpeg" --enable-gpl --enable-nonfree --enable-ffplay --enable-libfdk-aac --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-filter=delogo --enable-debug --disable-optimizations --enable-libspeex --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --extra-cflags=-I/home/cat/util/ffmpeg/include --extra-ldflags=-L/home/cat/util/ffmpeg/lib

在安装时可能显示缺失某些依赖包:

nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.

解决方案:下载yasm源码并解压,编译yasm源码

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure --prefix=/home/cat/util/ffmpeg/
make -j16
sudo make install
export PATH=$PATH:/home/cat/util/ffmpeg/bin

ERROR: libfdk_aac not found

解决方案:下载fdk_aac源码并编译

wget https://zenlayer.dl.sourceforge.net/project/opencore-amr/fdk-aac/fdk-aac-2.0.3.tar.gz
tar -zxvf fdk-aac-2.0.3.tar.gz
cd fdk-aac-2.0.3/
./configure --prefix=/home/cat/util/ffmpeg/
make -j16
sudo make install
export PKG_CONFIG_PATH=/home/cat/util/ffmpeg/lib/pkgconfig/

某些情况下可能已经编译好了ffmpeg的依赖包,但是编译ffmpeg时依然找不到对应的包,此时可以尝试执行rm -f ffbuild/config.log命令并重新构建ffmpeg

ERROR: libmp3lame >= 3.98.3 not found

解决方案:下载对应的源码包并编译

wget https://zenlayer.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
tar -zxvf lame-3.100.tar.gz
cd lame-3.100/
./configure --enable-shared --prefix=/home/cat/util/ffmpeg/
make -j16
sudo make install

ERROR: speex not found using pkg-config

wget https://ftp.osuosl.org/pub/xiph/releases/speex/speex-1.2.1.tar.gz
tar -zxvf speex-1.2.1.tar.gz
cd speex-1.2.1/
./configure --prefix=/home/cat/util/ffmpeg/
make -j16
sudo make install

ERROR: x264 not found using pkg-config

wget https://code.videolan.org/videolan/x264/-/archive/master/x264-master.tar.bz2
tar -jxvf x264-master.tar.bz2
cd x264-master/
./configure --prefix=/home/cat/util/ffmpeg/ --disable-asm --enable-static --enable-shared
make -j16
sudo make install

ERROR: x265 not found using pkg-config

wget http://ftp.videolan.org/pub/videolan/x265/x265_3.2.tar.gz
tar -zxvf x265_3.2.tar.gz
cd x265_3.2/build/linux
./make-Makefiles.bash
make -j16
sudo make install

4.安装ffmpeg

执行ffmpeg的安装脚本,如果输出如下,表示依赖安装完成,可以编译并安装ffmpeg

install prefix            /home/cat/util/ffmpeg
source path               .
C compiler                gcc
C library                 glibc
ARCH                      x86 (generic)
big-endian                no
runtime cpu detection     yes
standalone assembly       yes
x86 assembler             yasm
MMX enabled               yes
MMXEXT enabled            yes
3DNow! enabled            yes
3DNow! extended enabled   yes
SSE enabled               yes
SSSE3 enabled             yes
......

在编译并安装ffmpeg之前,先下载并编译SDL源码,因为ffplay依赖于SDL

wget https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.30.5.tar.gz
tar -zxvf release-2.30.5.tar.gz
cd SDL-release-2.30.5
./configure --prefix=/home/cat/util/ffmpeg/
make -j16
sudo make install

进入ffmpeg源码目录

make -j16
sudo make install

5.将ffmpeg程序目录添加到PATH

sudo vim /etc/profile,在profile文件末尾添加export PATH="/home/cat/util/ffmpeg/bin/:$PATH",将/home/cat/util/ffmpeg/bin/替换为ffmpeg的安装目录

sudo vim /etc/ld.so.conf,在ld.so.conf文件末尾添加库文件路径/home/cat/util/ffmpeg/lib,执行ldconfig命令

Ubuntu 22.04下,你可以使用以下脚本来编译FFmpeg用于Android API 10: ```bash #!/bin/bash # 设置 Android NDK 路径 export NDK=/path/to/android-ndk # 设置编译工具链和目标架构 export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64 export TARGET_ARCH=arm # 设置 Android API 级别 export API_LEVEL=10 # 设置输出目录 export OUTPUT_DIR=/path/to/output # 添加工具链到环境变量 export PATH=$TOOLCHAIN/bin:$PATH # 设置编译参数 export CC=$TOOLCHAIN/bin/$TARGET_ARCH-linux-android$API_LEVEL-clang export CXX=$TOOLCHAIN/bin/$TARGET_ARCH-linux-android$API_LEVEL-clang++ export AR=$TOOLCHAIN/bin/$TARGET_ARCH-linux-android-ar export LD=$TOOLCHAIN/bin/$TARGET_ARCH-linux-android-ld export AS=$TOOLCHAIN/bin/$TARGET_ARCH-linux-android-as # 设置编译选项 export CFLAGS="-fPIE -fPIC" export LDFLAGS="-pie" # 设置 FFmpeg 配置选项 export CONFIGURE_FLAGS="--target-os=android --arch=$TARGET_ARCH --enable-neon --enable-hwaccel --enable-jni --enable-mediacodec --enable-decoder=h264_mediacodec --enable-decoder=hevc_mediacodec --enable-decoder=mpeg4_mediacodec --enable-decoder=vp8_mediacodec --enable-decoder=vp9_mediacodec --enable-decoder=aac --enable-decoder=mp3 --enable-decoder=opus --enable-static --disable-shared" # 进入 FFmpeg 源码目录 cd /path/to/ffmpeg-source # 清理之前的编译结果 make clean # 执行配置命令 ./configure $CONFIGURE_FLAGS --prefix=$OUTPUT_DIR # 编译 FFmpeg make -j8 # 安装 FFmpeg 到输出目录 make install ``` 在这个脚本中,你需要根据你的环境配置设置以下变量: - `/path/to/android-ndk`:Android NDK 的路径。 - `/path/to/output`:编译输出目录的路径。 - `/path/to/ffmpeg-source`:FFmpeg 源码的路径。 你可以将以上脚本保存到一个文件(比如 build_ffmpeg.sh),然后在终端中运行该脚本。脚本会设置编译参数和环境变量,并执行编译和安装命令,最终将编译结果安装到指定的输出目录中。 请确保在运行脚本之前已经正确安装了所需的依赖项和工具链,并且替换上述脚本中的路径和变量为适合你的环境的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值