问题来源:
某鱼上挂着pytorch的aarch64架构下的源码编译,遇到某网友提出的要在aarch64架构下的ubuntu上ffpyplayer源码编译,于是有了本文。
=================================================
1.下载源码
ffpyplayer源码下载地址:
https://github.com/matham/ffpyplayer
2. 安装依赖环境
官网的教程:
https://matham.github.io/ffpyplayer/installation.html
官网给出的ubuntu18.04下的安装依赖为:(经过证实该种方式现已无法源码编译ffpyplayer,但是可以安装预编译版本ffpyplayer)
sudo apt install ffmpeg libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev \ libavutil-dev libswscale-dev libswresample-dev libpostproc-dev libsdl2-dev libsdl2-2.0-0 \ libsdl2-mixer-2.0-0 libsdl2-mixer-dev python3-dev
如果你使用预编译方式安装,那么上面的依赖环境就可以,直接安装预编译版本:
pip install ffpyplayer
但是,如果你准备源码编译ffpyplayer那么上面的这个依赖环境则是错误的,编译过程中会报错:
“libavcodec/avcodec.h”: No such file or directory
报错原因为:
ubuntu的默认安装的avcodec版本过低,其中没有avcodec.h头文件,由于我们现在使用的ffpyplayer版本比较高,为此我们有两个选择,第一个选择就是降低ffpyplayer版本,第二个选择就是手动安装最新版本的avcodec库。
这里我们选择使用手动编译最新版本的avcodec库,同时发现这个库是给ffmpeg使用的,因此我们只要源码编译最新版本的ffmpeg也就可以满足编译最新版本的avcodec库的需求,于是选择手动编译最新版本的ffmpeg。
以下内容为ffmpeg和avcodec库的源码编译操作:
ffpyplayer源码编译报错:ffpyplayer/tools.pyx:182:28: Cannot assign type 'void (*)(void *, int, const char *, va_list) except * nogil' to 'void (*)(void *, int, const char *, va_list) noexcept nogil'
=================================================