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

相关推荐
---学无止境---2 分钟前
Linux中基数树批量查询数据项相关函数的实现
linux
我也想失去烦恼1 小时前
Linux系统/etc/hosts文件中配置了主机解析,但还是无法解析ip
linux·运维·服务器
deng-c-f3 小时前
Linux C/C++ 学习日记(29):IO密集型与CPU密集型、CPU的调度与线程切换
linux·学习·线程·cpu·io密集·cpu密集
ximy13354 小时前
AI服务器工作之整机部件(CPU+内存)
运维·服务器
weixin_421133414 小时前
bisheng 的 MCP服务器添加 或 系统集成
运维·服务器
AKAMAI5 小时前
安全风暴的绝地反击 :从告警地狱到智能防护
运维·人工智能·云计算
报错小能手6 小时前
linux学习笔记(43)网络编程——HTTPS (补充)
linux·网络·学习
报错小能手6 小时前
linux学习笔记(45)git详解
linux·笔记·学习
hkNaruto6 小时前
【DevOps】基于Nexus部署内网pypi代理镜像仓库操作手册
运维·devops
ximy13356 小时前
AI服务器工作之线材的接口介绍
运维·服务器