ffmpeg源码编译及排错

编译ffmpeg

如果已经编译过成功一次,那这都不是很难,否则,你可能会猜各种坑,尽管网上说这个很简单很简单很简单… 请按照步骤一步步来,不要想一口吃掉一个胖子,你完成这几步骤之后你将会收获很多。

前言

博主这里建议您安装docker,之前用mac玩,平白把mac肚子搞大了,还不知道哪些能删哪些不能,用docker的话,类似起一个虚拟机的效果,环境坏了不想要了就删掉再来。

  • docker安装请参考 docker菜鸟教程
  • 装好之后看一下怎么安装ubuntu镜像 ubuntu镜像拉取
  • 然后docker run -i -t ubuntu:latest /bin/bash进入你的ubuntu系统
  • 你可能遇到一些小坑,请参考这里 镜像之坑
  • 最后,建议将这个ubuntu镜像当一个服务器用,git、apt-get、sudo、wget等等这些命令都装一下

下载ffmpeg源码

我不管你通过什么方式,首先你要下载源码。
博主提供几种方式
1,git下载 git clone https://git.ffmpeg.org/ffmpeg.git
2,这里找到合适的版本直接下载然后解压,ubuntu可以安装wget,不建议用最新的 https://www.ffmpeg.org/download.html#releases

准备工作

  • 下载/解压之后直接进入目录
  • mkdir bin创建待会要生成的ffmpeg路径

环境初步安装

前面如果安装过wget,或者更新过apt-get,可以忽略这里某些命令,或者直接copy运行也是可以的

sudo apt-get update -qq && sudo apt-get -y install \  
  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

安装libx264

H.264 video encoder
启用需要 configured 配置 --enable-gpl --enable-libx264

sudo apt-get install libx264-dev -y

安装libx265

H.265/HEVC video encoder.

sudo apt-get install libx265-dev libnuma-dev -y

安装libvpx

VP8/VP9 video encoder/decoder
启用需要 configured 配置 --enable-libvpx

sudo apt-get install libvpx-dev -y

libfdk-aac

AAC audio encoder.

sudo apt-get install libfdk-aac-dev -y

libmp3lame

MP3 audio encoder.
Requires ffmpeg to be configured with --enable-libmp3lame.

sudo apt-get install libmp3lame-dev -y

libopus

Opus audio decoder and encoder.
Requires ffmpeg to be configured with --enable-libopus.

sudo apt-get install libopus-dev -y

libaom

AV1 video encoder/decoder:
手动安装在ffmpeg_build文件夹下,也可以收到下载release版本编译安装.
此操作可能并不一定能成功,这个域名翻墙也不成功aomedia.googlesource.com

git -C aom pull 2> /dev/null || git clone --depth 1 https://aomedia.googlesource.com/aom && \
mkdir aom_build && \
cd aom_build && \
PATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED=off -DENABLE_NASM=on ../aom && \
PATH="$HOME/bin:$PATH" make && \
make install

配置configure

./configure --prefix=./bin--enable-static --enable-shared
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  --prefix="$HOME/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --extra-libs="-lpthread -lm" \
  --bindir="$HOME/bin" \
  --enable-gpl \
  --disable-libaom \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-libx264 \
  --enable-libx265 \
   --enable-shared \
  --enable-nonfree && \
PATH="$HOME/bin:$PATH" make -j 8 && \
make install && \
hash -r

编译并安装

#-j 8 多个编译一起执行,加快变异速度。多线程?多核处理?
make -j 8
#安装
make install

安装结果

可以执行./ffmpeg -version 验证,看到这个就正常了

 ./ffmpeg -version
ffmpeg version 3.2.15 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
configuration: --prefix=./bin--enable-static --enable-shared
libavutil      55. 34.101 / 55. 34.101
libavcodec     57. 64.101 / 57. 64.101
libavformat    57. 56.101 / 57. 56.101
libavdevice    57.  1.100 / 57.  1.100
libavfilter     6. 65.100 /  6. 65.100
libswscale      4.  2.100 /  4.  2.100
libswresample   2.  3.100 /  2.  3.100

注意
可能报这个错

 sudo ./ffmpeg -version
./ffmpeg: error while loading shared libraries: libavdevice.so.57: cannot open shared object file: No such file or directory

解决办法

vim /etc/ld.so.conf

编辑文件,输入一下内容

include /etc/ld.so.conf.d/*.conf  

\# 我ffmpeg安装依赖库的目录,可以看上面安装结果截图  
/home/project/ffmpeg-3.2.15/bin--enable-static/lib  

最后执行 sudo ldconfig ,然后在运行./ffmpeg -version看看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值