如何用libpipewire捕获桌面视频?修改示例代码未生效求助
解决PipeWire video-play示例从摄像头切换到桌面捕获的问题
只把代码里的Camera替换成Screen无法生效,是因为PipeWire的设备匹配逻辑需要更精准的属性过滤,而非单纯修改名称关键词。以下是具体修改步骤:
- 修正设备过滤条件
打开video-play.c文件,找到构建设备过滤规则的代码段(对应原第469行附近的pw_filter_add_filter调用),将原匹配摄像头的条件:
SPA_KEY_NODE_NAME, "*Camera*",
替换为匹配桌面捕获设备的属性,推荐用更可靠的设备类别匹配:
SPA_KEY_DEVICE_CATEGORY, "Display",
如果系统中桌面捕获设备的名称包含Screen,也可以直接替换名称匹配:
SPA_KEY_NODE_NAME, "*Screen*",
- 重新编译示例程序
进入PipeWire项目的src/examples目录,重新编译video-play:
make video-play
若使用Meson构建系统,在项目根目录执行:
ninja -C build
- 验证运行效果
运行编译后的video-play程序,此时应该会自动选择桌面捕获设备,窗口显示屏幕内容。
注意:确保系统已安装xdg-desktop-portal及对应桌面环境的后端(如Wayland下的xdg-desktop-portal-wlr,GNOME下的xdg-desktop-portal-gnome),PipeWire的桌面捕获功能依赖这些组件。
内容的提问来源于stack exchange,提问作者ibse
相关产品推荐
相关产品推荐

