当前位置: 首页>>代码示例>>Python>>正文


Python sound_pipeline.SoundPipeline类代码示例

本文整理汇总了Python中xpra.sound.sound_pipeline.SoundPipeline的典型用法代码示例。如果您正苦于以下问题:Python SoundPipeline类的具体用法?Python SoundPipeline怎么用?Python SoundPipeline使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了SoundPipeline类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: __init__

 def __init__(self, src_type=DEFAULT_SRC, src_options={}, codec=MP3, volume=1.0, encoder_options={}):
     assert src_type in SOURCES
     encoder, fmt = get_encoder_formatter(codec)
     SoundPipeline.__init__(self, codec)
     self.src_type = src_type
     source_str = plugin_str(src_type, src_options)
     encoder_str = plugin_str(encoder, encoder_options)
     fmt_str = plugin_str(fmt, MUXER_DEFAULT_OPTIONS.get(fmt, {}))
     pipeline_els = [source_str]
     if AUDIOCONVERT:
         pipeline_els += ["audioconvert"]
     if AUDIORESAMPLE:
         pipeline_els += [
                      "audioresample",
                      "audio/x-raw-int,rate=44100,channels=2"]
     pipeline_els.append("volume name=volume volume=%s" % volume)
     pipeline_els += [encoder_str,
                     fmt_str,
                     "appsink name=sink"]
     self.setup_pipeline_and_bus(pipeline_els)
     self.volume = self.pipeline.get_by_name("volume")
     self.sink = self.pipeline.get_by_name("sink")
     self.sink.set_property("emit-signals", True)
     self.sink.set_property("max-buffers", 10)
     self.sink.set_property("drop", False)
     self.sink.set_property("sync", True)
     self.sink.set_property("qos", False)
     try:
         #Gst 1.0:
         self.sink.connect("new-sample", self.on_new_sample)
         self.sink.connect("new-preroll", self.on_new_preroll1)
     except:
         #Gst 0.10:
         self.sink.connect("new-buffer", self.on_new_buffer)
         self.sink.connect("new-preroll", self.on_new_preroll0)
开发者ID:svn2github,项目名称:Xpra,代码行数:35,代码来源:src.py

示例2: __init__

 def __init__(self, src_type=DEFAULT_SRC, src_options={}, codec=MP3, encoder_options={}):
     assert src_type in SOURCES
     encoder, fmt = get_encoder_formatter(codec)
     SoundPipeline.__init__(self, codec)
     self.add_signals(self.__generic_signals__)
     self.src_type = src_type
     source_str = plugin_str(src_type, src_options)
     encoder_str = plugin_str(encoder, encoder_options)
     pipeline_els = [source_str]
     if AUDIOCONVERT:
         pipeline_els += ["audioconvert"]
     if AUDIORESAMPLE:
         pipeline_els += [
                      "audioresample",
                      "audio/x-raw-int,rate=44100,channels=2"]
     pipeline_els += [encoder_str,
                     fmt,
                     "appsink name=sink"]
     self.setup_pipeline_and_bus(pipeline_els)
     self.sink = self.pipeline.get_by_name("sink")
     self.sink.set_property("emit-signals", True)
     self.sink.set_property("max-buffers", 10)
     self.sink.set_property("drop", False)
     self.sink.set_property("sync", True)
     self.sink.set_property("qos", False)
     self.sink.connect("new-buffer", self.on_new_buffer)
     self.sink.connect("new-preroll", self.on_new_preroll)
开发者ID:svn2github,项目名称:Xpra,代码行数:27,代码来源:src.py

示例3: cleanup

 def cleanup(self):
     if self.volume_timer!=0:
         glib.source_remove(self.volume_timer)
         self.volume_timer = 0
     SoundPipeline.cleanup(self)
     self.sink_type = ""
     self.src = None
开发者ID:svn2github,项目名称:Xpra,代码行数:7,代码来源:sink.py

