树莓派Raspbian系统FFmpeg屏幕录制参数及x11grab报错解决
树莓派FFmpeg屏幕录制解决方案
问题原因
你遇到的x11grab无法打开显示的错误,通常是两种情况:
- 当前桌面环境是Wayland(Raspberry Pi OS Bookworm及以上默认),而
x11grab仅支持X11协议; - X11环境下当前用户没有访问显示设备的权限。
分场景解决方案
场景1:Wayland桌面环境
方法A:使用帧缓冲设备(fbdev)
无需依赖桌面协议,直接读取树莓派的帧缓冲,轻量且通用:
- 先添加用户权限(避免权限报错):
sudo usermod -aG video $USER
- 重新登录后执行录屏命令(带硬件加速,降低CPU占用):
ffmpeg -f fbdev -framerate 25 -i /dev/fb0 -c:v h264_v4l2m2m -crf 23 output.mp4
-framerate 25:设置帧率,可根据需求调整为30;-c:v h264_v4l2m2m:调用树莓派硬件H.264编码器,避免CPU过载;-crf 23:控制视频质量,数值越小质量越高(建议20-28)。
方法B:使用PipeWire输入(适配Wayland原生)
需要先安装PipeWire相关组件:
sudo apt update && sudo apt install pipewire libpipewire-0.3-0
执行录屏命令:
ffmpeg -f pipewire -framerate 25 -video_size 1920x1080 -i pipewire://desktop output.mp4
- 可通过
pw-cli list-objects命令查看具体的屏幕设备名称,替换pipewire://desktop。
场景2:X11桌面环境(旧版Raspberry Pi OS)
- 先赋予当前用户X11显示访问权限:
xhost +local: export DISPLAY=:0
- 执行带硬件加速的录屏命令:
ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0 -c:v h264_v4l2m2m -crf 23 output.mp4
- 若需录制指定区域,将
-i :0.0改为-i :0.0+100,200(代表从屏幕左上角偏移100x200的位置开始录制)。
内容的提问来源于stack exchange,提问作者njamescouk
相关产品推荐
相关产品推荐

