在Linux上手动安装
本教程包含安装或编译mpegCoder
的步骤。建议需要在项目里局部部署本模块的用户使用这种方式安装。
安装预编译的模块
下载mpegCoder
首先,用户需要下载本项目的单模块文件。下表提供了下载链接。请根据你的环境选择对应的版本。
mpegCoder | FFMpeg | Numpy | Python | GCC/G++ | 操作系统 |
---|---|---|---|---|---|
3.2.0 | 5.0 | 1.22.3 | 3.10.4 | 10.2.1 | Debian 11 |
3.2.0 | 5.0 | 1.22.3 | 3.9.12 | 10.2.1 | Debian 11 |
3.2.0 | 5.0 | 1.22.3 | 3.8.13 | 10.2.1 | Debian 11 |
3.2.0 | 5.0 | 1.21.5 | 3.7.13 | 10.2.1 | Debian 11 |
3.2.0 | 5.0 | 1.19.5 | 3.6.15 | 10.2.1 | Debian 11 |
解压所下载的taball后,就可以得到mpegCoder.so
文件。
info
上面提到的这些相关项目的版本,只是用来表明预编译mpegCoder
时所用的环境。这并不代表运行这些预编译的mpegCoder
必须要依赖这些版本。例如,用户也可以在python 3.9.5
和numpy 1.22.0
的环境下运行mpegCoder
。
安装Numpy
运行mpegCoder
之前,必须先安装合适版本的Numpy。每个mpegCoder
发行版的最佳Numpy版本已经列在上表之中。如果你安装的Numpy版本与所需的最佳版本差距过大,mpegCoder
可能无法正常运行。以下是安装命令:
python -m pip install numpy==<version>
下载依赖项
在发行页上,我们提供了预编译好的依赖项。这些依赖项包括几个.so
文件。用户需要根据mpegCoder
所需的FFMpeg版本,来选择合适的tarball,来下载、并解压文件。
FFMpeg | GCC/G++ | 操作系统 |
---|---|---|
5.0 | 10.2.1 | Debian 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
。请检查下表,确认你的操作系统是否满足这一条件。
OS | GLibC | Fulfilled |
---|---|---|
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上的指导完成:
编译FFMpeg
info
本项目提供了编译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.0
和Debian 11
+GCC 10.2.1
上测试通过。