我正在构建一个程序,使用ffmpeg通过Internet流式传输网络摄像头内容。我想知道是否可以在覆盆子pi模型3上使用GPU作为流媒体部分。如果是,我怎么能在ffmpeg上实现这个?
答案 0 :(得分:3)
您需要一些额外的配置选项:
--enable-mmal
- 通过MMAL启用Broadcom多媒体抽象层(Raspberry Pi)。用于H.264,VC-1,MPEG-2,MPEG-4的硬件解码。作为依赖项,您需要 linux-raspberrypi-headers (Arch Linux)或 linux-headers - * - raspi2 (Ubuntu)包,它提供所需的头文件{ {1}}。
mmal.h
- 为Raspberry Pi启用OpenMAX IL代码。对于H.264(编码器名为--enable-omx-rpi
)和MPEG-4(h264_omx
)的硬件编码。作为依赖项,您需要 libomxil-bellagio (Arch Linux)或 libomxil-bellagio-dev (Ubuntu)包,它提供所需的头文件mpeg4_omx
对于Arch Linux用户:
复制 ffmpeg 包的PKGBUILD文件(如果您愿意,可以通过ABS复制)。添加上面显示的两个新配置选项,并将两个提到的包添加到OMX_Core.h
行。使用depends
命令编译/安装。
免责声明:我没有其中任何一种设备来测试这些设备。大部分信息都是从FFmpeg makepkg
文件中获取的。
答案 1 :(得分:2)
apt 的 ffmpeg 包现在启用了硬件编解码器,因此您可以使用以下方法安装它:
apt install ffmpeg
树莓派上有一些支持硬件的编解码器,具体取决于您拥有的型号。以下是此详细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
,还有基于 [旧] h264_omx
OMX 的,等等。有关编码和解码运行的编解码器的完整列表:
ffmpeg -codecs
注意:如果您更改了 gpu_mem
中的 /boot/config.txt
设置,它需要大于 16,否则所有硬件编解码器都会出错。