示例4: __init__

    def __init__(self, sink_type=None, sink_options={}, codecs=CODECS, codec_options={}, volume=1.0):
        if not sink_type:
            sink_type = DEFAULT_SINK
        assert sink_type in SINKS, "invalid sink: %s" % sink_type
        matching = [x for x in CODEC_ORDER if (x in codecs and x in CODECS)]
        log("SoundSink(..) found matching codecs %s", matching)
        assert len(matching) > 0, "no matching codecs between arguments %s and supported list %s" % (codecs, CODECS)
        codec = matching[0]
        decoder, parser = get_decoder_parser(codec)
        SoundPipeline.__init__(self, codec)
        self.sink_type = sink_type
        decoder_str = plugin_str(decoder, codec_options)
        pipeline_els = []
        pipeline_els.append(
            "appsrc"
            + " name=src"
            + " emit-signals=0"
            + " block=0"
            + " is-live=0"
            + " stream-type=stream"
            + " format=%s" % GST_FORMAT_BUFFERS
        )
        pipeline_els.append(parser)
        pipeline_els.append(decoder_str)
        pipeline_els.append("audioconvert")
        pipeline_els.append("audioresample")
        pipeline_els.append("volume name=volume volume=%s" % volume)
        queue_el = [
            "queue",
            "name=queue",
            "min-threshold-time=%s" % QUEUE_MIN_TIME,
            "max-size-buffers=0",
            "max-size-bytes=0",
            "max-size-time=%s" % QUEUE_TIME,
            "leaky=%s" % QUEUE_LEAK,
        ]
        if QUEUE_SILENT:
            queue_el.append("silent=%s" % QUEUE_SILENT)
        pipeline_els.append(" ".join(queue_el))
        sink_attributes = SINK_SHARED_DEFAULT_ATTRIBUTES.copy()
        from xpra.sound.gstreamer_util import _gst_major_version

        sink_attributes.update(SINK_DEFAULT_ATTRIBUTES.get(_gst_major_version, {}).get(sink_type, {}))
        sink_attributes.update(sink_options)
        sink_str = plugin_str(sink_type, sink_attributes)
        pipeline_els.append(sink_str)
        self.setup_pipeline_and_bus(pipeline_els)
        self.volume = self.pipeline.get_by_name("volume")
        self.src = self.pipeline.get_by_name("src")
        self.queue = self.pipeline.get_by_name("queue")
        self.overruns = 0
        self.queue_state = "starting"
        if QUEUE_SILENT == 0:
            self.queue.connect("overrun", self.queue_overrun)
            self.queue.connect("underrun", self.queue_underrun)
            self.queue.connect("running", self.queue_running)
            self.queue.connect("pushing", self.queue_pushing)
开发者ID:svn2github,项目名称:Xpra,代码行数:57,代码来源:sink.py

示例5: cleanup

 def cleanup(self):
     SoundPipeline.cleanup(self)
     self.src_type = ""
     self.sink = None
     self.caps = None
     f = self.file
     if f:
         self.file = None
         f.close()
开发者ID:svn2github,项目名称:Xpra,代码行数:9,代码来源:src.py

示例6: get_info

 def get_info(self):
     info = SoundPipeline.get_info(self)
     if QUEUE_TIME>0:
         clt = self.queue.get_property("current-level-time")
         info["queue.used_pct"] = int(min(QUEUE_TIME, clt)*100.0/QUEUE_TIME)
         info["queue.overruns"] = self.overruns
         info["queue.state"] = self.queue_state
     return info
开发者ID:Brainiarc7,项目名称:xpra,代码行数:8,代码来源:sink.py

示例7: __init__

    def __init__(self, sink_type=DEFAULT_SINK, options={}, codec=MP3, decoder_options={}):
        assert sink_type in SINKS, "invalid sink: %s" % sink_type
        decoder, parser = get_decoder_parser(codec)
        SoundPipeline.__init__(self, codec)
        self.sink_type = sink_type
        decoder_str = plugin_str(decoder, decoder_options)
        pipeline_els = []
        pipeline_els.append("appsrc"+
                            " name=src"+
                            " max-bytes=32768"+
                            " emit-signals=0"+
                            " block=0"+
                            " is-live=0"+
                            " stream-type=stream"+
                            " format=4")
        pipeline_els.append(parser)
        pipeline_els.append(decoder_str)
        pipeline_els.append("audioconvert")
        pipeline_els.append("audioresample")
        queue_el =  ["queue",
                    "name=queue",
                    "max-size-buffers=0",
                    "max-size-bytes=0",
                    "max-size-time=%s" % QUEUE_TIME,
                    "leaky=%s" % QUEUE_LEAK]
        if QUEUE_SILENT:
            queue_el.append("silent=%s" % QUEUE_SILENT)
        pipeline_els.append(" ".join(queue_el))
        pipeline_els.append(sink_type)
        self.setup_pipeline_and_bus(pipeline_els)
        self.src = self.pipeline.get_by_name("src")
        self.queue = self.pipeline.get_by_name("queue")
        self.overruns = 0
        self.queue_state = "starting"
        if QUEUE_SILENT==0:
            self.queue.connect("overrun", self.queue_overrun)
            self.queue.connect("underrun", self.queue_underrun)
            self.queue.connect("running", self.queue_running)
            self.queue.connect("pushing", self.queue_pushing)
        if FAKE_OVERRUN>0:
 	    def fake_overrun(*args):
 	        self.emit("overrun", 500)
 	    gobject.timeout_add(FAKE_OVERRUN*1000, fake_overrun)
