首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >硬件加速RPI4 FFmpeg

硬件加速RPI4 FFmpeg
EN

Stack Overflow用户
提问于 2020-04-09 18:43:11
回答 1查看 5.4K关注 0票数 1

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

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

复制这一问题的步骤:

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

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

3. FFmpeg的链接头

4.构建并尝试使用h264_omx

我怎样才能丢失库libopenmaxil.so和我所需要的所有东西呢?

poky大师:提交5d47cdf448b6cff5bb7cc5b0ba0426b8235ec478

meta-openembedded主程序:提交daa50331352c1f75da3a8ef6458ae3ddf94ef863

主服务器:提交8d163dd

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-10 00:07:24

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

这是我以前为AArxh64交叉编译ffmpeg的内容:

代码语言:javascript
复制
./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中,而不是在构建机器根中。这是通过设置正确的环境变量这里来完成的。

-I标志指定包含路径,pkg-config --libs-only-L返回的-L标志是库路径。-Wl将逗号分隔参数的列表传递给链接器。-rpath-link用于在链接时查找其他共享库所需的共享库,-rpath用于在运行时查找库。这是必需的,因为userland库位于一个非标准位置,默认情况下,ld不会在/opt/vc/lib中搜索。

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

userland脚本在这里: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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61128086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档