рдпрд╣ рд╕рд╛рдордиреЗ рдЖрддрд╛ рд░рд╣рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд▓реЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ncmpcpp рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ
рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдлреАрдлреЛ рд╕рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреА рдЯреНрд░рд┐рдХ рджреБрдЧрдиреА рд╣реИред рдЖрдкрдХреЛ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд▓реЗрдЦрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЬрдм рддрдХ рдХреЛрдИ рдкрд╛рдардХ рди рд╣реЛ, рддрдм рддрдХ рд▓реЗрдЦрди рд╕реЙрдХреЗрдЯ рдЦреЛрд▓рдирд╛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдкрд╛рдардХ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рджреВрд╕рд░реЗ, рдпрджрд┐ рдмрдлрд░ рднрд░ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рд╣рд░реА рдкрд╛рдардХ рдкреАрдЫреЗ рд░рд╣ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдХреЛрдИ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдЖрдВрддрд░рд┐рдХ рдкрд╛рдардХ рдХреЛ рдмрдлрд░ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЗрд╕рдХреЗ рдореВрд▓ рд╕рд╛рд░ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреБрдЫ рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
import errno
import os
import stat
LINUX_FIFO_BUFFER_SIZE = 65536
class FifoStreamer(object):
def __init__(self, location):
self.location = location
self.reader = None
self.writer = None
def create(self):
try:
mode = os.stat(self.location).st_mode
if not stat.S_ISFIFO(mode):
raise Exception('File exists but is not a FIFO')
except OSError as e:
if e.errno == errno.ENOENT:
os.mkfifo(self.location)
else:
raise
# TODO: wrap in could not open reader / writer?
self.reader = os.open(self.location, os.O_NONBLOCK | os.O_RDONLY)
self.writer = os.open(self.location, os.O_NONBLOCK | os.O_WRONLY)
def close(self):
# TODO: make closing robust
os.close(self.writer)
os.close(self.reader)
def write(self, data):
while data:
try:
written = os.write(self.writer, data)
data = data[written:]
except OSError as e:
if e.errno == errno.EINTR:
continue
elif e.errno in (errno.EAGAIN, errno.EWOULDBLOCK):
self.flush()
else:
raise
def flush(self):
while True:
try:
if not os.read(self.reader, LINUX_FIFO_BUFFER_SIZE):
break
except OSError as e:
if e.errno in (errno.EAGAIN, errno.EWOULDBLOCK):
break
elif e.errno == errno.EINTR:
continue
else:
raise
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЛ рдЕрдм GStreamer рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред 0.10 рдорд╛рдирддреЗ рд╣реБрдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд╕рдВрдХреЛрдЪ рд╣реИ рдХрд┐ рд╣рдо 1.x рдХреА рдУрд░ рдмрдврд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЧреАрд░ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдЕрдЬрдЧрд░ рдореЗрдВ рддрддреНрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред 1.x рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдЙрд╕ рдкреИрдб рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЙрдмрд▓рддреА рд╣реИ рдЬрд┐рд╕реЗ рдмреЗрд╕рд╕рд┐рдВрдХ рдвреВрдВрдврдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рдПрдХ рд╕рд╛рджреЗ рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдмреЗрд╕рд╕рд┐рдВрдХ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рд╣реА рд╣реЛ рдЬрд╛рдПрдВред
import gobject
import pygst
pygst.require('0.10')
import gst
class FifoSink(gst.BaseSink):
__gstdetails__ = (
'FifoSink',
'Sink',
'Sink designed to handle FIFO output.',
'Mopidy')
__gsttemplates__ = (gst.PadTemplate('sink', gst.PAD_SINK, gst.PAD_ALWAYS,
gst.caps_new_any()),)
# TODO: don't allow changing location in flight, i.e. create getter/setter
location = gobject.property(type=str)
def __init__(self):
gst.BaseSink.__init__(self)
self.streamer = None
def do_start(self):
self.streamer = FifoStreamer(self.location)
self.streamer.create()
return True
def do_stop(self):
self.streamer.close()
return True
def do_render(self, buf):
try:
self.streamer.write(bytes(buf))
return gst.FLOW_OK
except OSError as e:
self.error("Failed: %s", e)
return gst.FLOW_ERROR
gobject.type_register(FifoSink)
gst.element_register(
FifoSink, 'fifosink', gst.RANK_MARGINAL)
if __name__ == '__main__':
import gobject
gobject.threads_init()
output = """
capsfilter caps="audio/x-raw-int,width=16,rate=44100,channels=1" !
tee name=t
t. ! queue ! alsasink
t. ! queue ! fifosink location=/tmp/test2.fifo
"""
sink = gst.parse_bin_from_description(
output, ghost_unconnected_pads=True)
playbin = gst.element_factory_make('playbin2')
playbin.set_property('audio_sink', sink)
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдерд╛, рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ncmpcpp рджреНрд╡рд╛рд░рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдСрдбрд┐рдпреЛ рдкреНрд░рд╛рд░реВрдк рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рднреВрд▓ рд░рд╣реА рдереА, рдЗрд╕рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдореЛрдиреЛ/рд╕реНрдЯреАрд░рд┐рдпреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред
рдпрд╣ рдХрд╣рд╛рдБ рдЧрдпрд╛? рдХреНрдпрд╛ рдЗрд╕реЗ рдореБрдЦреНрдп рдкреИрдХреЗрдЬ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛?
рдЗрд╕ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ GStreamer 1.0 рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рд╕рднреА рдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЕрдм рддрдХ рдкрд╛рдЗрдерди рдореЗрдВ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рд╣реБрдЖ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рд╕рдм рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реЛред
рдореИрдВ рдлреАрдлреЛ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ :)
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднреА-рдЕрднреА ncmpcpp рдХреЗ рдореНрдпреВрдЬрд╝рд┐рдХ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ mopidy рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЦреЛрдЬрд╛ рд╣реИред рдореИрдВ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред
рд╣рд╛рдВ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдорд┐рд▓рд╛ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛
рд╕реНрдЯреНрд░реАрдо рдХрд┐рдП рдЧрдП рд╕рдВрдЧреАрдд рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ,
2014-11-06 2:19 рдЬреАрдПрдордЯреА-05:00 рдмреНрд▓реЗрдХ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @
рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдирд╕реАрдПрдордкреАрд╕реАрдкреАрдкреА рдХреЗ рд╕рдВрдЧреАрдд рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЦреЛрдЬ рд▓рд┐рдпрд╛ рд╣реИ
рдореЛрдкрд┐рдбреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред рдореИрдВ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/mopidy/mopidy/issues/775#issuecomment -61936376ред
рдЬреАрд╕реНрдЯреНрд░реАрдорд░ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВ, рдХреНрдпрд╛ рдЖрдк рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
6 рдирд╡рдВрдмрд░ 2014 08:35 рдХреЛ, "рдбрд┐рдПрдЧреЛ рдмреЗрд░реЛрдХрд▓" рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
рд╣рд╛рдВ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдорд┐рд▓рд╛ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛
рд╕реНрдЯреНрд░реАрдо рдХрд┐рдП рдЧрдП рд╕рдВрдЧреАрдд рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ,
2014-11-06 2:19 рдЬреАрдПрдордЯреА-05:00 рдмреНрд▓реЗрдХ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @
рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕реЗ ncmpcpp рдХреЗ рд╕рдВрдЧреАрдд рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЦреЛрдЬрд╛ рд╣реИ
рдкреНрд░рддрд┐
рдореЛрдкрд┐рдбреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВред рдореИрдВ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/mopidy/mopidy/issues/775#issuecomment -61936376ред
-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/mopidy/mopidy/issues/775#issuecomment -62007426ред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡реЗ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рдЕрдкрдиреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реИрдВред
рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ? mopidy рдХреЗ рд╕рд╛рде ncmpcpp рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ GStreamer рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ GStreamer 1.x рдкрд░ рд░реЛрдХ рджреЗрдЧрд╛ред
рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд╕рдорд░реНрдерди рд╡рд╛рдкрд╕ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдпрд╣ рдЖрдИрдПрдордУ рднреА рдЕрд╡рд░реБрджреНрдз рд╣реИред
рдмрд╕ рдпрд╣ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП рдХрд┐ Mopidy/ncmpcpp рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдореИрдВ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖрдпрд╛ рдерд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛, рднрд▓реЗ рд╣реА рдЗрд╕ рдкрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реЛред рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЕрдкрдирд╛ рдЕрддреНрдпрдВрдд рд╕рдореНрдорд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдЕрдкрдирд╛ рд╕рдордп рджреЗрддреЗ рд╣реИрдВред :рдореБрд╕реНрдХреБрд░рд╛рдУ:
рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдпрд╣ рджреВрд░ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред Mopidy рдХреА рд╢рдХреНрддрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдирд┐рдЬреА рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдлреАрдлреЛ рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░ рдХрд╛ рдПрдХ рдмрд╣реБрдд рдкреЛрд░реНрдЯреЗрдмрд▓ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЖрдИрдПрдордУ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдирдХреЗ рдХреБрдЫ рдмреБрд░реЗ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рднреА рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдпреВрдбреАрдкреА рд╕рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдкреИрдХреЗрдЯ рдХреЛ рдбрдВрдк рдХрд░рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИрдВ .... рдпреВрдбреАрдкреА рдкреЛрд░реНрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд▓рд╛рдЗрди (рдиреЗрдЯрдХреИрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдФрд░ рдЗрд╕реЗ рдлреАрдлреЛ рдХреЛ рд▓рд┐рдЦреЗрдВред
рдпрд╣ рдЕрдЪреНрдЫрд╛ рд░рд╣реЗрдЧрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдЭреВрда рдмреЛрд▓реЗрдВ ncmpcpp рднреА рдЗрд╕реЗ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рдПрдХ рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░ рдкрд▓реНрд╕рдСрдбрд┐рдпреЛ рдХрд╛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЛрдкрд┐рдбреА рдХреА рдУрд░ рд╕реЗ рдХрд┐рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдореИрдВрдиреЗ рдЬреЛ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдпрд╛ рд╣реИ рд╡рд╣ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкрд▓реНрд╕рдСрдбрд┐рдпреЛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреАрд╕реАрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред ncmpcpp рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЬреЛ рдкрдврд╝рд╛ рд╣реИ, рдЙрд╕рд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рд╕рд┐рд░реНрдл рдирдореВрдиреЗ рдХреЗ рдмреНрд▓реЙрдХ рдкрд░ рдПрдХ рдПрдлрдПрдлрдЯреА рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдлреАрдлреЛ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЬреЛ рдмрд┐рдВрджреБ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк mkfifo
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЛрдкрд┐рдбреА рдХреЗ рдмрд╛рд╣рд░ рдПрдХ рдлреАрдлреЛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ netcat
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЛрдкрд┐рдбреА рд╕реЗ рдпреВрдбреАрдкреА рдбреЗрдЯрд╛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ netcat
рд╕реЗ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдлреАрдлреЛ рдлрд╝рд╛рдЗрд▓ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЬрд╣рд╛рдВ рддрдХ ncmpcpp
рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ, рдХреБрдЫ рднреА рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдлреАрдлреЛ рдлрд╛рдЗрд▓ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИред
Mopidy рдкрд░ рдЖрдк рдЬреЛ рд▓рдХреНрд╖реНрдп рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдСрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ udpsink GStreamer рддрддреНрд╡ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ "рдЯреА" рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдЬреЛ рдЖрдкрдХреЗ рдПрдПрд▓рдПрд╕рдП/рдкрд▓реНрд╕ рд╕рд┐рдВрдХ рдФрд░ udpsink рджреЛрдиреЛрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП .... рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдЯреНрд╡реАрдХрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
Mopidy рдСрдбрд┐рдпреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ:
output = tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink port=5555
рдЕрдкрдиреЗ рд▓рд┐рдирдХреНрд╕ рд╣реЛрд╕реНрдЯ рдкрд░, рдкреЛрд░реНрдЯ 5555 рдкрд░ рдпреВрдбреАрдкреА рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрдЯрдХреИрдЯ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ рдФрд░ рдирдореВрдиреЗ рдХреЛ рдлреАрдлреЛ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдВ:
mkfifo /tmp/mopidy.fifo
nc -u -l 127.0.0.1 5555 > /tmp/mopidy.fifo &
рдЖрдкрдХреЗ mpd.conf рдореЗрдВ:
audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mopidy.fifo"
format "44100:16:2"
}
рдиреЛрдЯ: рдпрджрд┐ рдЖрдк рдкрд▓реНрд╕рдСрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдЯреАрд╕реАрдкреА рджрд┐рд╢рд╛ рдХрдиреЗрдХреНрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрдХреЛ рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдЗрдВрдЬреАрдирд┐рдпрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдХрдЪреНрдЪреЗ рд╕рд┐рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдзрдиреНрдпрд╡рд╛рдж @ liamw9534 рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдореБрдЭреЗ рдХреБрдЫ рд╕рдордп рд▓рдЧреЗрдЧрд╛ рдпрд╛ рдпрд╣ рднреА рдкрддрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдореИрдВ рдЗрд╕реЗ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдлреАрдлреЛ рдХреЛ рдЦрд╛рд▓реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рддреЛ рдпрд╣ рдореБрджреНрджреЛрдВ рдореЗрдВ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдиреЗрдЯрдХреИрдЯ рдХрд░реНрдиреЗрд▓ рдмрдлрд░ рднрд░ рджреЗрдЧрд╛ рдФрд░ рдлрд┐рд░ рдЕрд╕рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ FIFO рдХреИрд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдк рднреА рдореБрджреНрджреЛрдВ рдореЗрдВ рднрд╛рдЧ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ FIFO рдХреЛ рдПрдХ рдкрд╛рдардХ рдХреЛ рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд╕реНрдерд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ: /
рд▓реЗрдХрд┐рди рдЖрдк рдпреВрдбреАрдкреА рдбреЗрдЯрд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдлреАрдлреЛрд╕реНрдЯреНрд░реАрдорд░ рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдзрд┐рдХрд╛рдВрд╢ рддреНрд░реБрдЯрд┐ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЖрдк рд╡рд╣рд╛рдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
@adamcik рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рддреЛ рдореБрдЭреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ docker-ncmpcpp рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рдЖрдЙрдЯрдкреБрдЯ рдЯреНрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ UDP рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП docker-mopidy рдХреЛ рднреА
рдореИрдВрдиреЗ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдкрд░ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдкреНрд░рдпреЛрдЧ рдХрд┐рдП рдФрд░ рдпрд╣ рд╕рдм рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдмрд╢рд░реНрддреЗ рдЖрдк рдХрдиреЗрдХреНрд╢рди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреИрд╕реЗ nc -kluw 1 127.0.0.1 5555 > /tmp/mopidy.fifo
ред рдпрд╣ рдиреЗрдЯрдХреИрдЯ рдХреЛ рдЕрдВрддрд┐рдо рдХрдиреЗрдХреНрд╢рди рдбреНрд░реЙрдк (1s рдЯрд╛рдЗрдордЖрдЙрдЯ) рдХреЗ рдмрд╛рдж рд╣рдореЗрд╢рд╛ рдПрдХ рдирдпрд╛ рд╕реНрд░реЛрдд рдкреЛрд░реНрдЯ рдХрдиреЗрдХреНрд╢рди рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рдХрдорд╛рдВрдб рдлреАрдлреЛ рдлрд╛рдЗрд▓ рд╕реЗ рдХреБрдЫ рднреА рдкрдврд╝ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдП рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рдлреАрдлреЛ рдлрд╛рдЗрд▓ рд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░реБрдХ рдЬрд╛рддреА рд╣реИ рдФрд░ рдлрд╛рдЗрд▓ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреА рд╣реИред
@wernight рдЗрд╕ рдмрдЧ рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрдЦреЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╕ рдЗрддрдирд╛ рд╣реА рдХреЛрдб рд╣реИред
рдФрд░ рд╕рд┐рд░реНрдл рдмреЗрд▓реНрдЯ рдФрд░ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓реВрдк рдореЗрдВ рдХрдорд╛рдВрдб рдЪрд┐рдкрдХрд╛ рджреВрдВрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, while :; do nc -kluw 1 127.0.0.1 5555> /tmp/mopidy.fifo; sleep 1; done
- рдЕрдЧрд░ рдпрд╣ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рддреЛ рдпрд╣ 1 рд╕реЗрдХрдВрдб рдХреА рджреЗрд░реА рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рд▓реЙрдиреНрдЪ рд╣реЛрдЧрд╛ред
@ liamw9534 рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ mpd.conf рд╣реИред рдореИрдВ рдЗрд╕рд╕реЗ рднреНрд░рдорд┐рдд рд╣реВрдВред рдЖрдк mopidy-mpd рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди MPD рд╕рд░реНрд╡рд░ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ?
@lrvick рд╣рд╛рдБ рдореЗрд░реА рдЧрд▓рддреА, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣реА рдереА рдЬрд┐рд╕реЗ ~/.ncmpcpp/config рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
.config/mopidy/mopidy.conf
...
[audio]
output = tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink port=5555
$ mkfifo /tmp/mopidy.fifo
$ while :; do nc -kluw 1 127.0.0.1 -p 5555> /tmp/mopidy.fifo; sleep 1; done
(рдпрд╣рд╛рдВ -p
рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛)ред
~/.ncmpcpp/config
audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mopidy.fifo"
format "44100:16:2"
}
( wernight/docker-mopidy рдФрд░ wernight/docker-ncmpcpp рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЧрдпрд╛ )
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ 5555 рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА Mopidy рдХрд╛ рд▓реЙрдЧ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ output
рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдордЭрддрд╛ рд╣реИред netstat
5555 рдкрд░ рдХреЛрдИ рдЦреБрд▓рд╛ рдпреВрдбреАрдкреА рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдореИрдВ output
рд▓рд╛рдЗрди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рд╕рдордЭрддрд╛: tee
рдПрдХ рдмреИрд╢ рдХрдорд╛рдВрдб рд╣реИ, рдмрд╛рдХреА рдореЛрдкрд┐рдбреА рд╕рд╛рдорд╛рди рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореБрдЭреЗ рд╕рдВрдЧреАрдд рдмрдЬрд╛рддреЗ рд╕рдордп udp6 [::]:51307
ред
output
рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ GstBin
рддрддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ Mopidy рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ playbin2
рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИ - рд╣реБрдб рдХреЗ рддрд╣рдд рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ Gstreamer рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИред tee
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ Gstreamer рддрддреНрд╡ рд╣реИред рдЗрд╕рдХрд╛ рд╢реЗрд▓ рдХрдорд╛рдВрдб tee
ред
рддреЛ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдкрд░ Mopidy рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдХреБрдЫ рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ:
gst-launch audiotestsrc ! tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink port=5555 &
рдпрд╣ рдПрдХ рд╕рд╛рдЗрдирд╕реЙрдЗрдбрд▓ рдЯреЛрди рдмрдЬрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред рдлрд┐рд░ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдПрдБ:
nc -kluw 1 127.0.0.1 5555
рдлрд┐рд░ рдореИрдВ рдЕрдкрдиреЗ рдбрд┐рд╕реНрдкреНрд▓реЗ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдЬреАрдм рдЕрдХреНрд╖рд░ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ .... рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рд╣реИ рдЬреЛ nc
рд╕реЗ stdout рдЖрдЙрдЯрдкреБрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рд╕рд╛рдмрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЙрд╕реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджреЛрд╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВ?
рдлрд┐рд░ рдЖрдк рджреВрд╕рд░реЗ рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдлреАрдлреЛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк cat
рдлреАрдлреЛ рдХреЛ рд╕реНрдЯрдбрдЖрдЙрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реАрдВ рдЕрдЬреАрдм рдкрд╛рддреНрд░реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ ncmpcpp
рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рд╛рд░реВрдк рдХреЛ рднреА рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪреВрдВрдЧрд╛ред рдореИрдВрдиреЗ https://wiki.archlinux.org/index.php/Ncmpcpp#Enabling_visualization рдкрд░ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирдЬрд╝рд░
visualizer_fifo_path = "/tmp/mpd.fifo"
visualizer_output_name = "my_fifo"
visualizer_sync_interval = "30"
visualizer_in_stereo = "yes"
visualizer_type = "spectrum" (spectrum/wave)
рдореИрдВ ncmpcpp
рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рдЗрд╕рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдпрд╣рд╛рдВ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ...
$ apt-get install gstreamer-tools
$ gst-launch audiotestsrc ! tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink port=5555 &
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstPulseSinkClock
$ nc -kluw 1 127.0.0.1 -p 5555
no connection : Connection timed out
( nc ... -p
рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ)
рдореИрдВ рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реНрд╡рд░ рдмрдЬрд╛рддрд╛ рд╕реБрдирддрд╛ рд╣реВрдБред
рдЖрдк рдХрд┐рд╕ рдбрд┐рд╕реНрдЯреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рд╕рд╛рде рд╣реА рдЬрдм рдЖрдк nc -h
рдЯрд╛рдЗрдк рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
$ nc -h
OpenBSD netcat (Debian patchlevel 1.89-4ubuntu1)
This is nc from the netcat-openbsd package. An alternative nc is available
in the netcat-traditional package.
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-P proxy_username] [-p source_port]
[-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol]
[-x proxy_address[:port]] [hostname] [port[s]]
Command Summary:
-4 Use IPv4
-6 Use IPv6
-D Enable the debug socket option
-d Detach from stdin
-h This help text
-i secs Delay interval for lines sent, ports scanned
-k Keep inbound sockets open for multiple connects
-l Listen mode, for inbound connects
-n Suppress name/port resolutions
-P proxyuser Username for proxy authentication
-p port Specify local port for remote connects
-q secs quit after EOF on stdin and delay of secs
-r Randomize remote ports
-S Enable the TCP MD5 signature option
-s addr Local source address
-T ToS Set IP Type of Service
-C Send CRLF as line-ending
-t Answer TELNET negotiation
-U Use UNIX domain socket
-u UDP mode
-Z DCCP mode
-v Verbose
-w secs Timeout for connects and final net reads
-X proto Proxy protocol: "4", "5" (SOCKS) or "connect"
-x addr[:port] Specify proxy address and port
-z Zero-I/O mode [used for scanning]
Port numbers can be individual or ranges: lo-hi [inclusive]
-p
рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ nc
рдореИрдВ рдЙрдмрдВрдЯреВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрди рдкреЗрдЬ рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рдпрд╣ рднреА рд╣реИ рдХрд┐ -p
рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП -l
:
-l Used to specify that nc should listen for an incoming connection
rather than initiate a connection to a remote host. It is an error
to use this option in conjunction with the -p, -s, or -z options.
Additionally, any timeouts specified with the -w option are ignored.
рдбреЗрдмрд┐рдпрди рд╡реНрд╣реАрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
рдбреЙрдХрд░ рдХреЛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдмрдВрдЯреВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдЪрд░рдг рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╣реИрдВ:
$ wget -qO- https://get.docker.com/ | sh
$ sudo gpasswd -a ${USER} docker
$ docker run --rm -it \
-e PULSE_SERVER=tcp:$(hostname -i):4713 \
-e PULSE_COOKIE_DATA=$(pax11publish -d | grep --color=never -Po '(?<=^Cookie: ).*') \
debian:wheezy
$ apt-get update && apt-get install -y netcat
$ nc -h
[v1.10-40]
connect to somewhere: nc [-options] hostname port[s] [ports] ...
listen for inbound: nc -l -p port [-options] [hostname] [port]
options:
-c shell commands as `-e'; use /bin/sh to exec [dangerous!!]
-e filename program to exec after connect [dangerous!!]
-b allow broadcasts
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h this cruft
-i secs delay interval for lines sent, ports scanned
-k set keepalive option on socket
-l listen mode, for inbound connects
-n numeric-only IP addresses, no DNS
-o file hex dump of traffic
-p port local port number
-r randomize local and remote ports
-q secs quit after EOF on stdin and delay of secs
-s addr local source address
-T tos set Type Of Service
-t answer TELNET negotiation
-u UDP mode
-v verbose [use twice to be more verbose]
-w secs timeout for connects and final net reads
-z zero-I/O mode [used for scanning]
port numbers can be individual or ranges: lo-hi [inclusive];
hyphens in port names must be backslash escaped (e.g. 'ftp\-data').
$ nc -kluw 1 127.0.0.1 5555
UDP listen needs -p arg
$ apt-get install -y net-tools gstreamer-tools gstreamer0.10-plugins-good
$ echo -ne $(echo $PULSE_COOKIE_DATA | sed -e 's/../\\x&/g') >$HOME/pulse.cookie
$ export PULSE_COOKIE=$HOME/pulse.cookie
$ gst-launch audiotestsrc ! tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink port=5555 &
$ nc -kluw 1 127.0.0.1 -p 5555
no connection : Connection timed out
netcat-openbsd
рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬреЛ рджреЗрддрд╛ рд╣реИ:
$ nc -h
OpenBSD netcat (Debian patchlevel 1.105-7)
...
рдЕрдм nc
рд╕реНрд╡рд░ рдмрдЬрдиреЗ рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ (рдЬреЛ рдХреБрдЫ рд╣рдж рддрдХ рдмреЗрд╣рддрд░ рд▓рдЧрддрд╛ рд╣реИ):
$ nc -kluw 1 127.0.0.1 5555
(nothing here)
рдареАрдХ рд╣реИ, рджреЛ рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдкрд╣рд▓реЗ рдЯрд░реНрдорд┐рдирд▓ рд░рди рдореЗрдВ:
nc -kluw 1 127.0.0.1 5555
рдлрд┐рд░ рджреВрд╕рд░реЗ рдЯрд░реНрдорд┐рдирд▓ рд░рди рдореЗрдВ:
nc -u 127.0.0.1 5555
рджреВрд╕рд░реЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рд╕реНрдЯрдб рдкрд░ рдХреБрдЫ рдЕрдХреНрд╖рд░ рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ ENTER рджрдмрд╛рдПрдБред рдХреНрдпрд╛ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣реА рдЕрдХреНрд╖рд░ stdout рдкрд░ рдкрд╣рд▓реЗ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ?
рд╣рд╛рдБ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЗрд╕реЗ рдХреНрд░реЙрд╕ рдбреЙрдХрд░реНрд╕ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:
$ docker run --rm --name nc1 -it my-debian-with-nc nc -kluw 1 0.0.0.0 5555
Hello
$ docker run --rm --link nc1:nc1 -it my-debian-with-nc nc -u nc1 5555
Hello
рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ nc
рдиреЗ gst-launch
рд╕рд╛рде рдХреБрдЫ рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ host=SOMETHING
рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рд╕рд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдПрдХ рдХрдВрдЯреЗрдирд░ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдЖрд╣! рдЕрдЧрд░ рдореИрдВ host=0.0.0.0
рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
рдХреНрдпрд╛ рдЖрдкрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ? рдореИрдВрдиреЗ рдорд╛рди рд▓рд┐рдпрд╛ рдерд╛ рдХрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдкреИрдХреЗрдЯ рдХреА рдЬрд░реВрд░рдд рд╣реИред udpsink host=0.0.0.0 port=5555
рд╕реЗ рдкреИрдХреЗрдЯ рдЖрдкрдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╣рд░ рдЬрдЧрд╣ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрдВрдЧреЗред рд╢рд╛рдпрдж рд╡реЛ рдирд╣реАрдВ рдЬреЛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ...
рдкреИрдХреЗрдЯ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд▓реВрдкрдмреИрдХ рдореЗрдВ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ host=127.0.0.1
рдХрд╣рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореБрджреНрджрд╛ рдЗрд╕рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдЯрд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░, рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдкреИрдХреЗрдЯреНрд╕ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрднрд╡рддрдГ gstreamer рддрддреНрд╡ рдХреЗ рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдг рдпрд╛ ip рд░реВрдЯрд┐рдВрдЧ рд╕реЗрдЯрдЕрдк рдореЗрдВ рдЕрдВрддрд░ред
рдХрдВрдЯреЗрдирд░ рд╕реЗ рдореБрдЭреЗ рдорд╢реАрди рдХреЗ 0.0.0.0 рдпрд╛ рд╕рдВрднрд╡ рдЖрдИрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ред рдПрдХ рдорд╢реАрди/рдХрдВрдЯреЗрдирд░ рдкрд░ рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реА рдереАред
рд▓реЗрдХрд┐рди рд╣рд╛рдБ рдореБрдЭреЗ рдЕрдм рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ ncmpcpp рдФрд░ mopidy рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╣реИрдВред рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣, рд▓реЗрдХрд┐рди рдпрд╣ рдереЛрдбрд╝реА рдкрд░реЗрд╢рд╛рдиреА рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ:
ncmpcpp рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдВрдЧреАрдд рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП MPD рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА ncmpcpp рдХрд╛ IP рдЬреНрдЮрд╛рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ UDP рдкреИрдХреЗрдЯ рдХреЛ рдЙрд╕рдХреЗ IP рдкрд░ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП; рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрдИрдкреА рдХреЛ Mopidy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдореИрдВ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ:
--net=container:NAME_or_ID
рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрд╕реНрдЯ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░реЗрдЧрд╛!рдЗрд╕ рдкрд░рд┐рдкрддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рдЕрднреА рднреА рдПрдХ рднрдпрд╛рдирдХ рд╣реИрдХ рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдВрдд рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ nc
рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж liamw9534, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рд╡рд┐рджреЗрд╢реА рдерд╛ред
FIFO рдЙрд╕ There is no output named "my_fifo"!
рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдирд╛рдо рдХреЛ mdp.conf
рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рд╣реИ:
audio_output {
type "fifo"
name "my_fifo"
path "/tmp/mpd.fifo"
format "44100:16:2"
}
рдореИрдВ рдлреАрдлреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдпрджрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдСрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ Mopidy рдореЗрдВ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорддрд▓реА (рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░-рдУрдиреА) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╕рдорд╛рди рд╣реИрдВред
рдореБрдЭреЗ visualizer_output_name
рдХрд╛ рдпрд╣
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ "рд╡рд┐рднрд┐рдиреНрди рдиреЗрдЯрд╡рд░реНрдХ рдкрд░" рдХрд╣рдХрд░ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдпрджрд┐ рдЖрдк рдСрдбрд┐рдпреЛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ 127.0.0.1
рд▓рд┐рдП udpsink
рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк 0.0.0.0
рдЪреБрдирддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреИрдХреЗрдЯ рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдпреВрдбреАрдкреА рдкреИрдХреЗрдЯ рднреЗрдЬрдирд╛ .... рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдпрд╛рддрд╛рдпрд╛рдд рдПрдХ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░реЗрдЧрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреИрдВрдбрд╡рд┐рдбреНрде рдпрд╛рдиреА 2 x 16 x 44100 = 1.41 рдПрдордмреАрдкреАрдПрд╕ред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, nc
рдХреЛ 0.0.0.0
рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рднрд▓реЗ рд╣реА udpsink
рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдпрд╣ рд╕рднреА рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рд╕реБрдиреЗрдЧрд╛ред рдпрд╣ рддрдм рддрдХ рдареАрдХ рд╣реИ рдЬрдм рддрдХ рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЖрдИрдкреА рдкреЛрд░реНрдЯ рдирдВрдмрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рд╕реБрдЭрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рджреЛрдиреЛрдВ рдХреЛ рдПрдХ рд╣реА рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд░рдЦрд╛ред рд╡реИрд╕реЗ рднреА рд╡реЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдерд╛рдиреАрдп рд╣реИрдВ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдЕрд▓рдЧрд╛рд╡ рд╣реИред рдпрд╣ рдлреАрдлреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрд╕ ncmpcpp рдЗрд╕реЗ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИ (рдореЗрд░реА рдкрд┐рдЫрд▓реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЦреЗрдВ, рдКрдкрд░ 2)ред
рдЙрд╕ рдЪреИрдирд▓ рдХреЗ рдирд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░? рдпрд╛ рдЕрдЧрд░ рдлреАрдлреЛ рдХреЗ рд▓рд┐рдП mpd.conf
рдЬреИрд╕рд╛ рдХреЛрдИ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ? рдмрд┐рдирд╛ рдХрд╛рдо рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд▓рдЧрддрд╛ред
рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ mpd.conf
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдПрдордкреАрдбреА рдбреЗрдореЙрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдмреЗрдорд╛рдиреА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ mopidy MPD рдбреЗрдореЙрди рд╣реИ рдФрд░ рдЖрдкрдХрд╛ рдбреЙрдХрдЯрд░ FIFO рдлрд╛рдЗрд▓ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред рдХрд┐рд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП .ncmpcpp/config
рдХрд╛ рдорд┐рд▓рд╛рди рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд╣реИ рдирд╛?
рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ visualizer_output_name = "my_fifo"
рдХреЛ audio_output { name "my_fifo" }
рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд░реНрддрдорд╛рди рдореЗрдВ ncmpcpp There is no output named "my_fifo"
рджрд┐рдЦрд╛рддрд╛ рд╣реИред visualizer_output_name
рдХрд╛ рд╡рд┐рд╡рд░рдг рдКрдкрд░ рд╕рд┐рд░реНрдл 5 рдкреЛрд╕реНрдЯ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рд╕реАрдзреЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рд╕рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдореИрдВ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ visualizer_output_name
рдЖрдкрдХреЗ рдПрдордкреАрдбреА (рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╣реАрдВ) рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрд╛рдиреА mpc outputs
)ред Mopidy рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ MPD рдЖрдЙрдЯрдкреБрдЯ рд╣реИ: "рдореНрдпреВрдЯ"ред
рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЖрдк рд╢рд╛рдпрдж visualizer_output_name
рдХреЛ рдЕрдирд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред
рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдЕрднреА рднреА рдХреЛрдИ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИред рдореИрдВ udpsink
рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ: рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 44100:16:2
рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ( ncmpcpp
рдпрд╛ nausea
)ред
Mute
рдХреЛрд╢рд┐рд╢ рдХреА, рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдмрд╣реБрдд рд╣реА рдордЬреЗрджрд╛рд░ рдЕрдиреБрднрд╡ рдорд┐рд▓рд╛: рдпрд╣ рд╕рд┐рд░реНрдл рдзреНрд╡рдирд┐ рдХреЛ рдореНрдпреВрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдП, рд▓реЗрдХрд┐рди рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рджрд┐рдЦрд╛рдП рдмрд┐рдирд╛ рднреАред рдпрд╛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рдЗрд╕рдиреЗ Mute
рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ред
рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП FFT рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛рдБ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдпрд╣ рдлреАрдлреЛ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдпрд╛ рдлреАрдлреЛ рдХреЗ рдЗрдирдкреБрдЯ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдЖрдк
рдПрдордкреАрдбреА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдлреАрдлреЛ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдпрд╛ рддреЛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдХ рд░рд╛рдХреНрд╖рд╕реА рд░реВрдк рд╕реЗ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдпреЗред
рдЖрдкрдХреЛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдПрдлрдПрдлрдЯреА рдХрд╣рд╛рдВ рд╣реИ
рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд┐рд░ рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЪреБрдиреЗрдВред рдЕрдЧрд░ рдПрдлрдПрдлрдЯреА рд╣реИ
рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рдпрд╛рд╕ рдХреА рдкреВрд░реА рдмрд░реНрдмрд╛рджреА рд╣реЛрдЧреА
рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВред
13 рдордИ 2015 рдХреЛ 15:09 рдмрдЬреЗ, рд╡рд░реНрдирд░ рдмреЗрд░реМрдХреНрд╕ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдпрд╛ рддреЛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╣ рд╣реЛрдЧрд╛
рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рд░рд╛рдХреНрд╖рд╕реА рд░реВрдк рд╕реЗ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/mopidy/mopidy/issues/775#issuecomment -101676033ред
FFT рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП FIFO рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдбрд┐рдпреЛ рдкреНрд░рд╛рд░реВрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рдВрджрд░реНрдн: http://git.2f30.org/nausea/about/
рдЕрдЪреНрдЫрд╛ - рддреЛ рдЙрд╕рдХреЗ рдХрд╛рдо рди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ! рдХреНрдпрд╛ рдЖрдкрдиреЗ рдХрд┐рдпрд╛ рд╣реИ
рдПрдХ рдорд╛рдирдХ MPD рдбреЗрдореЙрди рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕рд╛рде-рд╕рд╛рде рддреБрд▓рдирд╛ a . рдХреЗ рд╕рд╛рде
рд╕реНрдерд╛рдиреАрдп рдПрдирд╕реАрдПрдордкреАрд╕реАрдкреАрдкреА рдХреНрд▓рд╛рдЗрдВрдЯ? рдпрджрд┐ рдЖрдк рджреЛрдиреЛрдВ рдореЗрдВ FIFO рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХрд╛ рдирд╛рдо рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЗрдВ? рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдмрд╕ рдпрд╣ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ a
рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб рдкрде рдХрд╣реАрдВ рдореМрдЬреВрдж рд╣реИ ...
13 рдордИ 2015 рдХреЛ 15:57 рдмрдЬреЗ, рд╡рд░реНрдирд░ рдмреЗрд░реМрдХреНрд╕ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
FFT рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдСрдбрд┐рдпреЛ рдкреНрд░рд╛рд░реВрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рдЙрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреАрдлреЛ рдореЗрдВред рд╕рдВрджрд░реНрдн: http://git.2f30.org/nausea/about/-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/mopidy/mopidy/issues/775#issuecomment -101702624ред
рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА ncmpcpp рд╕реНрд░реЛрдд рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдереАред
Mopidy рдХрд╛ рдореНрдпреВрдЯ рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рд╣реИ рдЕрд░реНрдерд╛рдд рдСрдбрд┐рдпреЛ рдореНрдпреВрдЯ рдирд╣реАрдВ рд╣реИред Ncmpcpp рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд▓реЗ рд▓реЗрдЧрд╛, рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрдЧрд╛ (рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ) рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдСрдбрд┐рдпреЛ рдХреЛ рдореНрдпреВрдЯ рдХрд░ рджреЗрдЧрд╛ред рдпрдХреАрдирди рдЙрдиреНрд╣реЗрдВ рдЗрд╕реЗ рд╕рд┐рд░реНрдл рджреЛ рдмрд╛рд░ рдЯреЙрдЧрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдСрдбрд┐рдпреЛ рдХреЗ рдЧрд▓рдд рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рд╣реЛрдиреЗ рдХреА рдПрдХ рдЕрдЪреНрдЫреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ gstreamer рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ @adamcik рдХреЗ рдКрдкрд░ рдЙрд╕рдХреЗ рдХреЛрдб рдХреЗ рд╡рд┐рдкрд░реАрдд рд╕рд╣реА рд╣реИред
рдпрд╣ рджреЗрдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░реВрдк рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддреА рд╣реИ .... рдпрд╣ 16-рдмрд┐рдЯ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИ
рдкреВрд░реНрдгрд╛рдВрдХред рд╕рдмрд╕реЗ рдмреБрд░рд╛ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрд▓/рдЖрд░ рдЪреИрдирд▓реЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рдХрд░реЗрдВ?
13 рдордИ 2015 рдХреЛ 16:33 рдмрдЬреЗ, рдирд┐рдХ рд╕реНрдЯреАрд▓ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА ncmpcpp рд╕реНрд░реЛрдд рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдереА
http://git.musicpd.org/cgit/mirror/ncmpcpp.git/tree/src/visualizer.cppредMopidy рдХрд╛ рдореНрдпреВрдЯ рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рд╣реИ рдЕрд░реНрдерд╛рдд рдСрдбрд┐рдпреЛ рдореНрдпреВрдЯ рдирд╣реАрдВ рд╣реИред
Ncmpcpp рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рд▓реЗрдЧрд╛, рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ (рдирд╣реАрдВ
рдкреНрд░рднрд╛рд╡) рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдСрдбрд┐рдпреЛ рдХреЛ рдореНрдпреВрдЯ рдХрд░ рджреЗрдВред рдпрдХреАрдирди рдЙрдиреНрд╣реЗрдВ рдЪрд╛рд╣рд┐рдП
рдмрд╕ рдЗрд╕реЗ рджреЛ рдмрд╛рд░ рдЯреЙрдЧрд▓ рдХрд░реЗрдВредрдСрдбрд┐рдпреЛ рдХреЗ рдЧрд▓рдд рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рд╣реЛрдиреЗ рдХреА рдПрдХ рдЕрдЪреНрдЫреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ @adamcik . рдХреЗ рд╡рд┐рдкрд░реАрдд рд╕рд╣реА рд╣реИ, рдЖрдкрдХреЗ gstreamer рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ
https://github.com/adamcik рдХреЗ рдКрдкрд░ рдЙрдирдХреЗ рдХреЛрдб рдореЗрдВ рдерд╛ред-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/mopidy/mopidy/issues/775#issuecomment -101716947ред
рдФрд░ рднрд▓реЗ рд╣реА рдмрд╛рдЗрдЯ рдСрд░реНрдбрд░рд┐рдВрдЧ рдЧрд▓рдд рд╣реЛ, рдлрд┐рд░ рднреА рдЖрдк FFT . рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдЧрд▓рдд рдЖрд╡реГрддреНрддрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ ...... рд▓реЗрдХрд┐рди рдЖрдк рдЕрднреА рднреА рджреЗрдЦреЗрдВрдЧреЗ
рдХреЛрдИ рдЪреАрдЬрд╝ред
13 рдордИ 2015 рдХреЛ 16:37 рдмрдЬреЗ, рд▓рд┐рдпрд╛рдо рд╡рд┐рдХрд┐рдВрд╕ [email protected] рдиреЗ рд▓рд┐рдЦрд╛:
рдпрд╣ рджреЗрдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░реВрдк рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддреА рд╣реИ .... рдпрд╣ 16-рдмрд┐рдЯ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реИ
рдкреВрд░реНрдгрд╛рдВрдХред рд╕рдмрд╕реЗ рдмреБрд░рд╛ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрд▓/рдЖрд░ рдЪреИрдирд▓реЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рдХрд░реЗрдВ?13 рдордИ 2015 рдХреЛ 16:33 рдмрдЬреЗ, рдирд┐рдХ рд╕реНрдЯреАрд▓ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА ncmpcpp рд╕реНрд░реЛрдд рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдереА
http://git.musicpd.org/cgit/mirror/ncmpcpp.git/tree/src/visualizer.cppредMopidy рдХрд╛ рдореНрдпреВрдЯ рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рд╣реИ рдЕрд░реНрдерд╛рдд рдСрдбрд┐рдпреЛ рдореНрдпреВрдЯ рдирд╣реАрдВ рд╣реИред
Ncmpcpp рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рд▓реЗрдЧрд╛, рдЗрд╕реЗ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ (рдирд╣реАрдВ
рдкреНрд░рднрд╛рд╡) рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдСрдбрд┐рдпреЛ рдХреЛ рдореНрдпреВрдЯ рдХрд░ рджреЗрдВред рдпрдХреАрдирди рдЙрдиреНрд╣реЗрдВ рдЪрд╛рд╣рд┐рдП
рдмрд╕ рдЗрд╕реЗ рджреЛ рдмрд╛рд░ рдЯреЙрдЧрд▓ рдХрд░реЗрдВредрдСрдбрд┐рдпреЛ рдХреЗ рдЧрд▓рдд рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рд╣реЛрдиреЗ рдХреА рдПрдХ рдЕрдЪреНрдЫреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЖрдкрдХреЗ рдкрд╛рд╕
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ gstreamer рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдХреБрдЫ рднреА рд╕рд╣реА рдирд╣реАрдВ рд╣реИ
@adamcik https://github.com/adamcik рдХреЗ рдКрдкрд░ рдЙрдирдХреЗ рдХреЛрдб рдореЗрдВ рдерд╛ред-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/mopidy/mopidy/issues/775#issuecomment -101716947ред
рдпрд╣ рд╕рдЪ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Mopidy рдХреЗ рдореНрдпреВрдЯ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ udpsink рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рднреЗрдЬреЗрдЧрд╛ред
cat /tmp/mdp.fifo
(рдпреВрдбреАрдкреА рд╕реЗ рдКрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛) рдбреЗрдЯрд╛ рдХреА рдирд┐рд░рдВрддрд░ рдзрд╛рд░рд╛ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ ncmpcpp рдХреЛрдб рдХреЛ рджреЗрдЦрд╛:
O_RDONLY | O_NONBLOCK
рд░реВрдк рдореЗрдВ рдЦреЛрд▓рддрд╛ рд╣реИрдХреЛрдИ рднреА рдореЗрд░реА рд╢рд╛рдЦрд╛ рд╕реЗ рднреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдбреЙрдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж):
git clone https://github.com/wernight/docker-mopidy.git
cd docker-mopidy
git checkout udpsink
docker build -t mopidy .
cd ..
git clone https://github.com/wernight/docker-ncmpcpp.git
cd docker-ncmpcpp
git checkout udpsink
docker build -t ncmpcpp .
cd ..
# Remember to enable PulseAudio over network
docker run --name mopidy -d \
-e PULSE_SERVER=tcp:$(hostname -i):4713 \
-e PULSE_COOKIE_DATA=$(pax11publish -d | grep --color=never -Po '(?<=^Cookie: ).*') \
mopidy
docker run --rm -it --link mopidy:mopidy ncmpcpp --host mopidy
рдиреЗрдЯрдХреИрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рдмрд┐рддрд╛рдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ -k рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореИрдВ рдЧреАрдд рд╕реНрд╡рд┐рдЪ рдкрд░ рдЗрд╕реЗ рд╕реНрд╡рдд: рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рд╣реВрдВ:
while :; do yes $'\n' | nc -lu 127.0.0.1 5555 > /tmp/mopidy.fifo; done
рдореВрд▓ рд░реВрдк рд╕реЗ рдКрдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкред
@ S0lll0s @wernight netcat -k рднреА рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЧреАрдд рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж рдкреБрди: рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ред рдЬрдмрдХрд┐ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдЬрд┐рдХ рдорд┐рд▓рд╛ рд╣реИ:
while :; do socat -d -d -T 1 -u UDP4-LISTEN:5555 OPEN:/tmp/mopidy.fifo; done
рдЖрд░реНрдХ рд▓рд┐рдирдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП:
nc
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП -k
рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ openbsd-netcat
рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП @SjRNMzU рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ - рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП socat
рдкреИрдХреЗрдЬред
@johnhamelink (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдЖрд░реНрдХ рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ) рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ socat
рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЧреАрдд рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рдмрд╛рдж рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХреЗ рд╕рд╛рде "рдкрдХрдбрд╝рдиреЗ" рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ?
@ рдерд┐рдпреЛрд╕-рд╕реНрдкреЗрд╕ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рджреЗрдЦрд╛ рд╣реИ
рдореИрдВ рдЖрд░реНрдХ рдкрд░ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ nc
(рджреЛрдиреЛрдВ gnu
рдФрд░ openbsd
) рдпрд╛ socat
рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдореИрдВ gst-launch-1.0 ... udpsink port=5555
рд╕реЗ nc -kluw 1 127.0.0.1 5555
рд╕рд╛рде рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдХреНрд░реАрди рдкрд░ рдХреБрдЫ рднреА рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдбреЗрдмрд┐рдпрди рдмрд╕реНрдЯрд░ (4.11.6-1), mopidy 2.1.0-1, gstreamer1.0-tools 1.12.2-1, ncmpcpp 0.7.4-1+b3, socat 1.7.3.2-1 рдкрд░ рдЗрд╕ рдХрд╛рдо рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рд╕рд┐рд╕реНрдЯрдо рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рд╕рдорд╛рдЬ рд╢реБрд░реВ рдХрд░реЗрдВ:
open_mpd_fifo() {
local fifo
readonly fifo='/tmp/mpd.fifo'
mkfifo "$fifo"
while :; do socat -d -d -T 1 -u UDP4-LISTEN:5555 OPEN:"$fifo"; done
}
mopidy [рдСрдбрд┐рдпреЛ] conf (рдиреЛрдЯ рд╣реЛрд╕реНрдЯ рдХреЛ udpsink рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛):
[audio]
output = tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink host=127.0.0.1 port=5555
рдЖрд░реНрдХ рдХреЗ рд▓рд┐рдП рд░реИрдирд┐рд╕рд╛рд▓реНрдЯ рдЖрдкрдХреЛ рдПрдирд╕реАрдПрдордкреАрд╕реАрдкреАрдкреА рдХреЛ рдлреАрдлреЛ рд╕рдкреЛрд░реНрдЯ рдЪреЗрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛: https://bbs.archlinux.org/viewtopic.php?id=99915
рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╡рд░реНрдХрд┐рдВрдЧ рдЖрд░реНрдХ рд╕реЗрдЯрдЕрдк рд╣реИ, рдмрд╛рдХреА рдереНрд░реЗрдб + рдбреЙрдХреНрд╕ + рдореИрдирдкреЗрдЬ + рдорд┐рд╢реНрд░рд┐рдд рдмреНрд▓реЙрдЧ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рджред рдореИрдВ Mopidy рдХреЛ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрд╡рд╛ PulseAudio рдХреЛ TCP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдбрд┐рдпреЛ рднреЗрдЬ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдиреЛрдЯреЗрд╢рди рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рд╣реИрдВ рдЬреЛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрдо рдЕрдиреБрднрд╡реА рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдВрдЧреЗред
рдпреЗ рд╕рднреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЖрд░реНрдХ рд░реЗрдкреЛ рд╕реЗ рд╣реИрдВ:
gstreamer 1.12.3-1
mopidy 2.1.0
ncmpcpp 0.8.1 # this had fifo support without any special compiling for me
openbsd-netcat 1.178_3-1 # gnu-netcat lacks the -k flag, as discussed above
pulseaudio 11.1
mopidy рд╕рд┐рд╕реНрдЯрдо рд╕реЗрд╡рд╛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ:
sudo systemctl enable mopidy.service
рд╕рдВрдкрд╛рджрди рдореЗрдВ рдЖрд╕рд╛рдиреА (рд╡реИрдХрд▓реНрдкрд┐рдХ) рдХреЗ рд▓рд┐рдП рдореЛрдкрд┐рдбреА рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЙрдиреНрдлрд┐рдЧ рдХреЛ рдпреВрдЬрд░ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗ рд╕рд╛рде рд╕рд┐рдорд▓рд┐рдВрдХ рд╕реЗ рдмрджрд▓реЗрдВ:
sudo ln -sf ~/.config/mopidy/mopidy.conf /etc/mopidy/mopidy.conf
рдлреАрдлреЛ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
mkfifo "/tmp/mpd.fifo"
~/.config/mopidy/mopidy.conf
(рдпрд╛ /etc/mopidy/mopidy.conf
рдЕрдЧрд░ рдЖрдкрдиреЗ рд╕рд┐рдорд▓рд┐рдВрдХ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рд╣реИ): mopidy рдХреЛ рдкрд▓реНрд╕рдСрдбрд┐рдпреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдСрдбрд┐рдпреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ рдЬреЛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рд╕реБрди рд░рд╣рд╛ рд╣реЛ рдФрд░ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рдпреВрдбреАрдкреА рд╕рд┐рдВрдХ : 5555
[audio]
output = tee name=t ! queue ! pulsesink server=127.0.0.1 t. ! queue ! udpsink host=127.0.0.1 port=5555
рдореЗрдВ ~/.ncmpcpp/config
: ncmpcpp рдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рд╡рд╣ рдлреАрдлреЛ рдлрд╛рдЗрд▓ рдХрд╣рд╛рдВ рдорд┐рд▓реЗрдЧреА рдЬрд┐рд╕реЗ рд╕реБрдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд╡рд┐рд╡рд┐рдз рд╕реЗрдЯрд┐рдВрдЧреНрд╕
visualizer_fifo_path = "/tmp/mpd.fifo"
visualizer_output_name = "my_fifo"
visualizer_sync_interval = "30"
visualizer_in_stereo = "yes"
visualizer_type = "spectrum"
visualizer_look = "+|"
рдореЗрдВ ~/.config/pulse/default.pa
: рдкрд▓реНрд╕рдСрдбрд┐рдпреЛ рдХреЛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╕реЗ рдЯреАрд╕реАрдкреА рдкрд░ рдСрдбрд┐рдпреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ (рд╕реЗрдЯрд┐рдВрдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдФрд░ рдмрд╕ рдЕрд╕рдореНрдмрджреНрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
~/.zshrc
( ~/.bashrc
рдореЗрдВ рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП): netcat
рдХреЛ ncmpcpp
рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реИрдкрд░ рдлрд╝рдВрдХреНрд╢рди "nplayer" рдмрдирд╛рдПрдВ:
nplayer () (nc -kluw 1 127.0.0.1 5555 > /tmp/mpd.fifo & trap "kill $!" EXIT; ncmpcpp)
рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ:
netcat
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдмрдирд╛рдП рдЧрдП рдлреАрдлреЛ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░реЗрдВред рдЭрдВрдбреЗ:-k
рд╡рд░реНрддрдорд╛рди рдХрдиреЗрдХреНрд╢рди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реБрдирддреЗ рд░рд╣реЗрдВ-l
рд╢реНрд░рд╡рдг рдореЛрдб рд╕рдХреНрд╖рдо рдХрд░реЗрдВ-u
рдпреВрдбреАрдкреА рдореЛрдб рд╕рдХреНрд╖рдо рдХрд░реЗрдВ-w NUM
NUM рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╕рдордпрдмрд╛рд╣реНрдп рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрдиреЗрдХреНрд╢рди (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ 1 рд╕реЗрдХрдВрдб)netcat
ncmpcpp
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ EXIT рдЯреНрд░реИрдк рд╕реЗрдЯ рдХрд░реЗрдВ рдЬрдм ncmpcpp
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдореИрдВ рдордВрдЬрд╝рд░реЛ (рдЖрд░реНрдХ рдбрд┐рд╕реНрдЯреНрд░реЛ) рдкрд░ рдореЛрдкрд┐рдбреА рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рд╕рдорд╛рдЬ рдпрд╛ рдиреЗрдЯрдХреИрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рд░рд╣реА рдереАред рдореИрдВ рд╣рд╛рд▓рд╛рдВрдХрд┐ tcpdump рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЯреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛:
sudo tcpdump -i lo -n udp port 5555 -XX
рдореБрдЭреЗ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрд╛ рдФрд░ рдореБрдЭреЗ @mosbasik рдХреЗ рдмрд┐рдирд╛ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ
udpsink рдХреЗ рдмрд╛рдж рд╕рдорд╕реНрдпрд╛ host=127.0.0.1
рдирд╣реАрдВ рдереА, рдпрд╣ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рддреЛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИред рдЗрди 2 рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛:
[audio]
output = tee name=t ! queue ! autoaudiosink server=127.0.0.1 t. ! queue ! udpsink host=127.0.0.1 port=5555тЖк
рдпрд╛
[audio]
output = tee name=t ! queue ! autoaudiosink t. ! queue ! udpsink host=127.0.0.1 port=5555тЖк
рдПрдХ рддрд░рдл рдзреНрдпрд╛рди рджреЗрдВ: рдореИрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pulsesink
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕реЗ autoaudiosink
рдкрд░ рдЫреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛, рдЬреЛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рднреА рд╕реЗрдЯ рдХрд┐рдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдзреАрдорд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд░реАрдмреВрдЯ рдХреЗ рдмрд╛рдж рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ .. рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рднреА рдереЛрдбрд╝рд╛ рдзреАрдорд╛ рд╣реИред рдкрд▓реНрд╕рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдпрд╣ gstreamer рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд░рд╣рд╛ред рдЗрд╕рдХреЗ рдмрд╛рдж рднреА (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) рдореИрдВрдиреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЖрд░реНрдХ рд░реЗрдкреЛ рдкрд░ рдЬреАрдПрд╕рдЯреА рдХреЗ рд▓рд┐рдП рд╣рд░ рдкреНрд▓рдЧрдЗрди рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдиреЛрдЯ autoaudiosink
flump3dec
рдФрд░ mad
mopidy deps
рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ
Executable: /usr/bin/mopidy
Platform: Linux-4.16.7-1-MANJARO-x86_64-with-glibc2.2.5
Python: CPython 2.7.15 from /usr/lib/python2.7
Mopidy: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Mopidy-Iris: 3.4.9 from /usr/lib/python2.7/site-packages
setuptools>=3.3: 40.5.0 from /usr/lib/python2.7/site-packages
pylast>=1.6.0: 2.3.0 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
Mopidy>=2.0: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Mopidy-Local-Images>=1.0: 1.0.0 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
Mopidy>=1.1: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
uritools>=1.0: 1.0.1 from /usr/lib/python2.7/site-packages
ipaddress>=1.0.6: 1.0.22 from /usr/lib/python2.7/site-packages
ipaddress>=1.0.6: 1.0.22 from /usr/lib/python2.7/site-packages
ConfigObj>=5.0.6: 5.0.6 from /usr/lib/python2.7/site-packages
raven>=6.1.0: 6.9.0 from /usr/lib/python2.7/site-packages
contextlib2: 0.5.5 from /usr/lib/python2.7/site-packages
Mopidy-Local-Images: 1.0.0 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
Mopidy>=1.1: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
uritools>=1.0: 1.0.1 from /usr/lib/python2.7/site-packages
ipaddress>=1.0.6: 1.0.22 from /usr/lib/python2.7/site-packages
ipaddress>=1.0.6: 1.0.22 from /usr/lib/python2.7/site-packages
Mopidy-Spotify-Tunigo: 1.0.0 from /usr/lib/python2.7/site-packages
Mopidy>=0.19.0: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Mopidy-Spotify>=1.2.0: 3.1.0 from /usr/lib/python2.7/site-packages
Mopidy>=2.0: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
pyspotify>=2.0.5: 2.0.5 from /usr/lib/python2.7/site-packages
cffi>=1.0.0: 1.11.5 from /usr/lib/python2.7/site-packages
pycparser: 2.19 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tunigo>=1.0.0: 1.0.0 from /usr/lib/python2.7/site-packages
requests>=2.0.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
Mopidy-SoundCloud: 2.1.0 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
Mopidy>=1.0: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
Mopidy-Spotify: 3.1.0 from /usr/lib/python2.7/site-packages
Mopidy>=2.0: 2.2.1 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
tornado>=4.4: 5.1.1 from /usr/lib/python2.7/site-packages
futures: 3.2.0 from /usr/lib/python2.7/site-packages
singledispatch: 3.4.0.3 from /usr/lib/python2.7/site-packages
six: 1.11.0 from /usr/lib/python2.7/site-packages
backports_abc>=0.4: 0.5 from /usr/lib/python2.7/site-packages
Pykka>=1.1: 1.2.1 from /usr/lib/python2.7/site-packages
pyspotify>=2.0.5: 2.0.5 from /usr/lib/python2.7/site-packages
cffi>=1.0.0: 1.11.5 from /usr/lib/python2.7/site-packages
pycparser: 2.19 from /usr/lib/python2.7/site-packages
requests>=2.0: 2.20.1 from /usr/lib/python2.7/site-packages
chardet>=3.0.2: 3.0.4 from /usr/lib/python2.7/site-packages
idna>=2.5: 2.7 from /usr/lib/python2.7/site-packages
urllib3>=1.21.1: 1.24.1 from /usr/lib/python2.7/site-packages
setuptools: 40.5.0 from /usr/lib/python2.7/site-packages
GStreamer: 1.14.4.0 from /usr/lib/python2.7/site-packages/gi
Detailed information:
Python wrapper: python-gi 3.30.2
Relevant elements:
Found:
uridecodebin
souphttpsrc
appsrc
alsasink
osssink
oss4sink
pulsesink
id3demux
id3v2mux
lamemp3enc
mpegaudioparse
mpg123audiodec
vorbisdec
vorbisenc
vorbisparse
oggdemux
oggmux
oggparse
flacdec
flacparse
shout2send
Not found:
flump3dec
mad
рдореИрдВ Mopidy рдФрд░ рд╕рднреА рджреВрд░рд╕реНрде ncmpcpp рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП udpsink рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред Mopidy рдХреЛ MacVLAN рдХреЗ рд╕рд╛рде рдбреЙрдХрдЯрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдХрдВрдЯреЗрдирд░ рдкрд░ рдкреЛрд░реНрдЯ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред
nc -vz -u mopidy.lan 5555
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif (null)
src x.x.x.x port 50630
dst x.x.x.x port 5555
rank info not available
Connection to mopidy.lan port 5555 [udp/personal-agent] succeeded!
рд╡рд░реНрддрдорд╛рди рдореЗрдВ Mopidy рдирд┐рдореНрди рдмрд┐рдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ:
[audio]
mixer = software
mixer_volume = 100
output = tee name=t ! queue ! lamemp3enc ! shout2send async=false mount=mopidy ip="mopidy.lan" port=8092 username="some username" password="some password" t. ! queue ! udpsink host=0.0.0.0 port=5555
mpd.fifo рдореЗрдВ рдХрдЪреНрдЪреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдиреЗрдЯрдХреИрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЗрд╕ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░? рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдиреЗрдЯрдХреИрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреБрдЫ рд╢реЛрдз рдиреЗ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдИ рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
#!/bin/bash
mkfifo /tmp/mpd.fifo
while :; do yes $'\n' | nc -lu mopidy 5555 > /tmp/mpd.fifo; done
рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:
nc: Can't assign requested address
рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╛рдо рдкрд░ рд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдЗрд╕ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
рдЪреАрдпрд░реНрд╕!
FYI рдХрд░реЗрдВ рдореИрдВрдиреЗ gstreamer рдХреЗ udpsink
рд▓рд┐рдП ncmpcpp рдореЗрдВ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдм рдЗрд╕реЗ рд╕реАрдзреЗ рдлреАрдлреЛ рд╣реИрдХреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП https://github.com/ncmpcpp/ncmpcpp/commit/fb886f687014e22b2fe1477da855be5201063ea8 рджреЗрдЦреЗрдВред
рдПрдХ рдЯреАрдЬрд╝рд░ рдХреЗ рдиреАрдЪреЗред рдпрд╣ mopidy + mopidy-spotify + mopidy-mpd + ncmpcpp рд╣реИред
https://user-images.githubusercontent.com/387658/102549720-e41bf980-40bc-11eb-8127-70889011e52f.mp4
@arybczak рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рдЖрдкрдХреЛ рдЗрд╕реЗ https://discourse.mopidy.com/c/show-and-tell/9 . рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
@adamcik рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ 7-рдпреЛ рдореБрджреНрджрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдореБрджреНрджреЗ рдХреЗ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рдкрдХреНрд╖ рдореЗрдВ "рдмрд╣рд┐рд╖реНрдХреГрдд" рд╣реИ рдЬрд┐рд╕рдиреЗ рдЗрд╕реЗ рд╕реНрдкрд╛рд░реНрдХ рдХрд┐рдпрд╛ (рдПрдирд╕реАрдПрдордкреАрд╕реАрдкреАрдкреА рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди)?
@pspeder , рдЖрдкрдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдХреНрдпрд╛ https://github.com/mopidy/mopidy/issues/775#issuecomment -747725806 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ?
@kingosticks рдмрд╕ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдП
рдореИрдВ рдЗрд╕рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
FYI рдХрд░реЗрдВ рдореИрдВрдиреЗ gstreamer рдХреЗ
udpsink
рд▓рд┐рдП ncmpcpp рдореЗрдВ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдм рдЗрд╕реЗ рд╕реАрдзреЗ рдлреАрдлреЛ рд╣реИрдХреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП https://github.com/ncmpcpp/ncmpcpp/commit/fb886f687014e22b2fe1477da855be5201063ea8 рджреЗрдЦреЗрдВред
рдПрдХ рдЯреАрдЬрд╝рд░ рдХреЗ рдиреАрдЪреЗред рдпрд╣ mopidy + mopidy-spotify + mopidy-mpd + ncmpcpp рд╣реИред
https://user-images.githubusercontent.com/387658/102549720-e41bf980-40bc-11eb-8127-70889011e52f.mp4