树莓派3硬件加速播放视频

发布于 | 2 分钟
目录

树莓派3+Wayland+mpv+硬件解码

动机🔗

  • 硬件加速播放视频能效更好
    • 不用那就是全核100%
  • 旧的MMAL、OMX不再被支持
  • ArchLinuxARM打包的mpv支持硬件解码,但是:
    • 需要用 --hwdec=v4l2m2m-copy
    • 上述解码器在Wayland上只与 --vo=gpu 兼容, --vo=dmabuf-wayland 用不了
    • --hwdec=v4l2m2m-copy --vo=gpu 输出会掉帧(尽管解码不会掉帧)

实现方法🔗

重新编译mpv,使其链接适配树莓派的rpi-ffmpeg。rpi-ffmpeg在树莓派上实现了 v4l2m2m(w/o -copy),并且这个解码器与输出方式 dmabuf-wayland 兼容,最终效果很好。

总流程是:

  • clone mpv-build
  • 运行 ./update in mpv-build's folder
  • 想办法用 rpi-ffmpeg 替换脚本自动clone的ffmpeg(例如用git添加一个remote)
  • ffmpeg_options 添加额外配置参数(见下)
  • 运行 ./build -j4 编译所有东西
  • 然后你就能用编译好的mpv实现硬件加速看视频了,命令形如mpv --vo=dmabuf-wayland --hwdec=v4l2m2m video.mp4

ffmpeg_options 的内容(不是全都必要,但我懒得测试了):

--enable-libx264
--enable-libmp3lame
--enable-libfdk-aac
--enable-libdrm
--enable-opengl
--enable-outdev=vout_drm
--enable-hwaccels
--enable-v4l2_m2m
--enable-nonfree
--enable-sand
--enable-v4l2-request

附注🔗

树莓派3的硬件解码节点是/dev/video10。可以通过运行v4l2-ctl --list-formats-out -d 10列出所支持解码的格式。