Linux离线环境安装ffmpeg

文章目录

  • 一.离线安装nasm
  • [二.离线编译 FFmpeg](#二.离线编译 FFmpeg)
  • [三. 升级GCC](#三. 升级GCC)

一.离线安装nasm

安装汇编编译器:nasm官网

nasm-3.01.tar.gz

bash 复制代码
tar -zxvf nasm-3.01.tar.gz
cd nasm-3.01/
# 编译
./configure --prefix=/usr/local/nasm
make -j$(nproc)
make install
# 加入路径
echo 'export PATH=/usr/local/nasm/bin:$PATH' >> /etc/profile
source /etc/profile
# 验证
nasm -v

二.离线编译 FFmpeg

ffmpeg官网
选择合适系统的 ffmpeg_x.x.x.orig.tar.xz

bash 复制代码
tar -xvf ffmpeg_7.1.1.orig.tar.xz
cd ffmpeg-7.1/

# 要编译内置哪些功能自行查找网络相关配置
# 我仅需要 wav的标准化,统一响度,降噪,16k频率,降噪即可
./configure \
  --prefix=/usr/local/ffmpeg \
  --enable-gpl \
  --enable-version3 \
  --disable-debug \
  --disable-doc \
  --enable-static \
  --disable-ffplay

# 编译&安装
make -j$(nproc)
make install

# 加入PATH
echo 'export PATH=/usr/local/ffmpeg/bin:$PATH' >> /etc/profile
source /etc/profile

# 验证关键功能是否都支持。这是我需要的,自行参考网络
ffmpeg -filters | grep anlm
ffmpeg -filters | grep loudnorm
ffmpeg -encoders | grep pcm_s16le

三. 升级GCC

在联网linux服务器执行以下脚本

安装编译前置工具
sudo apt-get install build-essential libgmp-dev libmpfr-dev libmpc-dev flex bison texinfo

bash 复制代码
#!/bin/bash
set -e

# 可修改的变量
GCC_VERSION="8.5.0"
PREFIX="/usr/local/gcc-8.5.0"
BUILD_DIR="$HOME/build_gcc8"

mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"

# 安装依赖(Ubuntu/Debian)
sudo apt update
sudo apt install -y build-essential libgmp-dev libmpfr-dev libmpc-dev flex bison wget tar
# 安装依赖 (centos)
#sudo yum groupinstall -y "Development Tools"
#sudo yum install -y wget tar gmp-devel mpfr-devel libmpc-devel flex bison

# 下载 GCC 源码
wget -c https://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.gz
tar -xf gcc-${GCC_VERSION}.tar.gz
cd gcc-${GCC_VERSION}

# 下载 prerequisites
./contrib/download_prerequisites

# 创建构建目录
mkdir -p build && cd build

# 配置
../configure --prefix=${PREFIX} \
             --disable-multilib \
             --enable-languages=c,c++ \
             --with-gmp=../gmp \
             --with-mpfr=../mpfr \
             --with-mpc=../mpc
# 编译
make -j$(nproc)

# 安装到指定目录
make install

# 打包
cd $(dirname ${PREFIX})
tar -czf gcc8-portable.tar.gz $(basename ${PREFIX})

echo "GCC 8 portable 已生成:$(pwd)/gcc8-portable.tar.gz"

若执行./contrib/download_prerequisites太慢.可以使用如下命令

bash 复制代码
# GMP
wget -c https://mirrors.tuna.tsinghua.edu.cn/gnu/gmp/gmp-6.1.0.tar.bz2

# MPFR
wget -c https://mirrors.tuna.tsinghua.edu.cn/gnu/mpfr/mpfr-3.1.4.tar.bz2

# MPC
wget -c https://mirrors.tuna.tsinghua.edu.cn/gnu/mpc/mpc-1.0.3.tar.gz
# isl 很多镜像源没找到,直接使用最后一行指令下载吧
wget -c https://ftpmirror.gnu.org/gnu/isl/isl-0.18.tar.bz2

./contrib/download_prerequisites

在内网服务器使用

bash 复制代码
# 假设你拷贝到 /tmp
sudo tar -xzf /tmp/gcc8-portable.tar.gz -C /

# 设置环境变量
export PATH=/opt/gcc-8/bin:$PATH
export LD_LIBRARY_PATH=/opt/gcc-8/lib64:$LD_LIBRARY_PATH

# 验证
gcc --version
# 输出 8.5.0
相关推荐
chlk1231 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑1 天前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件1 天前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
BingoGo1 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack1 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
深紫色的三北六号2 天前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash2 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI2 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
BingoGo2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端