开发者ID:svn2github,项目名称:Xpra,代码行数:43,代码来源:sink.py

示例8: get_info

 def get_info(self):
     info = SoundPipeline.get_info(self)
     if self.queue:
         info["queue"] = {"cur" : self.queue.get_property("current-level-time")//MS_TO_NS}
     if self.buffer_latency:
         for x in ("actual-buffer-time", "actual-latency-time"):
             v = self.src.get_property(x)
             if v>=0:
                 info[x] = v
     return info
开发者ID:svn2github,项目名称:Xpra,代码行数:10,代码来源:src.py

示例9: __init__

 def __init__(self, sink_type=DEFAULT_SINK, options={}, codec=MP3, decoder_options={}):
     assert sink_type in SINKS, "invalid sink: %s" % sink_type
     decoder, parser = get_decoder_parser(codec)
     SoundPipeline.__init__(self, codec)
     self.add_signals(self.__generic_signals__)
     self.sink_type = sink_type
     decoder_str = plugin_str(decoder, decoder_options)
     pipeline_els = []
     pipeline_els.append("appsrc"+
                         " name=src"+
                         " max-bytes=32768"+
                         " emit-signals=0"+
                         " block=0"+
                         " is-live=0"+
                         " stream-type=stream"+
                         " format=4")
     pipeline_els.append(parser)
     pipeline_els.append(decoder_str)
     pipeline_els.append("audioconvert")
     pipeline_els.append("audioresample")
     queue_el =  "queue" + \
                 " name=queue"+ \
                 " max-size-buffers=0"+ \
                 " max-size-bytes=0"+ \
                 " max-size-time=%s" % QUEUE_TIME+ \
                 " leaky=%s" % QUEUE_LEAK
     if QUEUE_SILENT:
         queue_el.append(" silent=%s" % QUEUE_SILENT)
     pipeline_els.append(queue_el)
     pipeline_els.append(sink_type)
     self.setup_pipeline_and_bus(pipeline_els)
     self.src = self.pipeline.get_by_name("src")
     self.queue = self.pipeline.get_by_name("queue")
     self.overruns = 0
     self.queue_state = "starting"
     if QUEUE_SILENT==0:
         self.queue.connect("overrun", self.queue_overrun)
         self.queue.connect("underrun", self.queue_underrun)
         self.queue.connect("running", self.queue_running)
         self.queue.connect("pushing", self.queue_pushing)
开发者ID:svn2github,项目名称:Xpra,代码行数:40,代码来源:sink.py

示例10: __init__

 def __init__(self, sink_type=DEFAULT_SINK, options={}, codec=MP3, decoder_options={}):
     assert sink_type in SINKS, "invalid sink: %s" % sink_type
     decoder, parser = get_decoder_parser(codec)
     SoundPipeline.__init__(self, codec)
     self.sink_type = sink_type
     decoder_str = plugin_str(decoder, decoder_options)
     pipeline_els = []
     pipeline_els.append("appsrc name=src")
     pipeline_els.append(parser)
     pipeline_els.append(decoder_str)
     if VOLUME:
         pipeline_els.append("volume name=volume")
     pipeline_els.append("audioconvert")
     pipeline_els.append("audioresample")
     if QUEUE:
         if QUEUE_TIME>0:
             pipeline_els.append("queue name=queue max-size-time=%s leaky=%s" % (QUEUE_TIME, QUEUE_LEAK))
         else:
             pipeline_els.append("queue leaky=%s" % QUEUE_LEAK)
     pipeline_els.append(sink_type)
     self.setup_pipeline_and_bus(pipeline_els)
     self.volume = self.pipeline.get_by_name("volume")
     self.src = self.pipeline.get_by_name("src")
     self.src.set_property('emit-signals', True)
     self.src.set_property('stream-type', 'stream')
     self.src.set_property('block', False)
     self.src.set_property('format', 4)
     self.src.set_property('is-live', True)
     if QUEUE:
         self.queue = self.pipeline.get_by_name("queue")
         def overrun(*args):
             debug("sound sink queue overrun")
         def underrun(*args):
             debug("sound sink queue underrun")
         self.queue.connect("overrun", overrun)
         self.queue.connect("underrun", underrun)
     else:
         self.queue = None
     self.src.connect("need-data", self.need_data)
     self.src.connect("enough-data", self.on_enough_data)
开发者ID:svn2github,项目名称:Xpra,代码行数:40,代码来源:sink.py

示例11: __init__

 def __init__(self, src_type=DEFAULT_SRC, src_options={}, codec=MP3, encoder_options={}):
     assert src_type in SOURCES
     encoders = get_encoders(codec)
     assert len(encoders)>0, "no encoders found for %s" % codec
     SoundPipeline.__init__(self, codec)
     self.src_type = src_type
     source_str = plugin_str(src_type, src_options)
     encoder = encoders[0]
     encoder_str = plugin_str(encoder, encoder_options)
     pipeline_els = [source_str]
     pipeline_els += ["audioconvert",
                      "audioresample",
                     encoder_str,
                     "appsink name=sink"]
     self.setup_pipeline_and_bus(pipeline_els)
     self.sink = self.pipeline.get_by_name("sink")
     self.sink.set_property("emit-signals", True)
     self.sink.set_property("max-buffers", 10)
     self.sink.set_property("drop", False)
     self.sink.set_property("sync", True)
     self.sink.set_property("qos", False)
     self.sink.connect("new-buffer", self.on_new_buffer)
     self.sink.connect("new-preroll", self.on_new_preroll)
开发者ID:svn2github,项目名称:Xpra,代码行数:23,代码来源:src.py

示例12: get_info

 def get_info(self):
     info = SoundPipeline.get_info(self)
     if QUEUE_TIME>0:
         clt = self.queue.get_property("current-level-time")
         qmax = self.queue.get_property("max-size-time")
         qmin = self.queue.get_property("min-threshold-time")
         updict(info, "queue", {
             "min"           : qmin//MS_TO_NS,
             "max"           : qmax//MS_TO_NS,
             "cur"           : clt//MS_TO_NS,
             "pct"           : min(QUEUE_TIME, clt)*100//qmax,
             "overruns"      : self.overruns,
             "underruns"     : self.underruns,
             "state"         : self.queue_state})
     return info
开发者ID:svn2github,项目名称:Xpra,代码行数:15,代码来源:sink.py

示例13: get_info

 def get_info(self):
     info = SoundPipeline.get_info(self)
     if QUEUE_TIME > 0:
         clt = self.queue.get_property("current-level-time")
         updict(
             info,
             "queue",
             {
                 "time": int(QUEUE_TIME / MS_TO_NS),
                 "min_time": int(QUEUE_MIN_TIME / MS_TO_NS),
                 "used_pct": int(min(QUEUE_TIME, clt) * 100.0 / QUEUE_TIME),
                 "used": int(clt / MS_TO_NS),
                 "overruns": self.overruns,
                 "state": self.queue_state,
             },
         )
     return info
开发者ID:svn2github,项目名称:Xpra,代码行数:17,代码来源:sink.py

示例14: cleanup

 def cleanup(self):
     SoundPipeline.cleanup(self)
     self.sink_type = ""
     self.src = None
开发者ID:Brainiarc7,项目名称:xpra,代码行数:4,代码来源:sink.py

示例15: __init__

 def __init__(self, src_type=None, src_options={}, codecs=get_codecs(), codec_options={}, volume=1.0):
     if not src_type:
         try:
             from xpra.sound.pulseaudio.pulseaudio_util import get_pa_device_options
             monitor_devices = get_pa_device_options(True, False)
             log.info("found pulseaudio monitor devices: %s", monitor_devices)
         except ImportError as e:
             log.warn("Warning: pulseaudio is not available!")
             log.warn(" %s", e)
             monitor_devices = []
         if len(monitor_devices)==0:
             log.warn("could not detect any pulseaudio monitor devices")
             log.warn(" a test source will be used instead")
             src_type = "audiotestsrc"
             default_src_options = {"wave":2, "freq":100, "volume":0.4}
         else:
             monitor_device = monitor_devices.items()[0][0]
             log.info("using pulseaudio source device:")
             log.info(" '%s'", monitor_device)
             src_type = "pulsesrc"
             default_src_options = {"device" : monitor_device}
         src_options = default_src_options
     if src_type not in get_source_plugins():
         raise InitExit(1, "invalid source plugin '%s', valid options are: %s" % (src_type, ",".join(get_source_plugins())))
     matching = [x for x in CODEC_ORDER if (x in codecs and x in get_codecs())]
     log("SoundSource(..) found matching codecs %s", matching)
     if not matching:
         raise InitExit(1, "no matching codecs between arguments '%s' and supported list '%s'" % (csv(codecs), csv(get_codecs().keys())))
     codec = matching[0]
     encoder, fmt = get_encoder_formatter(codec)
     self.queue = None
     self.caps = None
     self.volume = None
     self.sink = None
     self.src = None
     self.src_type = src_type
     self.buffer_latency = False
     self.jitter_queue = None
     self.file = None
     SoundPipeline.__init__(self, codec)
     src_options["name"] = "src"
     source_str = plugin_str(src_type, src_options)
     #FIXME: this is ugly and relies on the fact that we don't pass any codec options to work!
     encoder_str = plugin_str(encoder, codec_options or get_encoder_default_options(encoder))
     fmt_str = plugin_str(fmt, MUXER_DEFAULT_OPTIONS.get(fmt, {}))
     pipeline_els = [source_str]
     if SOURCE_QUEUE_TIME>0:
         queue_el = ["queue",
                     "name=queue",
                     "min-threshold-time=0",
                     "max-size-buffers=0",
                     "max-size-bytes=0",
                     "max-size-time=%s" % (SOURCE_QUEUE_TIME*MS_TO_NS),
                     "leaky=%s" % GST_QUEUE_LEAK_DOWNSTREAM]
         pipeline_els += [" ".join(queue_el)]
     if encoder in ENCODER_NEEDS_AUDIOCONVERT or src_type in SOURCE_NEEDS_AUDIOCONVERT:
         pipeline_els += ["audioconvert"]
     pipeline_els.append("volume name=volume volume=%s" % volume)
     pipeline_els += [encoder_str,
                     fmt_str,
                     APPSINK]
     if not self.setup_pipeline_and_bus(pipeline_els):
         return
     self.volume = self.pipeline.get_by_name("volume")
     self.sink = self.pipeline.get_by_name("sink")
     if SOURCE_QUEUE_TIME>0:
         self.queue  = self.pipeline.get_by_name("queue")
     if self.queue:
         try:
             self.queue.set_property("silent", True)
         except Exception as e:
             log("cannot make queue silent: %s", e)
     try:
         if get_gst_version()<(1,0):
             self.sink.set_property("enable-last-buffer", False)
         else:
             self.sink.set_property("enable-last-sample", False)
     except Exception as e:
         log("failed to disable last buffer: %s", e)
     self.skipped_caps = set()
     if JITTER>0:
         self.jitter_queue = Queue()
     try:
         #Gst 1.0:
         self.sink.connect("new-sample", self.on_new_sample)
         self.sink.connect("new-preroll", self.on_new_preroll1)
     except:
         #Gst 0.10:
         self.sink.connect("new-buffer", self.on_new_buffer)
         self.sink.connect("new-preroll", self.on_new_preroll0)
     self.src = self.pipeline.get_by_name("src")
     try:
         for x in ("actual-buffer-time", "actual-latency-time"):
             #don't comment this out, it is used to verify the attributes are present:
             gstlog("initial %s: %s", x, self.src.get_property(x))
         self.buffer_latency = True
     except Exception as e:
         log.info("source %s does not support 'buffer-time' or 'latency-time':", self.src_type)
         log.info(" %s", e)
     else:
#.........这里部分代码省略.........
开发者ID:svn2github,项目名称:Xpra,代码行数:101,代码来源:src.py


注:本文中的xpra.sound.sound_pipeline.SoundPipeline类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。