gpt4 book ai didi

ffmpeg - 硬件加速 RPI4 FFmpeg

转载 作者:行者123 更新时间:2023-12-04 22:58:36 24 4
gpt4 key购买 nike

我正在尝试在我的 Raspberry pi 4-64 上进行硬件加速。我正在使用 FFmpeg 和 AFAIK hwaccel 可以通过使用 OpenMAX 或 V4L2-M2M 来实现。
在 FFmpeg 的“--enable-omx”和“enable-omx-rpi”之后,构建失败并出现错误:“未找到 OMX_Core.h”。如果我将手动提供 omx header ,那么它将编译但 FFmpeg 编码将由于缺少库而失败:bcm_host.so 和 libopenmaxil.so

我尝试通过 DISABLE_VC4GRAPHICS = "1"恢复到用户空间,它产生了 bcm_host.so,但没有产生 libopenmaxil.so。我尝试了虚拟提供程序和图形设置的不同组合,但没有成功。
是否可以在 RPI4-64 上访问 omx 硬件加速?

重现问题的步骤:

1.下载最新的Poky发行版,meta-openembedded,meta-raspberrypi

2.启用对FFmpeg的omx、omx-rpi支持

3.FFmpeg的链接头

4.构建并尝试使用h264_omx

如何丢失库 libopenmaxil.so 以及 hwaccel 所需的一切?

Sprite 大师:提交 5d47cdf448b6cff5bb7cc5b0ba0426b8235ec478

元开放嵌入式主机:提交 daa50331352c1f75da3a8ef6458ae3ddf94ef863

元树莓派大师:提交 8d163dd

顺便说一句,通过使用 V4L2-M2M,我在生成的视频上得到了绿色阴影。也许有人可以指出我正确的方向吗?

最佳答案

您必须在编译时和运行时提供一些额外的标志来将 ffmpeg 指向正确的头文件和库位置。

这是我用来为 AArxh64 交叉编译 ffmpeg 的内容:

./configure \
--arch="${HOST_ARCH}" \
--target-os="linux" \
--prefix="/usr/local" \
--sysroot="${RPI_SYSROOT}" \
--enable-cross-compile \
--cross-prefix="${HOST_TRIPLE}-" \
--toolchain=hardened \
--enable-gpl --enable-nonfree \
--enable-avresample \
--enable-libvpx --enable-libx264 --enable-libxvid \
--enable-omx --enable-omx-rpi --enable-mmal --enable-neon \
--enable-shared \
--disable-static \
--disable-doc \
--extra-cflags="$(pkg-config --cflags mmal) \
-I${RPI_SYSROOT}/usr/local/include \
-I${RPI_SYSROOT}/opt/vc/include/IL" \
--extra-ldflags="$(pkg-config --libs-only-L mmal) \
-Wl,-rpath-link,${RPI_SYSROOT}/opt/vc/lib \
-Wl,-rpath,/opt/vc/lib"

请注意,pkg-config 也被配置为交叉编译,它在 Raspberry Pi sysroot 中查找,而不是在构建机器根目录中。这是通过设置正确的环境变量来完成的 here .
-I标志指定包含路径, -L pkg-config --libs-only-L 返回的标志是库路径。 -Wl将逗号分隔的参数列表传递给链接器。 -rpath-link用于在链接时查找其他共享库所需的共享库, -rpath用于在运行时查找库。这是必需的,因为用户空间库位于非标准位置 ld不会在 /opt/vc/lib 中搜索默认。

你可以在我的 GitHub 上找到我使用的工具链、Dockerfile 和安装脚本: https://github.com/tttapa/RPi-Cpp-Toolchain/tree/master/toolchain/docker/rpi3/aarch64/aarch64-cross-build

用户态脚本在这里: https://github.com/tttapa/RPi-Cpp-Toolchain/blob/76ac03741bc7b7da106ae89884c7bada96768a07/toolchain/docker/rpi3/aarch64/aarch64-cross-build/install-scripts/userland.sh
ffmpeg 脚本在这里: https://github.com/tttapa/RPi-Cpp-Toolchain/blob/76ac03741bc7b7da106ae89884c7bada96768a07/toolchain/docker/rpi3/aarch64/aarch64-cross-build/install-scripts/ffmpeg.sh

还有更多关于编译过程和存储库中使用的文件的文档 here (虽然不是专门关于 ffmpeg)。

关于ffmpeg - 硬件加速 RPI4 FFmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61128086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com