Mopidy: HTTP рдСрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рдЬрдире░ 2011  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mopidy/mopidy

рдпрджрд┐ рдХреЛрдИ HTTP рдкрд░ Mopidy рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдП рдЧрдП рдСрдбрд┐рдпреЛ рдХреА рдПрдХ рд╕реНрдЯреНрд░реАрдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ MPD рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ HTTP рд╕реНрдЯреНрд░реАрдо рдФрд░ рдЬреИрд╕реЗ рд╕реНрдХреНрд╡реАрдЬрд╝рдмреЙрдХреНрд╕ рдЬреИрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрдЯреНрд░реАрдо рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╢рд╛рдпрдж Ogg Vorbis рдФрд░/рдпрд╛ MP3 рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

C-enhancement A-audio

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдкрд┐рдЫрд▓реЗ 2 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

рд╕рднреА 15 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдлреЙрд▓реЛрд╡рд┐рдВрдЧ рдХреЛрдб рдорд╛рдирддреЗ рд╣реБрдП:

import logging
from BaseHTTPServer import BaseHTTPRequestHandler

from mopidy import get_version

logger = logging.getLogger('mopidy.outputs.http')

class StreamingHTTPRequestHandler(BaseHTTPRequestHandler):
    server_version = 'HTTPOutput/%s' % get_version()

    def do_GET(self):
        self.send_response(200)
        self.send_header('content-type', 'audio/mpeg')
        self.end_headers()

        register_fd_with_output(self.wfile.fileno())

        self.close_connection = 0

    def log_message(self, format, *args):
        logger.info(format, *args)

рдЬрд╣рд╛рдВ register_fd_with_output() рдПрдХ рдРрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ HTTPOutput ( audioconvert ! lame ! multifdsink ) рдореЗрдВ fd рд╕рд┐рдВрдХ рдкрд░ рдРрдб рд╕рд┐рдЧреНрдирд▓ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ ThreadingActor рд╕рд╛рде BaseHTTPServer.HTTPServer рдЪрд▓ рд░рд╣рд╛ рд╣реИ StreamingHTTPRequestHandler рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реА HTTP рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЬреИрд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдВрдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП:

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЛрдб рдмреЗрд╕ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рд╣рдо рдХреБрдЫ рдРрд╕рд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЪреЗрд░реАрдкреА рдкрд░ рдмрдиреЗред

рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЬреЛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рд╡рд╣ рд╣реИ рдПрдХ GStreamer рддрддреНрд╡ рдмрдирд╛рдирд╛ рдФрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо OUTPUT рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд┐рдХреНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, #152 рдпрд╛ рдкрд┐рдЯрд┐рд╡реА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдХреЛрдб рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рддрддреНрд╡ рдореВрд▓ рд░реВрдк рд╕реЗ multifdsink рд▓рдкреЗрдЯреЗрдЧрд╛, рдЪреЗрд░реАрдкреА рд╕рд╛рдорд╛рди рдХреЛ рд╕рдВрднрд╛рд▓реЗрдЧрд╛ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдПрдлрдбреА рдкрд╛рд╕ рдХрд░реЗрдЧрд╛ред

HTTP рднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдХрдо рд╕реЗ рдХрдо рддрд░реАрдХреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИ, рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдЪреЗрд░реАрдкреА рд╕рд░реНрд╡рд░ рдХреЛ рдлреНрд░рдВрдЯрдПрдВрдб рдкрд░ рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рджреВрд╕рд░рд╛, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб рдХреЗ рдлреНрд░рдВрдЯрдПрдВрдб рдФрд░ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рднрд╛рдЧреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди HTTP рд╕рд░реНрд╡рд░ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореЗрд░рд╛ рд╕рдВрдмрдВрдз рд╣реИ, рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрдбрд╝рд╛ рдЕрдЬреНрдЮрд╛рдд рд╣реИред

