0

我正在开发流式传输 mp3 文件的媒体播放器。我正在使用 python gstreamer 模块来播放流。

我的播放器是 playbin2 元素

当我想查询位置时(使用 query_position(gst.FORMAT_TIME,None)),它总是返回一个 gst.QueryError: Query failed。这首歌肯定在播放。(状态不为 NULL)

有人对这个有经验么?

PS:我也尝试用 gst.Format(gst.FORMAT_TIME) 替换 gst.FORMAT_TIME,但给了我同样的错误。

4

3 回答 3

1

“您需要线程化您自己的 gst 对象”是什么意思?“等到查询成功”是什么意思?

从 NULL 到 PAUSED 或 PLAYING 状态的状态更改是异步的。一旦管道被预卷(所以 state >= PAUSED),您通常只能进行成功的持续时间查询。当您在管道(playbin2)的 GstBus 上收到 ASYNC_DONE 消息时,您可以查询。

于 2012-11-23T13:00:19.880 回答
0

你从什么来源流式传输?如果您从 playbin2 查询位置,我会说您做对了所有事情。您能否为 gstreamer 提交错误,包括一个暴露问题的最小 python 片段并告诉您从哪个源流式传输 - 理想情况下它是公开的。

于 2012-11-23T08:58:00.587 回答
0

我自己找到的。问题在于线程。显然,您需要线程化您的 gst 对象并等待查询成功。

于 2012-11-23T12:22:06.730 回答