我正在开发一个可以流式传输mp3文件的媒体播放器。我使用python gstreamer模块来播放流。
我的播放器是playbin2元素
当我想查询职位(使用query_position(gst.FORMAT_TIME,None))时,它总是返回一个gst.QueryError: query failed。这首歌播放得很好。(状态不为空)
有没有人有这方面的经验?
PS:我也尝试过用gst.Format( gst.FORMAT_TIME )替换gst.FORMAT_TIME,但给出了同样的错误。
发布于 2012-11-23 21:00:20
“你需要线程你自己的gst对象”是什么意思?“等待查询成功”是什么意思?
从NULL到PAUSED或PLAYING状态的更改是异步的。你通常只能在流水线被预卷起(所以状态>=暂停)后才能成功地执行持续时间查询。当您在管道(Playbin2)的GstBus上获得一条ASYNC_DONE消息时,您就可以查询了。
发布于 2012-11-23 16:58:01
你的流媒体来源是什么?如果你从playbin2查询职位,我会说你做的一切都是对的。你可以为gstreamer提交一个bug,包括一个暴露问题的最小python片段,并告诉你来自哪个来源-理想情况下是公开的。
发布于 2012-11-23 20:22:07
我自己找到的。问题出在线程上。显然,您需要线程化您的gst对象,并等待查询成功。
https://stackoverflow.com/questions/13519086
复制相似问题