рдПрдХ рдмрд╛рд░ HTTP рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдЪреЗрд░реАрдкреА рд╕реЗ рд╕реЙрдХреЗрдЯ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, ws4py рдХреЛ рджреЗрдЦрдХрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ request.rfile.rfile._sock = None рдХрд░рдирд╛ рд╕рдмрд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдЕрд▓рдЧ рдХрд░реЗрдВ рд╣рдо рд╢рд╛рдпрдж рдХреБрдЫ рд╣реЗрдбрд░ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╣рдо рдПрдлрдбреА рдХреЛ рд╕рд┐рдВрдХ рдореЗрдВ рдЕрд▓рдЧ рдФрд░ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ ws4py рд╕реЙрдХреЗрдЯ рдХреЛ рдХреИрд╕реЗ рд▓реЗрддрд╛ рд╣реИ, рд╣рдореЗрдВ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рджреВрд╕рд░рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдереЛрдбрд╝рд╛ рдЕрдЬреНрдЮрд╛рдд рд╣реИ рдЕрдЧрд░ рд╣рдо рдПрдлрдбреА рдХреЛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдореБрдЦреНрдп рдСрдбрд┐рдпреЛ рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдпрд╛ рддреЛ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ рдпрд╛ рдХреБрдЫ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдЖрдЙрдЯрдкреБрдЯ рдмрд┐рди рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рдХрднреА рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛, рд▓реЗрдХрд┐рди рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрд╕реЙрдХреЗрдЯ рдЪреЛрд░реА рдХрд░рдиреЗ рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рд╣рдореЗрдВ рдирдИ рдХреЙрдкреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл socket.fromfd рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдореВрд▓ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рдХреЗ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдХреНрдпрд╛ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ?

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорд╣реАрдиреЛрдВ рдкреБрд░рд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣реА рдПрдХрдорд╛рддреНрд░ рдЪреАрдЬ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд╡реИрдирд┐рд▓рд╛ рдПрдордкреАрдбреА рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рд░рд╣реА рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдордкреАрдбреА рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рд╕реНрдкреАрдХрд░ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдШрд░ рдФрд░ рдЕрдиреНрдп рдЬрдЧрд╣реЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ/рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ HTTP рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЯреНрдпреВрди рдХрд░рддрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕реЗ Mopidy рдореЗрдВ рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдФрд░ рдЕрдЧрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ! рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдореИрдиреБрдЕрд▓ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред

AFAIK Mopidy рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ HTTP рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХреЛ Icecast рдФрд░ рдХреБрдЫ рд╣реИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдХрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, https://docs.mopidy.com/en/latest/config/#streaming -through-shoutcast-icecast рдкрд░ рдкреНрд░рд▓реЗрдЦрд┐рдд

