我最近学习了如何使用Xvfb虚拟Linux帧缓冲区:
https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=261264
我希望 gstreamer fbdevsink 输出到虚拟帧缓冲区,但这需要指定设备。但虚拟帧缓冲区没有 /dev/fbX 链接。
那么 fbdevsink 可以输出到虚拟帧缓冲区吗?如果是这样,怎么办?
Xvfb 选项“-fbdir /var/tmp”选项允许对 xwd-header 前缀的虚拟帧缓冲区进行读取访问:
tail --bytes $((1360*768*4)) /var/tmp/Xvfb_screen0 > /dev/fb0
xwd-prefix 的长度为 3232 字节,将单个字节写入 /var/tmp/Xvfb_screen0 会导致总线错误:
$ Xvfb :1 -screen 0 1360x768x24 -fbdir /var/tmp &
[1] 2117
$ DISPLAY=:1 xclock -update 1 &
[2] 2124
$ Warning: Missing charsets in String to FontSet conversion
$ echo -n "x" > /var/tmp/Xvfb_screen0
$ (EE)
(EE) Backtrace:
(EE)
(EE) Bus error at address 0x75f22c04
(EE)
Fatal server error:
(EE) Caught signal 7 (Bus error). Server aborting
(EE)
XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":1"
after 692 requests (94 known processed) with 0 events remaining.
[1]- Aborted Xvfb :1 -screen 0 1360x768x24 -fbdir /var/tmp
[2]+ Exit 1 DISPLAY=:1 xclock -update 1
$
我找不到 Xvfb 的源代码,在哪里可以找到它?
答案1
Xvfb 是 xorg-server 的一部分
git clone https://salsa.debian.org/xorg-team/xserver/xorg-server.git