跳到正文
版本:预览版

在Linux上手动安装

本教程包含安装或编译mpegCoder的步骤。建议需要在项目里局部部署本模块的用户使用这种方式安装。

安装预编译的模块

下载mpegCoder

首先,用户需要下载本项目的单模块文件。下表提供了下载链接。请根据你的环境选择对应的版本。

mpegCoderFFMpegNumpyPythonGCC/G++操作系统
3.2.05.01.22.33.10.410.2.1Debian 11
3.2.05.01.22.33.9.1210.2.1Debian 11
3.2.05.01.22.33.8.1310.2.1Debian 11
3.2.05.01.21.53.7.1310.2.1Debian 11
3.2.05.01.19.53.6.1510.2.1Debian 11

解压所下载的taball后,就可以得到mpegCoder.so文件。

info

上面提到的这些相关项目的版本,只是用来表明预编译mpegCoder时所用的环境。这并不代表运行这些预编译的mpegCoder必须要依赖这些版本。例如,用户也可以在python 3.9.5numpy 1.22.0的环境下运行mpegCoder

安装Numpy

运行mpegCoder之前,必须先安装合适版本的Numpy。每个mpegCoder发行版的最佳Numpy版本已经列在上表之中。如果你安装的Numpy版本与所需的最佳版本差距过大,mpegCoder可能无法正常运行。以下是安装命令:

python -m pip install numpy==<version>

下载依赖项

在发行页上,我们提供了预编译好的依赖项。这些依赖项包括几个.so文件。用户需要根据mpegCoder所需的FFMpeg版本,来选择合适的tarball,来下载、并解压文件。

FFMpegGCC/G++操作系统
5.010.2.1Debian 11

这些文件是作者自行编译完成的,因为FFMpeg并没有官方发行在Linux平台上、带有动态库的版本。如果用户有兴趣知道这些依赖项是如何编译出来的,可以参考编译模块这一小节。

导入

要导入预编译的mpegCoder,用户首先需要将依赖项添加到库路径内。解压出的依赖项文件应该包括以下两个文件夹:

.
|---lib
`---lib-fix

建议将这两个文件存放在某个全局目录下,例如

/opt/ffmpeg/
|---lib
`---lib-fix

此后,用户需要将以下条目添加到~/.bashrc

export LD_LIBRARY_PATH=/opt/ffmpeg/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/opt/ffmpeg/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_LIBDIR=/opt/ffmpeg/lib/:$PKG_CONFIG_LIBDIR

要使得修改过~/.bashrc生效,请通过以下方式激活到当前命令行中。

source ~/.bashrc

运行本模块需要安装glibc>=2.29。请检查下表,确认你的操作系统是否满足这一条件。

OSGLibCFulfilled
Ubuntu bionic (18.04)2.27
Ubuntu focal (20.04)2.31
Debian buster (10)2.28
Debian bullseye (11)2.31

如果你的系统没有提供glibc>=2.29,则建议自行编译mpegCoder。但是,如果用户想要一个快速修复的补丁,可以检查解压后的依赖项文件。

以本文上述的步骤为例,用户可以通过以下方式重定向/lib下的GLibC到本项目提供的版本。

ln -sf /opt/ffmpeg/lib-fix/libm-2.31.so /lib/x86_64-linux-gnu/libm.so.6

此后,用户即可通过将mpegCoder.so放在项目中,并通过以下命令导入模块。

import mpegCoder

编译模块

编译mpegCoder

如果用户需要自行编译mpegCoder,则可以按照以下发布在Github上的指导完成:

使用GCC/G++编译

编译FFMpeg

info

本项目不要求用户必须编译FFMpeg,因为mpegCoder可以通过加载本页提供的预编译FFMpeg完成编译。然而,在某些情况下,用户需要为某个特定的FFMpeg版本编译mpegCoder

如果用户在使用他们自己的FFMpeg来编译mpegCoder, 请参阅安装脚本中的设置,以及在源文件中的

本项目提供了编译FFMpeg的脚本。请检查以下分支:

编译脚本

例如,如果用户想要编译FFMpeg 5.0,则可以运行

curl -O https://raw.githubusercontent.com/cainmagi/FFmpeg-Encoder-Decoder-for-Python/deps/install-ffmpeg-5_0.sh
chmod +rwx install-ffmpeg-5_0.sh
./install-ffmpeg-5_0.sh --all --nvcuda
info

用户可能需要根据实际情况修改本项目提供的安装脚本,因为该脚本目前只在Ubuntu 22.04+GCC 11.2.0Debian 11+GCC 10.2.1上测试通过。