Cri*_*bor 5 gpu ffmpeg hardware-acceleration raspberry-pi3
我正在构建一个使用 ffmpeg 通过互联网流式传输网络摄像头内容的程序。我想知道是否可以将 GPU 用于 raspberry pi 模型 3 上的流媒体部分。如果是,我该如何在 ffmpeg 上实现?
您将需要一些额外的配置选项:
--enable-mmal– 通过 MMAL 启用 Broadcom 多媒体抽象层 (Raspberry Pi)。用于 H.264、VC-1、MPEG-2、MPEG-4 的硬件解码。作为依赖项,您需要linux- raspberrypi -headers (Arch Linux) 或linux-headers-*-raspi2 (Ubuntu) 包,它提供所需的头文件mmal.h。
--enable-omx-rpi– 为 Raspberry Pi 启用 OpenMAX IL 代码。用于H.264(编码器命名h264_omx)和MPEG-4(mpeg4_omx)的硬件编码。作为依赖项,您需要libomxil-bellagio (Arch Linux) 或libomxil-bellagio-dev (Ubuntu) 包,它提供所需的头文件OMX_Core.h.
对于 Arch Linux 用户:
复制ffmpeg包的PKGBUILD文件(如果您愿意,可以通过ABS)。添加上面显示的两个新配置选项,并将提到的两个包添加到行中。使用命令编译/安装。dependsmakepkg
免责声明:我没有这些设备中的任何一个来测试任何这些。大多数信息是从 FFmpegconfigure文件中获取的。
apt 中的 ffmpeg 软件包现在启用了硬件编解码器,因此您只需使用以下命令即可安装它:
sudo apt install ffmpeg
Run Code Online (Sandbox Code Playgroud)
Pi 上有一些支持硬件的编解码器,具体取决于您的型号。以下是Raspberry Pi 论坛上这篇详细帖子/主题的摘录:
Pi0-3 具有 H264、MPEG4、H263 的硬件加速解码,并通过 MPEG2 和 VC1 的可选编解码器许可证。
Pi4 对 H264 具有相同的硬件加速解码,但对其他编解码器则不然。它还具有一个单独的 HEVC 块。
有一些 API(v4l2m2m、VAAPI、OMX、MMAL等)可以访问硬件编解码器,但现在主要的 API 是基于视频内存到内存接口h264_v4l2m2m的,还有 [较旧的]h264_omx基于 OMX 的 API , 和别的。有关编码和解码运行的编解码器的完整列表:
ffmpeg -codecs
Run Code Online (Sandbox Code Playgroud)
注意:如果您更改了gpu_mem其中的设置,/boot/config.txt则需要大于 16,否则所有硬件编解码器都会出错。