树莓派上的FFmpeg硬件加速

7

我正在开发一个使用ffmpeg将网络摄像头内容进行流传输的程序。我想知道在树莓派3代模型上是否可以利用GPU来完成流传输部分。如果可以,我该如何在ffmpeg上实现呢?

2个回答

9
你需要一些额外的配置选项:
  • --enable-mmal – 通过MMAL启用Broadcom多媒体抽象层(树莓派)。用于硬件解码H.264,VC-1,MPEG-2,MPEG-4。作为依赖项,您需要提供所需头文件mmal.hlinux-raspberrypi-headers(Arch Linux)或linux-headers-*-raspi2(Ubuntu)软件包。

  • --enable-omx-rpi – 启用Raspberry Pi的OpenMAX IL代码。用于H.264的硬件编码(编码器命名为h264_omx)和MPEG-4(mpeg4_omx)。作为依赖项,您需要提供所需头文件OMX_Core.hlibomxil-bellagio(Arch Linux)或libomxil-bellagio-dev(Ubuntu)软件包。

对于Arch Linux用户:

复制ffmpeg软件包的PKGBUILD文件(如果您喜欢,可以通过ABS)。添加上述两个新的配置选项,并将两个提到的软件包添加到depends行。使用makepkg命令进行编译/安装。

免责声明:我没有这些设备来测试任何内容。大部分信息都是从FFmpeg configure文件中获取的。


8

现在,apt源中的ffmpeg软件包已启用了硬件编解码器,因此您只需使用以下命令安装即可:

sudo apt install ffmpeg

根据您的树莓派型号,可能会有几种硬件编解码器可用。以下是从Raspberry Pi论坛上的一篇详细帖子中摘录的内容:
Pi0-3可以通过硬件加速对H264、MPEG4、H263进行解码,并通过选择性的解码许可证支持MPEG2和VC1。
Pi4具有相同的硬件加速解码功能,但不支持其他编解码器。它还有一个单独的HEVC块。
有几个API(v4l2m2mVAAPIOMXMMAL等)可用于访问硬件编解码器,但主要的API现在是基于h264_v4l2m2m视频内存到内存接口,还有一个较老的h264_omx OMX-based接口以及其他接口。要获取完整的编解码器列表,请运行:
ffmpeg -codecs

注意:如果您已更改了/boot/config.txt中的gpu_mem设置,则它需要大于16,否则您将在所有硬件编解码器中遇到错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接