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

2024-04-24 07:20:53 发布

您现在位置:Python中文网/ 问答频道 /正文

崔默在视频中写道: https://github.com/dschreij/media_player_gst/blob/master/media_player_gst.py

在Windows中,它在“普通”和多处理模式下工作良好(即所有Gstreamer部分和player对象都是在单独的进程中创建的)。然而,在Ubuntu13.10中,当播放器在自己的进程中运行时,调用

self.bus.peek()  # Reference to the playbin2 player's bus

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

^{pr2}$

否则玩家在新进程中运行良好。只有打电话给self.bus.peek()使它崩溃。我需要检查总线队列本身的事件,因为将总线连接到处理其消息的函数上似乎也不起作用(只在Ubuntu中!)在

基本上我只坐公车去看看流的尽头(商品及服务税信息)已经到达,所以如果不使用playbin2总线就可以确定这一点,我也可以使用这样的解决方案。有人能帮我解决这个问题吗?在


Tags: httpsselfgithubcom视频进程mediablob
1条回答
网友
1楼 · 发布于 2024-04-24 07:20:53

我同时找到了答案,主要是在这条线索上:

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

在分叉进程中使用gstreamer是一个拖累,因为在gst主循环和涉及的资源方面可能存在访问冲突。然而,gst.Bus.pop()不与内部gst循环结构交互(peek()和poll()都是独立的),并使用gst.Bus.pop()我可以毫无问题地从总线上检索消息!在

相关问题 更多 >