рдПрдХ рдЧреИрдкрд▓реЗрд╕ рдмреНрд░рд╛рдВрдЪ рдкрд░ рдХрд╛рдо рдЪрд▓ рд░рд╣рд╛ рд╣реИ (рджреЗрдЦреЗрдВ #1288) рдЬреЛ рдХрд┐ рдЕрдЧрд▓реЗ рджреМрд░ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд╕рд╛рде Mopidy+Icecast рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╣реИрдХ рдХреЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдЬреАрд╡рд┐рдд рд░рдЦрд╛ рдЬрд╛ рд╕рдХреЗред

рдмрд╕ рдЗрд╕рдореЗрдВ рдЭрдВрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ HTTP рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдореЗрдВ рднреА рдЧрдВрднреАрд░ рд░реБрдЪрд┐ рд╣реИред рдореИрдВ рдХрд╛рдо рдкрд░ рдЕрдкрдиреЗ рд╡реЗрдм рд╕рд░реНрд╡рд░/рд╡реАрдкреАрдПрди рд╕реЗ, рднрдпрд╛рдирдХ рдореЛрдкреЗрдб рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ Spotify рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдмрд▓реНрдХрд┐ рдкрд░реЗрд╢рд╛рди рдерд╛ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдФрд░ рд╕рдВрдЧреАрдд рд╕реБрдирд╛, рддреЛ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рджреВрд░ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рддреЛ рдПрдХ рдЯрди рдЬреИрдХ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВред рдЕрдЧрд░ рдореБрдЭреЗ рдкрддрд╛ рд╣реЛрддрд╛ рдХрд┐ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЗрд╕реЗ рдЦреБрдж рдЖрдЬрдорд╛рддрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

@jodal рдХреНрдпрд╛ рдЖрдкрдиреЗ #1288 рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЬрд┐рди рдореБрджреНрджреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд╡реЗ рд╣рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ?

рдпрд╛рдиреА рдХреНрдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, Mopidy GStreamer рдореЗрдВ рдПрдВрдб-рдСрдлрд╝-рдЯреНрд░реИрдХ рдмрдирд╛рдо рдПрдВрдб-рдСрдлрд╝-рд╕реНрдЯреНрд░реАрдо рд╕рд┐рдЧреНрдирд▓рд┐рдВрдЧ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╣реИрдВрдбрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдЯреНрд░реИрдХ рдХреЗ рдЕрдВрдд рдореЗрдВ SHOUTcast рд╕реНрдЯреНрд░реАрдо рдХреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдХрд╛рдлреА рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП #492 рджреЗрдЦреЗрдВред рдЖрдк рдиреАрдЪреЗ рдмрддрд╛рдП рдЧрдП рдЙрдкрд╛рдп рдХреЛ рднреА рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВред

@JohnMaguire рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдХрд╣реАрдВ рдХреЛрдИ рдЕрдиреБрднрд╛рдЧ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рднреВрд▓ рдЧрдП рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдПрдХ рд▓рд┐рдВрдХ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред AFAIK рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХрд╛ "рд╡рд┐рдХрд╕рд┐рдд" рд╕рдВрд╕реНрдХрд░рдг 2.0 рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрд┐рдд рд╣реИред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ: https://docs.mopidy.com/en/latest/config/#streaming -through-shoutcast-icecast

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдбреЙрдХреНрд╕ рдХреЗ рд╡рд┐рдХрд╕рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЖрдк рд╕рд╣реА рд╣реИрдВ: https://docs.mopidy.com/en/develop/audio/#streaming -through-icecast

рдзрдиреНрдпрд╡рд╛рдж @ рдЬреЛрдбрд▓!

рдкрд┐рдЫрд▓реЗ 2 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

рдкрд┐рдЫрд▓реЗ 5 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

рдирд╣реАрдВ, Icecast рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

Mopidy 3 рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдордиреЗ GStreamer рдХреЗ рдиреНрдпреВрдирддрдо рд╕рдорд░реНрдерд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЯрдХреНрдХрд░ рджреА, рдЬреЛ HTTP рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рдЦреЛрд▓рддрд╛ рд╣реИ рдЬреИрд╕реЗ hlssink2ред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рддреЛ рдпрд╣ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реЛ рд╕рдХрддреА рд╣реИред

рд╕реНрдиреИрдкрдХрд╛рд╕реНрдЯ рдПрдХ рдФрд░ рдЙрдкрд╛рдп рд╣реИред рдпрд╣ рдорд▓реНрдЯреАрд░реВрдо рдкреНрд▓реЗрдмреИрдХ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреА рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╢рд╛рдЬрдирдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИред

рд╣рд╛рдВ, рдореИрдВрдиреЗ рд╕реНрдиреИрдкрдХрд╛рд╕реНрдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рд╣реИред рдПрдХ рдлреАрдлреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдереЛрдбрд╝рд╛ рдлрд┐рдЬреВрд▓ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди рдЖрдЦрд┐рд░реА рдмрд╛рд░ рдореИрдВрдиреЗ рд╕реБрдирд╛ рдХрд┐ рдпрд╣ рддрд░реАрдХрд╛ рдЕрдкрдиреЗ рдореБрджреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛ред рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ http рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

actionless picture actionless  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

flyingrub picture flyingrub  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pnijhara picture pnijhara  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jodal picture jodal  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mczerski picture mczerski  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