我试着在我的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,我得到了生成视频的绿色阴影。也许有人能为我指明正确的方向?
发布于 2020-04-10 00:07:24
您必须在编译时和运行时提供一些额外的标志来将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中,而不是在构建机器根中。这是通过设置正确的环境变量这里来完成的。
-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和安装脚本
还有更多关于编译过程和存储库这里中使用的文件的文档(尽管不是专门关于ffmpeg的)。
https://stackoverflow.com/questions/61128086
复制相似问题