当前位置: 首页 > article >正文

ubuntu编译ffmpeg

配置

运行环境:vmware ubuntu 20.04

时间:2024年10月24日

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

环境配置更新

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

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

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

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

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

sudo apt-get install openssl  libssl-dev     

FFmpeg正式编译

先执行:
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 
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
source ~/.profile
ffmpeg -version

debug版本

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

问题解决

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

 

学习资料分享

0voice · GitHub


http://www.kler.cn/a/371864.html

相关文章:

  • 滚柱导轨出现异常损坏的原因
  • CSP/信奥赛C++刷题训练:经典前缀和例题(4):洛谷P3662:Why Did the Cow Cross the Road II S
  • 基于springboot的在线投票系统,比赛实时投票平台的实现
  • MacOS/Macbook用户自定义字体安装教程
  • 13.音乐管理系统(基于SpringBoot + Vue)
  • fpga系列 HDL: 竞争和冒险 02
  • 【mysql】导出导入mysql表结构或者数据
  • GPT避坑指南:如何辨别逆向、AZ、OpenAI官转
  • 使用阿里云 MQTT 服务进行消息传输的基本实践
  • 基于QT用工厂模式实现串口通信与网络通信激光器的控制
  • miRNA分析流程学习(四)/miRNA芯片数据差异分析再学习以及异常火山图可能原因解释
  • 【TEST】负载/性能测试工具 Grafana K6 (Docker 版)
  • 【系统架构设计师】案例分析预测试卷一(3道材料题)
  • 小满OKKICRM与钉钉数据集成方案解析
  • 扶贫工作数字化:SpringBoot精准扶贫系统
  • Python实现的简单时钟
  • 探索自动化数据清洗技术的前沿趋势
  • java项目使用HttpServletRequest request接参,怎么获取参数的值,怎么获取form值,怎么获取body值
  • HTML入门教程17:HTML块
  • 深度|谁在为OpenAI和Anthropic的AI编程竞赛提供“军火”?已赚得盆满钵满
  • Javaweb 实验6 JSP内置对象
  • 文心一言 VS 讯飞星火 VS chatgpt (380)-- 算法导论24.4 12题
  • Oracle 19c OCM技术培训课程深度解析
  • 刷代随有感(134):单调栈——下一个更大元素I(难点涉及哈希表与单调栈的结合)
  • jenkins搭建及流水线配置
  • 求助帖:ubuntu22.10 auto install user-data配置了为何还需要选择语言键盘(如何全自动)