首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gstreamer总线调用i.c.w。python多处理导致Ubuntu中的X服务器错误

Gstreamer总线调用i.c.w。python多处理导致Ubuntu中的X服务器错误
EN

Stack Overflow用户
提问于 2013-12-16 21:11:25
回答 1查看 378关注 0票数 0

我已经用gstreamer编写了一个视频播放器,如下所示:https://github.com/dschreij/media_player_gst/blob/master/media_player_gst.py

在Windows中,它在“正常”和多处理模式下工作得很好(即所有的Gstreamer部件和播放器对象都是在一个单独的进程中创建的)。

代码语言:javascript
复制
self.bus.peek()  # Reference to the playbin2 player's bus

导致以下错误并使整个程序(也包括父进程)崩溃:

代码语言:javascript
复制
python: Fatal IO error 11 (Resource temporarily unavailable) on X server :0.
python: Fatal IO error 4 (Interrupted system call) on X server :0.

在其他方面,播放器在新进程中运行良好。只有对self.bus.peek()的调用才会使它崩溃。我需要检查总线队列本身上的事件,因为将总线连接到处理其消息的函数似乎也不起作用(只是在Ubuntu中才一样!)

基本上,我只使用总线来查看是否已经到达流的末尾(gst.MESSAGE_EOS),所以如果可以在不使用playbin2总线的情况下确定这一点,我也可以使用这样的解决方案。有谁能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2013-12-16 22:01:55

与此同时,我主要在这个帖子中找到了答案:

http://gstreamer-devel.966125.n4.nabble.com/fork-and-then-use-gstreamer-functions-td972935.html

在派生的进程中使用gstreamer是一种拖累,因为可能存在关于gst主循环和所涉及的资源的访问冲突。但是,gst.Bus.pop()并不与内部gst循环结构交互(这是peek()和gst.Bus.pop()各自独立完成的),并且通过使用gst.Bus.pop(),我能够毫无问题地从总线检索消息!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20611789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档