本教程将向您展示如何在树莓派上编译 FFmpeg 。
FFmpeg 是一个开源项目,由许多库组成。
这些库旨在处理多种多媒体格式,无论是图像,视频还是音频格式。
FFmpeg 的优点之一就是可以在包括树莓派在内的各种设备上进行编译。
使用 FFmpeg ,您将能够编码和解码各种视频和音频编解码器。
设备清单
这是我们建议用于在树莓派上编译 FFmpeg 的本教程的设备的列表。
推荐的
树莓派 1、 2 、 3 或 4
Micro SD 卡
电源
Ethernet Cord 或 * WiFi dongle (Pi 3 和 4 具有内置 WiFi)
可选的
- 树莓派外壳
我们在运行最新版本的 Raspbian Buster 的树莓派 4 上测试了该指南。
如果您使用的是 Raspbian 的较新版本,并且本教程无法正常工作,请在下面留下评论。
安装 FFmpeg 所需的软件包
在这个部分。我们将通过安装编译 FFmpeg 所需的所有库来准备您的树莓派。
1 在开始之前,您应该首先更新软件包列表和已安装的软件包。
要更新所有内容,您需要做的就是运行以下两个命令。
sudo apt update
sudo apt upgrade
2 现在,我们需要安装编译 FFmpeg 及其附加库所需的软件包。
由于数量很多,安装过程可能需要一些时间才能完成。
运行以下命令以将所有必需的软件包安装到树莓派。
sudo apt -y install autoconf automake构建必需的 cmake doxygen git graphviz imagemagick libasound2-dev libass-dev libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libfreetype6-dev libgmp-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libopus-dev librtmp-dev libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev libsnappy-dev libsoxr-dev libssh-dev libssl-dev libtool libv4l-dev libva-dev libvdpau-dev libvo-amrwbenc-dev libvorbis-dev libwebp-dev libx264-dev libx265-dev libxcb-shape0-dev libxcb-shm0-dev libxcb-xfixes0-dev libxcb1-dev libxml2-dev lzma-dev介子 nasm pkg -config python3-dev python3-pip texinfo wget yasm zlib1g-dev libdrm-dev
在树莓派上编译其他库
本节将向您展示如何编译 FFmpeg 所需的其他库。
1 在开始之前,我们先创建一个目录,我们将在其中存储每个库的代码。
mkdir〜/ffmpeg-libraries
在继续之前,请注意以下每个步骤将需要一些时间才能完成。
2 我们要编译的第一个库是 Fraunhofer FDK AAC 库。
编译该库将使 FFmpeg 支持 ** AAC 声音格式 **。
运行以下命令以将源代码下载并编译到树莓派中。
git clone --depth 1 https://github.com/mstorsjo/fdk-aac.git〜/ffmpeg-libraries/fdk-aac \
&& cd〜/ffmpeg-libraries/fdk-aac \
&& autoreconf -fiv \
&& ./configure \
&& make -j $(nproc)\
&& sudo make install
3 我们要编译的下一个库是”** dav1d **” 库。
该库将增加对将 AV1 视频格式解码为 FFmpeg 的支持。该编解码器被认为是 VP9 编解码器的后继产品,并且是 x265 编解码器的竞争对手。
运行以下命令以编译 “** dav1d **” 库并将其安装到树莓派。
git clone --depth 1 https://code.videolan.org/videolan/dav1d.git〜/ffmpeg-libraries/dav1d \
&& mkdir〜/ffmpeg-libraries/dav1d/build \
&& cd〜/ffmpeg-libraries/dav1d/build \
&& meson .. \
&& ninja \
&& sudo ninja install
4 我们接下来要编译的该库是一个名为”** kvazaar **” 的 HEVC 编码器。
使用以下命令,您可以在树莓派上克隆并编译 Kvazaar 库。
git clone --depth 1 https://github.com/ultravideo/kvazaar.git〜/ffmpeg-libraries/kvazaar \
&& cd〜/ffmpeg-libraries/kvazaar \
&& ./autogen.sh \
&& ./configure \&& make -j $(nproc)\ && sudo make install
5 现在,我们可以编译 FFmpeg 所需的库,以支持树莓派上的 VP8 和 VP9 视频编解码器。
我们正在编译的该库称为 LibVPX,由 Google 开发。
以下命令将库克隆,配置并编译到我们的 Pi 。
git clone --depth 1 https://chromium.googlesource.com/webm/libvpx〜/ffmpeg-libraries/libvpx \
&& cd〜/ffmpeg-libraries/libvpx \
&& ./configure --disable-examples --disable-tools --disable-unit_tests --disable-docs \
&& make -j $(nproc)\
&& sudo make install
6 我们现在需要编译库,称为”** AOM **”。
该库将使我们能够为树莓派上的 AP1 视频编解码器添加对编码的支持。
使用以下命令在 Pi 上克隆并编译代码。
git clone --depth 1 https://aomedia.googlesource.com/aom〜/ffmpeg-libraries/aom \
&& mkdir〜/ffmpeg-libraries/aom/aom_build \
&& cd〜/ffmpeg-libraries/aom/aom_build \
&& cmake -G"Unix Makefiles"AOM_SRC -DENABLE_NASM = on -DPYTHON_EXECUTABLE ="$(which python3)"-DCMAKE_C_FLAGS ="-mfpu = vfp -mfloat-abi = hard".. \
&& sed -i's/ENABLE_NEON:BOOL = ON/ENABLE_NEON:BOOL = OFF /'CMakeCache.txt \
&& make -j $(nproc)\
&& sudo make install
7 我们需要编译的最终库是 “** zimg **” 库。
该库实现了一系列图像处理功能,涉及缩放,色彩空间和深度的基础知识。
通过运行以下命令来克隆并编译代码。
git clone -b版本 2 .9.3 https://github.com/sekrit-twc/zimg.git〜/ffmpeg-libraries/zimg \
&& cd〜/ffmpeg-libraries/zimg \
&& sh autogen.sh \
&& ./configure \
&& make \
&& sudo make install
8 现在,运行以下命令以更新链接缓存。
此命令可确保我们不会因为编译器找不到库而遇到链接问题。
sudo ldconfig
在树莓派上编译 FFmpeg
在本节中,我们将向您展示如何将所有内容放在一起并最终编译 FFmpeg 。
1 我们终于可以在树莓派上编译 FFmpeg 了。
在编译过程中,我们将启用在前两节中编译并安装的所有其他库。
我们还将启用有助于树莓派的功能,例如 ** omx-rpi **。
运行以下命令以编译所有内容。该命令相当大,因为我们需要启用大量功能。
git clone --depth 1 https://github.com/FFmpeg/FFmpeg.git〜/FFmpeg \
&& cd〜/FFmpeg \
&& ./configure \
--extra-cflags ="-I/usr/local/include"\
--extra-ldflags ="-L/usr/local/lib"\
--extra-libs ="-lpthread -lm -latomic"\
--arch = armel \
--enable-gmp \
--enable-gpl \
--enable-libaom \
--enable-libass \
--enable-libdav1d \
--enable-libdrm \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libkvazaar \
--enable-libmp3lame \
--enable-libopencore-amrnb \
--enable-libopencore-amrwb \
--enable-libopus \
--enable-librtmp \
--enable-libsnappy \
--enable-libsoxr \
--enable-libssh \
--enable-libvorbis \
--enable-libvpx \
--enable-libzimg \
--enable-libwebp \
--enable-libx264 \
--enable-libx265 \
--enable-libxml2 \
--enable-mmal \
--enable-nonfree \
--enable-omx \
--enable-omx-rpi \
--enable-version3 \
--target-os = linux \
--enable-pthreads \
--enable-openssl \
--enable-hardcoded-tables \
&& make -j $(nproc)\
&& sudo make install
2 在树莓派上编译 FFmpeg 可能会花费大量时间,因此请耐心等待。
在本指南的这一点上,您现在应该已经在树莓派上成功编译了 FFmpeg 。
如果您在编译软件时遇到任何问题,请与我联系。