Python与Gstreamer

2 投票
2 回答
1952 浏览
提问于 2025-04-15 21:58

我正在创建一个流媒体应用程序,使用GStreamer和TCP管道,并且我实现了开始、暂停和停止功能。

但是问题是,我无法进行快进或快退。我试着在服务器端改变播放的值,然后又在客户端尝试,最后还同时在两边都改,但无论哪种情况都不行。我甚至尝试过暂停播放再继续,但也没有任何反应。

我在快进和音量方面都遇到了这个问题。请问有什么帮助吗?我到处搜索过,但没有找到任何有效的解决办法。

这是我用来进行快进的代码:

self.pipeline.seek_simple(gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH, time)

2 个回答

0

可能你忘了让总线监听寻址事件。试着在设置好你的管道后加上这个:

self.bus = self.pipeline.get_bus()
self.bus.add_signal_watch()   

如果这样还不行,那请发更多的代码过来。

0

也许这能帮到你,如果你还没找到解决办法的话:

在Gstreamer中,寻找特定位置是通过seek()和seek_simple()这两个方法来实现的。要进行寻找,你还需要告诉Gstreamer你想要什么样的寻找方式。在下面的例子中,我们将使用一个叫做gst.FORMAT_TIME的格式常量,顾名思义,这个常量是用来进行时间寻找的。:D 我们还会用到query_duration()和query_position()这两个方法,分别来获取文件的总长度和当前播放了多长时间。Gstreamer默认使用纳秒作为时间单位,所以你需要对此进行调整。

这里有一个例子: 使用GStreamer进行寻找

撰写回答