![RaspberryPi 3 上的 FFMPEG 性能问题](https://linux22.com/image/111172/RaspberryPi%203%20%E4%B8%8A%E7%9A%84%20FFMPEG%20%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98.png)
问题:RPI 上未启用 FFMPEG GPU/硬件加速。 FFPlay 不稳定、不稳定,CPU 占用率接近 100%。
描述:mpeg4 文件的视频流非常慢(视频流像幻灯片一样播放)并且消耗在 95% 到 97% 之间。 CPU消耗随着屏幕尺寸的增加而增加。 RPI 上的其他工具(例如内置的 Webbrowser)可以流畅地显示相同的 MPEG4 文件,事实上,Webbrowser 可以很好地显示高清 (720p) 质量的视频,并且占用大约 30-35% 的 CPU。
环境:RPI3、FFMPEG。 FFMEG 是在启用并确认 MMAL 解码器的情况下编译的。距离乔纳森仅一步之遥https://john.ly/rpi-h264-hw-acceleration/#comment-723”被使用。
理由:需要在 RPI 3 上加速 FFMEG MMAL 解码器的原因是我们正在使用 PJSIP 视频通话。 PJSIP 使用 FFMPEG,对于视频通话来说太慢了(我们相信出于同样的原因 FFMEG 很慢)。
设置和测试:根据 johnathan 的评论,我在配置 ffmpeg 时分别启用了 h264_mmal 和 h264_omx 来解码和编码视频。以下是 rpi3 上遵循的过程:
- 下载 mp4 视频文件 1080P 分辨率。
- 按照上述步骤安装 ffmpeg
执行了以下命令:
1)
ffmpeg -f -i test.mp4 -s 320*240 -c:v h264_omx test_h264_mmal.mp4
2)
ffplay -vcodec h264_mmal test.mp4
3)
ffplay -vcodec h264_mmal test_h264_mmal.mp4
(不同分辨率如320*240、640*480)4) 将gpu_mem值设置为128和256
下面是ffmpeg上的配置:
$ ffmpeg -decoders | grep h264
ffmpeg version git-2017-05-05-3c085c1 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 4.9.2 (Raspbian 4.9.2-10)
configuration: --prefix=/usr --enable-mmal --enable-omx --enable-omx-rpi --enable-decoder=h264_mmal --enable-decoder=mpeg2_mmal --enable-encoder=h264_omx --enable-encoder=h264_omx --enable-libx264 --enable-nonfree --enable-gpl --enable-avresample --enable-shared --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libzvbi
libavutil 55. 61.100 / 55. 61.100
libavcodec 57. 94.101 / 57. 94.101
libavformat 57. 72.101 / 57. 72.101
libavdevice 57. 7.100 / 57. 7.100
libavfilter 6. 88.100 / 6. 88.100
libavresample 3. 6. 0 / 3. 6. 0
libswscale 4. 7.101 / 4. 7.101
libswresample 2. 8.100 / 2. 8.100
libpostproc 54. 6.100 / 54. 6.100
VFS..D h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
V..... h264_mmal h264 (mmal) (codec h264)
V....D h264_vdpau H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (VDPAU acceleration) (codec h264)
测试结果:当使用 ffplay 时,我们看到抖动视频图像幻灯片幻灯片放映,CPU 占用率接近 100%。
注意:当使用默认浏览器和 Chrome 在 RPI3 上流式传输高清视频时,CPU 占用率为 30-35%。
还有什么需要注意的吗?或者任何帮助都非常感谢,因为我在这个问题上停留了一个多星期。