【发布时间】:2016-10-21 11:33:41
【问题描述】:
我正在构建一个程序,它使用 ffmpeg 在互联网上传输网络摄像头内容。我想知道是否可以将 GPU 用于树莓派模型 3 上的流媒体部分。如果可以,我如何在 ffmpeg 上实现这一点?
【问题讨论】:
标签: ffmpeg gpu raspberry-pi3 hardware-acceleration
我正在构建一个程序,它使用 ffmpeg 在互联网上传输网络摄像头内容。我想知道是否可以将 GPU 用于树莓派模型 3 上的流媒体部分。如果可以,我如何在 ffmpeg 上实现这一点?
【问题讨论】:
标签: ffmpeg gpu raspberry-pi3 hardware-acceleration
您需要一些额外的配置选项:
--enable-mmal – 通过 MMAL 启用 Broadcom 多媒体抽象层 (Raspberry Pi)。用于 H.264、VC-1、MPEG-2、MPEG-4 的硬件解码。作为依赖项,您需要提供所需的头文件@ 987654324@.
--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)。添加上面显示的两个新配置选项,并将提到的两个包添加到depends 行。使用makepkg 命令编译/安装。
免责声明:我没有这些设备来测试任何这些。大部分信息是从 FFmpeg configure 文件中获取的。
【讨论】:
来自 apt 的 ffmpeg 包现在启用了硬件编解码器,因此您可以使用以下方法安装它:
apt install ffmpeg
Pi 上有一些支持硬件的编解码器,具体取决于您拥有的型号。这是详细post/thread on the Raspberry Pi Forum的摘录:
Pi0-3 具有 H264、MPEG4、H263 和 通过 MPEG2 和 VC1 的可选编解码器许可证。
Pi4 对 H264 具有相同的硬件加速解码,但不是 其他编解码器。它还有一个单独的 HEVC 块。
有一些 API(v4l2m2m、VAAPI、OMX、MMAL,...)来访问硬件编解码器,但现在主要的是基于 Video Memory-To-Memory Interface 的 h264_v4l2m2m,还有基于 [older] h264_omx OMX 的,等等。有关编码和解码运行的编解码器的完整列表:
ffmpeg -codecs
注意:如果您更改了/boot/config.txt 中的gpu_mem 设置,则它需要大于16,否则您将收到所有硬件编解码器的错误。
【讨论】: