首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缺少PyGST插件?

缺少PyGST插件?
EN

Stack Overflow用户
提问于 2011-08-07 19:53:01
回答 2查看 1.4K关注 0票数 2

我正在运行python2.6和PyGST (最近的Python2.6可用)。我已经安装了所有的插件-好的,坏的,丑陋的。

我有以下代码:

代码语言:javascript
复制
import sys, os
import pygtk, gtk, gobject
import pygst
pygst.require("0.10")
import gst

class GTK_Main:
    def __init__(self):
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        window.set_title("Audio-Player")
        window.set_default_size(300, -1)
        window.connect("destroy", gtk.main_quit, "WM destroy")
        vbox = gtk.VBox()
        window.add(vbox)
        self.entry = gtk.Entry()
        vbox.pack_start(self.entry, False, True)
        self.button = gtk.Button("Start")
        self.button.connect("clicked", self.start_stop)
        vbox.add(self.button)
        window.show_all()

        self.player = gst.element_factory_make("playbin2", "player")
        fakesink = gst.element_factory_make("fakesink", "fakesink")
        self.player.set_property("video_sink", fakesink)
        bus = self.player.get_bus()
        bus.add_signal_watch()
        bus.connect("message", self.on_message)

    def start_stop(self, w):
        if self.button.get_label() == "Start":
            filepath = self.entry.get_text()
            if os.path.isfile(filepath):
                self.button.set_label("Stop")
                self.player.set_property("uri", filepath)
                self.player.set_state(gst.STATE_PLAYING)
            else:
                self.player.set_state(gst.STATE_NULL)
                self.button.set_label("Start")

    def on_message(self, bus, message):
        t = message.type
        if t == gst.MESSAGE_EOS:
            self.player.set_state(gst.STATE_NULL)
            self.button.set_label("Start")
        elif t == gst.MESSAGE_ERROR:
            self.player.set_state(gst.STATE_NULL)
            err, debug = message.parse_error()
            print "Error: %s" % err, debug
            self.button.set_label("Start")

GTK_Main()
gtk.gdk.threads_init()
gtk.main()

但是,当我运行这个模块并尝试打开一个文件时,我会得到以下错误。

错误:您的GStreamer安装缺少插件。..........\Source\gst-plugins-base\gst\playback\gsturidecodebin.c(991):gen_source_element ():/GstPlayBin2:player/GstURIDecodeBin:uridecodebin0

我该怎么纠正呢?

编辑:第一个答案在Ubuntu上工作,但它不工作在Windows上。凡是解决Windows问题的人都将得到赏金。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-18 17:12:08

一些研究表明,这显然是DLL中的一个错误。可能需要对源代码进行调整,并编译源代码,而不是使用WinBuilds。

票数 0
EN

Stack Overflow用户

发布于 2011-08-09 12:13:11

您需要的是一个完整的uri:如果您只处理本地文件系统上的文件,并且只想插入文件路径,请更改行。

代码语言:javascript
复制
self.player.set_property("uri", filepath)

像这样的事情:

代码语言:javascript
复制
self.player.set_property("uri", "file://"+filepath)

而且: GST有一些例程可以更好地处理uri --仅仅是预置的'file://'这里有一个很好的教程

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

https://stackoverflow.com/questions/6975374

复制
相关文章

相似问题

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