在RK3588中,使用Gstreamer的插件tee分流出两个kmssink,希望单流同时往两个HDMI口输出画面,但是现在是后一个kmssink会因获取不到drm-master权限而报错
Gstreamer管道大致示意
kmssink1
src -> tee <
kmssink2
那么该怎么做解决这个问题?或者说有没有什么别的方案能做到单流多显?
0:00:01.016805633 10270 0x165021e0 WARN kmssink gstkmssink.c:1713:gst_kms_sink_show_frame: error: drmModeSetPlane failed: Permission denied (13)
Error received from element HDMI-A-1: GStreamer encountered a general resource error.
RK3588中使用Gstreamer通过tee分流出两个kmssink,会因drm-master权限报错
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
阿里嘎多学长 2025-04-01 14:57关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
RK3588中使用Gstreamer通过tee分流出两个kmssink,会因drm-master权限报错
你遇到的问题是使用Gstreamer的tee插件将流分流到两个kmssink,但是第二个kmssink无法获取到drm-master权限,导致报错。
解决方案:
- 使用
gst-launch-1.0命令时,添加drm-master权限:
gst-launch-1.0 ... ! tee name=t ! kmssink device=/dev/video0 t. ! kmssink device=/dev/video1其中,
/dev/video0和/dev/video1是两个HDMI口对应的视频设备文件。- 在Gstreamer应用程序中,使用
gst_element_set_property函数设置kmssink的device属性:
GstElement *kmssink1 = gst_element_factory_make("kmssink", "kmssink1"); GstElement *kmssink2 = gst_element_factory_make("kmssink", "kmssink2"); gst_element_set_property(kmssink1, "device", "/dev/video0"); gst_element_set_property(kmssink2, "device", "/dev/video1");其中,
/dev/video0和/dev/video1是两个HDMI口对应的视频设备文件。- 在Gstreamer应用程序中,使用
gst_device_get_device_path函数获取kmssink对应的视频设备文件:
GstDevice *device = gst_device_get_device_path(kmssink1); if (device) { gchar *path = gst_device_get_device_path(device); gst_element_set_property(kmssink1, "device", path); g_free(path); gst_device_unref(device); }其中,
kmssink1是kmssink的Gstreamer元素对象。这些解决方案都可以解决你遇到的问题,但是需要根据你的具体情况选择合适的解决方案。
解决 无用评论 打赏 举报- 使用