我正在开发一个使用ffmpeg将网络摄像头内容进行流传输的程序。我想知道在树莓派3代模型上是否可以利用GPU来完成流传输部分。如果可以,我该如何在ffmpeg上实现呢?
我正在开发一个使用ffmpeg将网络摄像头内容进行流传输的程序。我想知道在树莓派3代模型上是否可以利用GPU来完成流传输部分。如果可以,我该如何在ffmpeg上实现呢?
--enable-mmal
– 通过MMAL启用Broadcom多媒体抽象层(树莓派)。用于硬件解码H.264,VC-1,MPEG-2,MPEG-4。作为依赖项,您需要提供所需头文件mmal.h
的linux-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.h
的libomxil-bellagio(Arch Linux)或libomxil-bellagio-dev(Ubuntu)软件包。
对于Arch Linux用户:
复制ffmpeg软件包的PKGBUILD文件(如果您喜欢,可以通过ABS)。添加上述两个新的配置选项,并将两个提到的软件包添加到depends
行。使用makepkg
命令进行编译/安装。
免责声明:我没有这些设备来测试任何内容。大部分信息都是从FFmpeg configure
文件中获取的。
现在,apt源中的ffmpeg软件包已启用了硬件编解码器,因此您只需使用以下命令安装即可:
sudo apt install ffmpeg
h264_v4l2m2m
的视频内存到内存接口,还有一个较老的h264_omx
OMX-based接口以及其他接口。要获取完整的编解码器列表,请运行:ffmpeg -codecs
/boot/config.txt
中的gpu_mem
设置,则它需要大于16,否则您将在所有硬件编解码器中遇到错误。