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

相关推荐
hero_th11 分钟前
[Ubuntu] 文件/目录权限更改
linux·ubuntu
wclass-zhengge12 分钟前
SpringBoot篇(运维实用篇 - 临时属性)
运维·spring boot·后端
速盾cdn14 分钟前
速盾:什么是高防CDN?高防CDN的用处有哪些?
运维·服务器·网络·web安全
花花少年20 分钟前
pip在ubuntu下换源
linux·ubuntu·pip
y0ungsheep39 分钟前
[GXYCTF 2019]Ping Ping Ping 题解(多种解题方式)
linux·web安全·网络安全·php
海绵波波10743 分钟前
Webserver(1.6)Linux系统IO函数
linux·运维·服务器
江水三千里1 小时前
NFS服务器
运维·服务器
Bold!1 小时前
Ubuntu20.04安装VM tools并实现主机和虚拟机之间文件夹共享
ubuntu·虚拟机
forestqq1 小时前
构建后端为etcd的CoreDNS的容器集群(七)、编写适合阅读的域名管理脚本
运维·数据库·etcd
czme1 小时前
线程和进程
linux·数据结构·计算机网络