You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在Debian Jessie上为树莓派Zero编译带OMX/MMAL的FFmpeg遇MMAL未找到问题

解决树莓派Zero Debian Jessie下FFmpeg编译MMAL支持的问题

嗨,我刚看完你的问题,只复制MMAL头文件肯定不够啦——MMAL的支持需要对应的库文件配合,咱们一步步来搞定:

1. 先把基础依赖补全

首先得装齐编译FFmpeg和MMAL需要的基础包,打开终端跑这条命令:

sudo apt-get update
sudo apt-get install build-essential git pkg-config libssl-dev libx264-dev libx265-dev libfdk-aac-dev libmp3lame-dev libopus-dev

这些包是编译FFmpeg的刚需,先确保都装到位。

2. 正确编译安装Raspberry Pi Userland

你之前直接复制头文件的方式不对,得完整编译整个userland项目,它会自动把MMAL的头文件和库文件放到系统正确的位置:

  • 先克隆Raspberry Pi官方的userland仓库(如果已经克隆过,直接进入目录就行):
git clone https://github.com/raspberrypi/userland.git
cd userland
  • 树莓派Zero是ARMv6架构,编译的时候要指定参数,跑这条命令:
sudo ./buildme --aarch32

这个命令会自动编译并把MMAL相关的头文件放到/opt/vc/include,库文件放到/opt/vc/lib,比手动复制靠谱多了。

3. 给FFmpeg配置脚本指路

编译完userland后,FFmpeg的configure脚本默认找不到/opt/vc下的文件,咱们得用环境变量告诉它:

export CFLAGS="-I/opt/vc/include"
export LDFLAGS="-L/opt/vc/lib"
export LD_LIBRARY_PATH="/opt/vc/lib"

这三个变量分别告诉编译器头文件在哪、库文件在哪,以及运行时该去哪找库。

4. 重新运行FFmpeg的配置命令

现在再执行你的configure命令,这次应该能识别到MMAL了:

./configure --enable-gpl --enable-nonfree --enable-mmal --enable-omx --enable-omx-rpi

要是还报错,你可以检查下/opt/vc/include里有没有mmal文件夹,/opt/vc/lib里有没有libmmal.solibmmal_core.so这些库文件,确认userland编译没出错。

5. 编译安装FFmpeg

配置成功后就可以编译了,注意树莓派Zero只有1核,别加-j参数,直接跑:

make
sudo make install

Zero性能弱,编译时间会很长,耐心等它跑完就行~

额外提醒

  • Debian Jessie版本比较老,要是遇到编译报错,可以试试升级下基础库,或者检查userland编译过程中有没有报错信息。
  • 也可以更新下树莓派固件,MMAL的支持有时候和固件版本有关,你可以用rpi-update更新(Debian下可能需要先安装这个工具)。

内容的提问来源于stack exchange,提问作者CWright

火山引擎 最新活动