ubuntu编译ffmpeg

配置

运行环境:vmware ubuntu 20.04

时间:2024年10月24日

权限问题:由于ubuntu权限问题 建议使用root权限编译,且~是根据用户组来进行定位的。

环境配置更新

cpp 复制代码
cd ~ && \
mkdir ffmpeg_sources  ffmpeg_build bin && \
sudo apt-get update && sudo apt-get install -y \
  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 \
  zlib1g-dev

编译与安装

本指南假定您要安装一些最常见的第三方库。每个小节为您提供安装该库所需的命令。 如果不需要某些功能,则可以跳过相关小节(如果不需要),然后在FFmpeg中删除相应的./configure 选项。以下命令直接复制一条龙

NASM

复制代码
cd ~/ffmpeg_sources && \ 
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/nasm-2.14.02.tar.bz2 && \ 
tar xjvf nasm-2.14.02.tar.bz2 && \ 
cd nasm-2.14.02 && \ 
./autogen.sh && \ 
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \ 
make -j 8 && \ 
make install

Yasm

复制代码
cd ~/ffmpeg_sources && \ 
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 --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" && \ 
make -j 8 && \ 
make install

libx264

复制代码
cd ~/ffmpeg_sources && \ 
git -C x264 pull 2> /dev/null || git clone --depth 1 https://github.com/mirror/x264.git && \ 
cd x264 && \ 
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --enable-pic && \ 
PATH="$HOME/bin:$PATH" make -j 8 && \ 
make install

libx265

复制代码
sudo apt-get install mercurial libnuma-dev && \ 
cd ~/ffmpeg_sources && \
if cd x265 2> /dev/null; then git pull && cd ..; else git clone https://gitee.com/mirrors_videolan/x265.git; fi && \
cd x265/build/linux && \
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off ../../source && \
PATH="$HOME/bin:$PATH" make && \
make install

libvpx

cpp 复制代码
cd ~/ffmpeg_sources && \
git -C libvpx pull 2> /dev/null || git clone --depth 1 https://github.com/webmproject/libvpx.git && \
cd libvpx && \
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm --enable-pic && \
PATH="$HOME/bin:$PATH" make -j 8 && \
make install

libfdk-aac

cpp 复制代码
cd ~/ffmpeg_sources && \ 
git -C fdk-aac pull 2> /dev/null || git clone --depth 1 https://github.com/mstorsjo/fdk-aac && \ 
cd fdk-aac && \ 
autoreconf -fiv && \ 
./configure CFLAGS=-fPIC --prefix="$HOME/ffmpeg_build"   && \ 
make -j 8 && \ 
make install

libmp3lame

cpp 复制代码
cd ~/ffmpeg_sources && \ 
git clone  --depth 1 https://gitee.com/hqiu/lame.git  && \ 
cd lame && \ 
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"  -enable-nasm --with-pic && \ 
PATH="$HOME/bin:$PATH" make -j 8 && \ 
make install

libopus

cpp 复制代码
cd ~/ffmpeg_sources && \
git -C opus pull 2> /dev/null || git clone --depth 1 https://github.com/xiph/opus.git && \
cd opus && \
./autogen.sh && \
./configure --prefix="$HOME/ffmpeg_build"  -with-pic&& \
make && \
make install

opensll

cpp 复制代码
sudo apt-get install openssl  libssl-dev     

FFmpeg正式编译

cpp 复制代码
先执行:
cd ~/ffmpeg_sources && \
wget -O ffmpeg-4.2.1.tar.bz2 https://ffmpeg.org/releases/ffmpeg-4.2.1.tar.bz2 

然后执行:
tar xjvf ffmpeg-4.2.1.tar.bz2 && \
cd ffmpeg-4.2.1 
cpp 复制代码
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" CFLAGS="-O3 -fPIC" \
./configure --prefix="$HOME/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I$HOME/ffmpeg_build/include -I/usr/include/openssl" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib -L/usr/lib/openssl -L/lib/x86_64-linux-gnu/" \
  --extra-libs="-lpthread -lm -lssl -lcrypto" \
  --bindir="$HOME/bin" \
  --enable-gpl \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-libx264 \
  --enable-libx265 \
  --enable-pic \
  --enable-shared \
  --enable-openssl \
  --enable-nonfree && \
PATH="$HOME/bin:$PATH" make -j 8 && \
make install && \
hash -r
cpp 复制代码
source ~/.profile
ffmpeg -version

debug版本

cpp 复制代码
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" CFLAGS="-O3 -fPIC" \
./configure --prefix="$HOME/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I$HOME/ffmpeg_build/include -I/usr/include/openssl" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib -L/usr/lib/openssl -L/lib/x86_64-linux-gnu/" \
  --extra-libs="-lpthread -lm -lssl -lcrypto" \
  --bindir="$HOME/bin" \
  --enable-gpl \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-libx264 \
  --enable-libx265 \
  --enable-pic \
  --enable-shared \
  --enable-openssl \
  --enable-nonfree \
  --enable-debug=3 \
  --disable-optimizations \
  --disable-asm \
  --disable-stripping && \
PATH="$HOME/bin:$PATH" make -j 8 && \
make install && \
hash -r

最终三个文件夹把ffplay_g版本移到bin下即可使用。

~/ffmpeg_sources

~/ffmpeg_build

~/bin

问题解决

cpp 复制代码
找不到对应的ssl库文件
ldconfig -p | grep libssl 
 拿到ssl路径 加入进来

学习资料分享

0voice · GitHub

相关推荐
oMcLin18 分钟前
Linux服务器出现“Out of Memory”错误,如何通过调整swap、hugepages等配置来缓解内存压力
linux·服务器·jenkins
Jet_581 小时前
Linux 下安装与运行 checkra1n 全流程指南(含依赖修复与系统检测)
linux·ubuntu·ios逆向·checkra1n·ios越狱·libncurses5·系统依赖修复
liulilittle2 小时前
CLANG 交叉编译
linux·服务器·开发语言·前端·c++
Chlittle_rabbit2 小时前
50系显卡在Ubuntu22.04环境下安装nvidia驱动+CUDA+cuDNN,anaconda下配置pytorch环境一站式解决方案(2025年7月版本)已完结!!!
linux·人工智能·pytorch·深度学习·ubuntu
ZKNOW甄知科技3 小时前
2025 甄知科技年度报告
运维·人工智能·低代码·ci/cd·自动化·数据库架构·敏捷流程
月上柳青3 小时前
dsoftbus-软总线中多层网络的通信栈
linux
sy134108191954 小时前
AI服务器设备中ISO系列信号隔离器应用场景
运维·服务器·人工智能
L1624764 小时前
linux环境安装MySQL的详细步骤(二进制包形式)
linux·运维·mysql
阿巴~阿巴~4 小时前
TCP可靠传输的底层密码:序号、窗口与六大标志位全解析
运维·服务器·网络·tcp·序列号·六大标志位·确认序号
默默在路上4 小时前
CentOS Stream 9 安装mysql8.0
linux·mysql·centos