如何构建具有树莓派硬件解码支持的 ffmpeg?(如果可能,交叉编译)

卢卡斯·萨内拉

是否可以ffmpeg使用对 Raspberry Pi 的解码支持进行构建我读过mmal可以在 Raspberry Pi 上进行硬件加速解码。

我在 debian 10 x86_64 上试过:

./configure \
    --prefix=${BUILD_DIR}/desktop/${FFMPEG_ARCH_FLAG} \
    --disable-doc \
    --enable-cross-compile \
    --cross-prefix=${CROSS_PREFIX} \
    --target-os=linux \
    --arch=${FFMPEG_ARCH_FLAG} \
    --extra-cflags="-O3 -fPIC $EXTRA_CFLAGS" \
    --enable-mmal \
    --enable-omx \
    --enable-omx-rpi \
    --enable-shared \
    --disable-debug \
    --disable-runtime-cpudetect \
    --disable-programs \
    --disable-muxers \
    --disable-encoders \
    --disable-bsfs \
    --disable-pthreads \
    --disable-avdevice \
    --disable-network \
    --disable-postproc 

在哪里CROSS_PREFIX=aarch64-linux-gnu-FFMPEG_ARCH_FLAG=aarch64但显然我得到了ERROR: mmal not found我找不到要编译和安装的 MMAL。

马修·萨尔瓦多·维廖内

这个有可能。您可以使用构建脚本,您需要在 Raspberry Pi 本身上运行脚本。您可能最关心的部分是接近尾声:

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-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

请注意来自RaspberryPi.org 的警告

MMAL 是 Broadcom 特定的 API,仅用于 VideoCore 4 系统

这让我觉得交叉编译的机会很低,但你总是可以用这个脚本试一试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

交叉编译树莓派内核

如何为具有交叉构建支持的编译器插件制作sbt插件

在树莓派的交叉编译Qt中构建应用程序时出错

如何让 CMake 在自定义位置找到一个库(交叉编译树莓派 4)

树莓派的Qt交叉编译:找不到GLESv2

交叉编译C ++以获得树莓派std错误

JPEG 图像质量在交叉编译为树莓派时降低

没有 PWM 的调光灯。可能吗?使用树莓派

如何交叉编译Python?

如何在树莓派4B上启用对H.264编码的硬件支持

在树莓派3模型B(debian)中使用ffmpeg和contrib构建时崩溃

如何交叉编译Chromium for ARM?

如果出现编译时警告,是否有可能使编译器提前退出,导致构建失败?

pyinstaller 树莓派编译,如何从命令行执行程序

我需要什么硬件来开始编写,编译和运行自己的内核?我需要购买树莓派这样的新机器吗?

如何交叉编译支持不同核心库API的Scala版本?

如何使用NetBSD构建交叉编译的NetBSD工具链

如何交叉编译Openwrt的.c文件?

如何使用导出函数交叉编译DLL

如何使用LTIB交叉编译C ++文件

如何从Windows交叉编译到Linux?

交叉编译时如何使用外部库?

如何从Mac交叉编译到Linux?

LLVM:如何交叉编译C ++程序

如果未使用flow指定类型,是否有可能强制失败编译?

如何构建python服务器与树莓派通信?

Maven:如果工件具有自己的依赖关系,如何构建?

如何使用交叉编译器进行编译?

交叉编译:特殊的交叉编译器还是带有-march选项的gcc?