{"id":156591,"date":"2012-10-29T17:53:05","date_gmt":"2012-10-29T13:53:05","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=156591"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=156591","title":{"rendered":"<span class=\"post_title\">\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0440\u0430\u0434\u0438\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u044f \u043d\u0430 Liquidsoap + IceCast<\/span>"},"content":{"rendered":"<div class=\"content html_format\"> \t\t\t\u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u0440\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0440\u0430\u0434\u0438\u043e\u0432\u0435\u0449\u0430\u043d\u0438\u0435 \u0438\u0437\u043d\u0443\u0442\u0440\u0438. \u0415\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 <a href=\"http:\/\/habrahabr.ru\/post\/149681\/\">\u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435<\/a> <a href=\"http:\/\/habrahabr.ru\/post\/153817\/\">\u043e\u0441\u043d\u043e\u0432\u044b<\/a> \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0440\u0430\u0434\u0438\u043e\u0432\u0435\u0449\u0430\u043d\u0438\u044f, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e\u0439 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0440\u0430\u0434\u0438\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u0438, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u0441\u0432\u044f\u0437\u043a\u0435 \u043d\u0435\u0437\u0430\u0441\u043b\u0443\u0436\u0435\u043d\u043d\u043e \u043c\u0430\u043b\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e <a href=\"http:\/\/savonet.sourceforge.net\/\">Liquidsoap 1.0.1<\/a> \u0438 \u0432\u0435\u0437\u0434\u0435\u0441\u0443\u0449\u0435\u0433\u043e <a href=\"http:\/\/www.icecast.org\/\">IceCast 2.3.2<\/a>. \u0421\u0442\u0430\u0442\u044c\u044f \u0440\u0430\u0441\u0447\u0438\u0442\u0430\u043d\u0430 \u043d\u0430 \u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0430\u0443\u0434\u0438\u043e\u043f\u043e\u0442\u043e\u043a, IceCast, \u043b\u0438\u043d\u0443\u043a\u0441\u043e\u0432\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u0442\u0430\u043a\u0438 <i>\u0447\u0442\u043e<\/i> \u043e\u043d \u0432\u043e\u043e\u0431\u0449\u0435 \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u043d\u0430 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0437\u0430\u0440\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u0422\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0439 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b<\/h4>\n<p>  <\/p>\n<ol>\n<li>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u0440\u0435\u0437\u043a\u0430<\/li>\n<li>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0430 OGG, MP3, FLAC \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0434\u043b\u044f \u0430\u0443\u0434\u0438\u043e\u043f\u043e\u0442\u043e\u043a\u0430<\/li>\n<li>\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/li>\n<li>\u041f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0434\u043b\u044f \u0440\u0430\u0434\u0438\u043e\u044d\u0444\u0438\u0440\u0430<\/li>\n<li>\u0420\u0430\u0431\u043e\u0442\u0430 \u043f\u043e\u0434 Linux<\/li>\n<li>\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0435\u043c\u0443 Linux-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0432\u0441\u0451 \u044d\u0442\u043e<\/li>\n<\/ol>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0433\u0438\u0445 \u043f\u0440\u043e\u0431 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430, \u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 Liquidsoap + IceCast. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0431\u044b\u043b \u0432\u0437\u044f\u0442 \u0437\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0438 \u0448\u0438\u0440\u043e\u043a\u0443\u044e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0441\u0442\u044c (\u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0430\u043d\u0430\u043b\u043e\u0433\u0438 \u044f \u0434\u0430\u0436\u0435 \u043d\u0435 \u0438\u0441\u043a\u0430\u043b), \u0430 Liquidsoap \u0437\u0430 \u0432\u043e\u0438\u0441\u0442\u0438\u043d\u0443 \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043d\u0438\u044f. \u0414\u043e \u043d\u0435\u0433\u043e \u044f \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u043b ices, ices + ardj, AirTime, \u0447\u0442\u043e-\u0442\u043e \u0435\u0449\u0451, \u0447\u0442\u043e \u0434\u0430\u0436\u0435 \u0438 \u043d\u0435 \u0443\u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u043d\u043e \u0432\u0441\u0435 \u043e\u043d\u0438 \u0442\u0430\u043a \u0438\u043b\u0438 \u0438\u043d\u0430\u0447\u0435 \u043c\u043d\u0435 \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043b\u0438. \u0412 \u043e\u0431\u0449\u0435\u043c, \u044f \u0440\u0435\u0448\u0438\u043b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f Liquidsoap. \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432\u0441\u0435\u0439 \u043c\u043e\u0449\u0438 \u0435\u0433\u043e \u044f \u043d\u0435 \u0441\u043c\u043e\u0433\u0443 \u043e\u0449\u0443\u0442\u0438\u0442\u044c \u2014 \u0432\u0441\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c, \u0430 \u0441 \u043d\u0438\u043c \u0443 \u043c\u0435\u043d\u044f \u043d\u0435 \u0432\u0441\u0451 \u0433\u043b\u0430\u0434\u043a\u043e \u2014 \u043e\u0434\u043d\u0430\u043a\u043e \u0447\u0442\u043e-\u0442\u043e \u044f \u0443\u0441\u0432\u043e\u0438\u043b \u0438 \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0451, \u0447\u0435\u043c \u043c\u043e\u0433\u0443 \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<h4>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h4>\n<p>  \u041d\u0435 \u0434\u043e\u043b\u0433\u043e \u0434\u0443\u043c\u0430\u044f \u044f \u0440\u0435\u0448\u0438\u043b \u0432\u0441\u0451 \u044d\u0442\u043e \u0447\u0443\u0434\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u043f\u043e\u0434 openSUSE 12.2 x64, \u0434\u0430\u0431\u044b \u0431\u044b\u043b\u043e \u0443\u0434\u043e\u0431\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b Liquidsoap, \u0430 \u0443\u0436\u0435 \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443. \u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u043b\u0438\u0448\u044c IceCast, Liquidsoap \u0436\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 Debian\/Ubuntu, Windows, Mac OS X, FreeBSD \u0438 ArchLinux \u043c\u043e\u0433\u0443\u0442 \u0432\u0437\u044f\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0430 <a href=\"http:\/\/savonet.sourceforge.net\/download.html\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435<\/a>.<\/p>\n<h5>IceCast<\/h5>\n<p>  \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 IceCast \u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432:  <\/p>\n<pre><code class=\"sql\"># zypper in icecast <\/code><\/pre>\n<p>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e IceCast \u044f \u043d\u0435 \u0431\u0443\u0434\u0443, \u043b\u0438\u0448\u044c \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0443 \u043c\u0435\u043d\u044f:<\/p>\n<h6>\/etc\/icecast.xml<\/h6>\n<pre><code class=\"xml\">&lt;icecast&gt;     &lt;limits&gt;         &lt;clients&gt;100&lt;\/clients&gt;         &lt;sources&gt;2&lt;\/sources&gt;         &lt;threadpool&gt;5&lt;\/threadpool&gt;         &lt;queue-size&gt;524288&lt;\/queue-size&gt;         &lt;client-timeout&gt;30&lt;\/client-timeout&gt;         &lt;header-timeout&gt;15&lt;\/header-timeout&gt;         &lt;source-timeout&gt;10&lt;\/source-timeout&gt;         &lt;burst-on-connect&gt;1&lt;\/burst-on-connect&gt;         &lt;burst-size&gt;65535&lt;\/burst-size&gt;     &lt;\/limits&gt;      &lt;authentication&gt; \t&lt;source-password&gt;mypass&lt;\/source-password&gt;         &lt;relay-password&gt;mysecondpass&lt;\/relay-password&gt;         &lt;admin-user&gt;adminuser&lt;\/admin-user&gt;         &lt;admin-password&gt;mythirdpass&lt;\/admin-password&gt;     &lt;\/authentication&gt;     &lt;hostname&gt;localhost&lt;\/hostname&gt;     &lt;listen-socket&gt;         &lt;port&gt;8000&lt;\/port&gt;     &lt;\/listen-socket&gt;     &lt;fileserve&gt;1&lt;\/fileserve&gt;      #_____________________________________________________________ # \u041d\u0430\u0448 \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043e \u043d\u0451\u043c \u043d\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442\u0441\u044f, \u0438\u0431\u043e \u0438 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043e\u043d \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u043d \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043b\u044e\u0434\u044f\u043c \u043d\u0435 \u0441\u0442\u044b\u0434\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c. \u0410 \u0432\u043e\u043e\u0431\u0449\u0435 \u043a \u043d\u0435\u043c\u0443 \u0446\u0435\u043f\u043b\u044f\u0435\u0442\u0441\u044f ices \u0441 \u043c\u0443\u0437\u044b\u043a\u043e\u0439 \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 secure.      &lt;mount&gt;       &lt;mount-name&gt;\/secure&lt;\/mount-name&gt;       &lt;hidden&gt;1&lt;\/hidden&gt; # \u0414\u0435\u043b\u0430\u0435\u043c \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u043c - \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043d\u0435 \u0441\u043c\u043e\u0433\u0443\u0442 \u0438\u043c \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f       &lt;charset&gt;UTF8&lt;\/charset&gt; # \u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430     &lt;\/mount&gt;  # \u041e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 mount'\u044b     &lt;mount&gt;       &lt;fallback-mount&gt;\/secure&lt;\/fallback-mount&gt; # \u041a\u0430\u043a\u043e\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0443\u043f\u0430\u043b       &lt;fallback-override&gt;1&lt;\/fallback-override&gt; # \u041f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u043d\u0430 \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u0441\u0432\u044f\u0437\u0438       &lt;fallback-when-full&gt;1&lt;\/fallback-when-full&gt; # \u041f\u0440\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0430 \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u0435\u0439, \u043d\u043e\u0432\u043e\u043c\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a       &lt;mount-name&gt;\/HabraRadio_192&lt;\/mount-name&gt; # \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 mount'\u0430.       &lt;charset&gt;UTF8&lt;\/charset&gt; # \u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430     &lt;\/mount&gt;          &lt;mount&gt;       &lt;fallback-mount&gt;\/secure&lt;\/fallback-mount&gt;       &lt;fallback-override&gt;1&lt;\/fallback-override&gt;       &lt;fallback-when-full&gt;1&lt;\/fallback-when-full&gt;       &lt;mount-name&gt;\/HabraRadio_320&lt;\/mount-name&gt;       &lt;charset&gt;UTF8&lt;\/charset&gt;     &lt;\/mount&gt;          &lt;mount&gt;       &lt;fallback-mount&gt;\/secure&lt;\/fallback-mount&gt;       &lt;fallback-override&gt;1&lt;\/fallback-override&gt;       &lt;fallback-when-full&gt;1&lt;\/fallback-when-full&gt;       &lt;mount-name&gt;\/HabraRadio_vorbis_avg_128&lt;\/mount-name&gt;       &lt;charset&gt;UTF8&lt;\/charset&gt;     &lt;\/mount&gt;      #_____________________________________________________________      &lt;paths&gt;         &lt;basedir&gt;\/usr\/share\/icecast&lt;\/basedir&gt;         &lt;logdir&gt;\/var\/log\/icecast&lt;\/logdir&gt;         &lt;webroot&gt;\/usr\/share\/icecast\/web&lt;\/webroot&gt;         &lt;adminroot&gt;\/usr\/share\/icecast\/admin&lt;\/adminroot&gt;         &lt;alias source=&quot;\/&quot; dest=&quot;\/status.xsl&quot;\/&gt;     &lt;\/paths&gt;      &lt;logging&gt;         &lt;accesslog&gt;access.log&lt;\/accesslog&gt;         &lt;errorlog&gt;error.log&lt;\/errorlog&gt;       \t&lt;loglevel&gt;3&lt;\/loglevel&gt;       \t&lt;logsize&gt;10000&lt;\/logsize&gt;      &lt;\/logging&gt;      &lt;security&gt;         &lt;chroot&gt;0&lt;\/chroot&gt;         &lt;changeowner&gt;             &lt;user&gt;icecast&lt;\/user&gt;             &lt;group&gt;icecast&lt;\/group&gt;         &lt;\/changeowner&gt;     &lt;\/security&gt; &lt;\/icecast&gt;<\/code><\/pre>\n<h5>Liquidsoap<\/h5>\n<p>  \u041a\u0430\u0447\u0430\u0435\u043c, \u043f\u043e\u0434\u0433\u043e\u0442\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c:  <\/p>\n<pre><code class=\"css\">$ git clone https:\/\/github.com\/savonet\/liquidsoap-full.git liquidsoap $ cd liquidsoap $ make init $ cp PACKAGES.minimal PACKAGES <\/code><\/pre>\n<p>  \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430, \u043d\u043e \u0435\u0441\u043b\u0438 \u043a\u043e\u043c\u0443 \u043d\u0443\u0436\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0435\u0449\u0451 \u0447\u0435\u0433\u043e-\u043b\u0438\u0431\u043e, \u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b PACKAGES.<br \/>  \u0414\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u044f \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u044b:<\/p>\n<pre><code class=\"sql\"># zypper in make autoconf automake ocaml libao-devel libmad-devel libmp3lame-devel flac-devel libgavl-devel ocaml-camomile-devel ocaml-camlimages-devel ocaml-camomile-data libtheora-devel ocaml-findlib-devel libsamplerate-devel libtag-devel libvorbis-devel gcc-c++ ocaml-pcre-devel libtiff-devel libjpeg62-devel libXpm-devel <\/code><\/pre>\n<p>  \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c:<\/p>\n<pre><code class=\"sql\">$ .\/bootstrap $ .\/configure --with-user=user --with-group=users $ make # make install <\/code><\/pre>\n<p>  \u041a \u0441\u043b\u043e\u0432\u0443, \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f &quot;.\/configure &#8230;&quot; \u0441\u0442\u043e\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0432\u0435\u0441\u044c \u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u043d\u0443\u0436\u043d\u044b\u0439 \u043d\u0430\u043c, \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435. \u0421\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0432 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u043d\u0443\u044e \u043f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 &quot;.\/configure &#8230;&quot;<br \/>  \u0412\u0441\u0451, \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u00abliquidsoap &#8212;version\u00bb \u2014 \u043e\u0448\u0438\u0431\u043e\u043a \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e.<\/p>\n<h4>\u041e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u0441 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u044d\u0444\u0438\u0440\u0430<\/h4>\n<p>  \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:  <\/p>\n<ol>\n<li>02:00-06:00 \u2014 \u043d\u043e\u0447\u043d\u043e\u0439 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442<\/li>\n<li>06:00-09:00 \u2014 \u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442<\/li>\n<li>09:00-19:00 \u2014 \u0434\u043d\u0435\u0432\u043d\u043e\u0439 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442<\/li>\n<li>19:00-02:00 \u2014 \u0432\u0435\u0447\u0435\u0440\u043d\u0438\u0439 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442<\/li>\n<li>\u043f\u043d, \u0441\u0440, \u043f\u0442 \u2014 21:00-22:00 \u2014 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430<\/li>\n<li>\u043f\u043d, \u0441\u0440, \u0447\u0442, \u043f\u0442 \u2014 18:00-19:00 \u2014 \u0432\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430<\/li>\n<\/ol>\n<p>  \u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435:<\/p>\n<pre><code class=\"bash\">radio \u251c\u2500\u2500 collection            | \u0410\u0443\u0434\u0438\u043e\u0444\u0430\u0439\u043b\u044b \u2502   \u251c\u2500\u2500 efir              | \u041c\u0443\u0437\u044b\u043a\u0430 \u0438 \u0434\u0436\u0438\u043d\u0433\u043b\u044b \u2502   \u2502   \u251c\u2500\u2500 daytime       | \u0414\u043d\u0435\u0432\u043d\u043e\u0439 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u2502   \u2502   \u2502   \u251c\u2500\u2500 jingles   | \u0414\u0436\u0438\u043d\u0433\u043b\u044b, \u0438\u0433\u0440\u0430\u044e\u0449\u0438\u0435 \u0434\u043d\u0451\u043c \u2502   \u2502   \u2502   \u2514\u2500\u2500 music     | \u041c\u0443\u0437\u044b\u043a\u0430, \u0438\u0433\u0440\u0430\u044e\u0449\u0430\u044f \u0434\u043d\u0451\u043c \u2502   \u2502   \u251c\u2500\u2500 evening       | \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u0435\u0447\u0435\u0440 \u2502   \u2502   \u2502   \u251c\u2500\u2500 jingles \u2502   \u2502   \u2502   \u2514\u2500\u2500 music \u2502   \u2502   \u251c\u2500\u2500 morning       | \u0423\u0442\u0440\u043e \u2502   \u2502   \u2502   \u251c\u2500\u2500 jingles \u2502   \u2502   \u2502   \u2514\u2500\u2500 music \u2502   \u2502   \u2514\u2500\u2500 night         | \u0418 \u043d\u043e\u0447\u044c \u2502   \u2502       \u251c\u2500\u2500 jingles \u2502   \u2502       \u2514\u2500\u2500 music \u2502   \u251c\u2500\u2500 programs \u2502   \u2502   \u251c\u2500\u2500 1_prog        | 1 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u2502   \u2502   \u251c\u2500\u2500 2_prog        | 2 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u2502   \u251c\u2500\u2500 promo             | \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u2502   \u2514\u2500\u2500 security          | \u041f\u0430\u043f\u043a\u0430 \u0441 \u0437\u0430\u043f\u0430\u0441\u043d\u043e\u0439 \u043c\u0443\u0437\u044b\u043a\u043e\u0439 \u251c\u2500\u2500 technical             | \u041a\u043e\u043d\u0444\u0438\u0433\u0438, \u043b\u043e\u0433\u0438 \u2514\u2500\u2500 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f          | \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e <\/code><\/pre>\n<p>  <\/p>\n<h4>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f Liquidsoap<\/h4>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e:<\/p>\n<h6>.\/radio\/technical\/start_liquidsoap<\/h6>\n<pre><code class=\"bash\">#!\/usr\/local\/bin\/liquidsoap  # \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043f\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 # \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0432\u044b\u0432\u043e\u0434\u0438\u043c\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0435 out = output.icecast( # \u0445\u043e\u0441\u0442 \u0441 icecast host = &quot;127.0.0.1&quot;,  # \u0435\u0433\u043e \u043f\u043e\u0440\u0442 port = 8000,  # \u043b\u043e\u0433\u0438\u043d user = &quot;source&quot;,  # \u0438 \u043f\u0430\u0440\u043e\u043b\u044c password = &quot;mypass&quot;,  # \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 name = &quot;\u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0440\u0430\u0434\u0438\u043e&quot;,  # \u0436\u0430\u043d\u0440 genre = &quot;Rock&quot;,  # \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0430\u0439\u0442 url = &quot;http:\/\/habrahabr.ru&quot;,  # \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 encoding = &quot;UTF-8&quot; )  # \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c telnet-\u0441\u0435\u0440\u0432\u0435\u0440 set(&quot;server.telnet.bind_addr&quot;,&quot;127.0.0.1&quot;) set(&quot;server.telnet&quot;,true)  # _____________________________________ # \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043d\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0434\u0438\u043e\u0441\u0435\u0440\u0432\u0435\u0440\u0430.  # \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0430 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043b\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u043a \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430\u043c, \u043d\u043e \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0430\u043f\u043e\u043a, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0440\u043e\u043a \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0443\u0434\u043e\u0431\u043d\u0435\u0435.  # \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 wd = &quot;\/home\/user\/radio&quot;  # \u043f\u0443\u0442\u044c \u043a \u043f\u0430\u043f\u043a\u0435 \u0441 \u0430\u0443\u0434\u0438\u043e\u0444\u0430\u0439\u043b\u0430\u043c\u0438 pl = &quot;#{wd}\/collection&quot;  # \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043f\u0430\u043f\u043a\u0430 tech = &quot;#{wd}\/technical&quot;  # \u043b\u043e\u0433\u0438 set(&quot;log.file.path&quot;,&quot;#{tech}\/liquidsoap.log&quot;) # \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443 \u043b\u043e\u0433\u0430 set(&quot;log.level&quot;, 3) # \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f  # \u043f\u0430\u043f\u043a\u0430 \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0430\u043c\u0438 promo_dir = &quot;#{pl}\/promo&quot;  # \u043f\u0430\u043f\u043a\u0430 \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438 progr_dir = &quot;#{pl}\/programs&quot;  # \u043f\u0430\u043f\u043a\u0430 \u0441 \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0449\u0438\u043c\u0441\u044f \u044d\u0444\u0438\u0440\u043e\u043c ef = &quot;#{pl}\/efir&quot;  # \u043f\u0430\u043f\u043a\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u044d\u0444\u0438\u0440\u043e\u0432 ni = &quot;#{ef}\/night&quot; mo = &quot;#{ef}\/morning&quot; da = &quot;#{ef}\/daytime&quot; ev = &quot;#{ef}\/evening&quot;  # \u043f\u0430\u043f\u043a\u0438 \u0441 \u043c\u0443\u0437\u044b\u043a\u043e\u0439 mus_ni_dir = &quot;#{ni}\/music&quot; mus_mo_dir = &quot;#{mo}\/music&quot; mus_da_dir = &quot;#{da}\/music&quot; mus_ev_dir = &quot;#{ev}\/music&quot;  # \u043f\u0430\u043f\u043a\u0438 \u0441 \u0434\u0436\u0438\u043d\u0433\u043b\u0430\u043c\u0438 jin_ni_dir = &quot;#{ni}\/jingles&quot; jin_mo_dir = &quot;#{mo}\/jingles&quot; jin_da_dir = &quot;#{da}\/jingles&quot; jin_ev_dir = &quot;#{ev}\/jingles&quot;  # \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 - \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u0443\u0442\u0438 \u043a \u043f\u0430\u043f\u043a\u0430\u043c, \u0430 \u0437\u0434\u0435\u0441\u044c - \u043a \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c. 1_prog_pl = &quot;#{progr_dir}\/1_prog.pl&quot; 2_prog_pl = &quot;#{progr_dir}\/2_prog.pl&quot;   # _____________________________________ # \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0442\u0438\u043f\u0430 &quot;source&quot;, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e \u0430\u0443\u0434\u0438\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438.  # \u0417\u0434\u0435\u0441\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 &quot;reload&quot; \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437 \u0432 360 \u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u0435\u0440\u0435\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u043f\u043e \u043f\u0443\u0442\u0438, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c\u0443 \u0434\u0430\u043b\u0435\u0435. # \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u043c\u0443\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u043d\u0434\u043e\u043c\u043d\u043e, \u0430\u0442\u0440\u0438\u0431\u0443\u0442 &lt;code&gt;mode = &quot;normal&quot;&lt;\/code&gt; \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443.  # \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u044b, \u0434\u0436\u0438\u043d\u0433\u043b\u044b, \u0432\u0441\u0442\u0430\u0432\u043a\u0438, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b mus_ni   = playlist (reload = 360, &quot;#{mus_ni_dir}&quot;) mus_mo   = playlist (reload = 360, &quot;#{mus_mo_dir}&quot;) mus_da   = playlist (reload = 360, &quot;#{mus_da_dir}&quot;) mus_ev   = playlist (reload = 360, &quot;#{mus_ev_dir}&quot;)  jin_ni   = playlist (reload = 360, &quot;#{jin_ni_dir}&quot;) jin_mo   = playlist (reload = 360, &quot;#{jin_mo_dir}&quot;) jin_da   = playlist (reload = 360, &quot;#{jin_da_dir}&quot;) jin_ev   = playlist (reload = 360, &quot;#{jin_ev_dir}&quot;)  promo    = playlist (reload = 360, &quot;#{promo_dir}&quot;) 1_prog   = playlist (reload = 360, &quot;#{1_prog_pl}&quot;, mode = &quot;normal&quot;) 2_prog   = playlist (reload = 360, &quot;#{2_prog_pl}&quot;, mode = &quot;normal&quot;)  # _____________________________________ # \u0441\u0442\u0440\u043e\u0438\u043c 4 \u043f\u043e\u0442\u043e\u043a\u0430, \u0441\u0440\u0430\u0437\u0443 \u0432\u0441\u0451 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0438\u0432\u0430\u044f # \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u043c \u0432\u0441\u0442\u0430\u0432\u043a\u0438 ins_ni = rotate (weights = [2, 1], [jin_ni, promo]) ins_mo = rotate (weights = [2, 1], [jin_mo, promo]) ins_da = rotate (weights = [2, 1], [jin_da, promo]) ins_ev = rotate (weights = [2, 1], [jin_ev, promo])  # \u0441\u043c\u0435\u0448\u0438\u0432\u0430\u0435\u043c \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0438 \u043f\u043e\u0442\u043e\u043a\u0438 ni = rotate (weights = [3, 1], [mus_ni, ins_ni]) mo = rotate (weights = [3, 1], [mus_mo, ins_mo]) da = rotate (weights = [3, 1], [mus_da, ins_da]) ev = rotate (weights = [3, 1], [mus_ev, ins_ev])  #_______________________________________________________________________ # \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u0444\u0438\u0440\u0430  radio = switch (track_sensitive = true, [   ({ (1w21h - 1w22h) or (3w21h - 3w22h) or (5w21h - 5w22h)}, 1_prog),   ({ (1w18h - 1w19h) or (3w18h - 3w19h) or (4w18h - 4w19h) or (5w18h - 5w19h)}, 2_prog),   ({  2h - 6h  }, ni),   ({  6h - 9h  }, mo),   ({  9h - 19h }, da),   ({ 19h - 2h  }, ev) ])  #_______________________________________________________________________  # \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c crossfade radio = crossfade(start_next=1., fade_out=1., fade_in=1., radio)  # \u0438, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0432\u0435\u0449\u0430\u043b\u043a\u0438 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c  out(  %vorbis.abr(samplerate = 44100, channels = 2, bitrate = 128, max_bitrate = 192, min_bitrate = 96),  description = &quot;Average vorbis 96-128-192 Kbps&quot;,  mount = &quot;HabraRadio_vorbis_avg_128&quot;,  mksafe(radio) )  out(  %mp3(bitrate = 320, id3v2 = true),  description = &quot;MP3 320 Kbps&quot;,  mount = &quot;HabraRadio_320&quot;,  mksafe(radio) )  out(  %mp3(bitrate = 192, id3v2 = true),  description = &quot;MP3 192 Kbps&quot;,  mount = &quot;HabraRadio_192&quot;,  mksafe(radio) ) <\/code><\/pre>\n<p>  \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432:<br \/>  1) \u042d\u0442\u0438 \u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<pre><code class=\"bash\">wd = &quot;\/home\/user\/radio&quot; pl = &quot;#{wd}\/collection&quot; ef = &quot;#{pl}\/efir&quot; ni = &quot;#{ef}\/night&quot; mus_ni_dir = &quot;#{ni}\/music&quot; mus_ni = playlist (reload = 360, &quot;#{mus_ni_dir}&quot;)<\/code><\/pre>\n<p>  \u0432\u043f\u043e\u043b\u043d\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 <\/p>\n<pre><code class=\"bash\">mus_ni = playlist (reload = 360, &quot;\/home\/user\/radio\/collection\/efir\/night\/music&quot;) <\/code><\/pre>\n<p>  \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0432\u0430\u043c \u0437\u0430 \u044d\u0442\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u2014 Liquidsoap \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e #{wd} \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 wd.<\/p>\n<p>  2) \u0412 \u043c\u0435\u0441\u0442\u0435, \u0433\u0434\u0435 \u043c\u044b \u0432\u043d\u0435\u0434\u0440\u044f\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0438, \u0431\u044b\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0438:  <\/p>\n<pre><code class=\"bash\">ins_ni = rotate (weights = [2, 1], [jin_ni, promo]) ni = rotate (weights = [3, 1], [mus_ni, ins_ni]) <\/code><\/pre>\n<p>  <code>rotate()<\/code> \u2014 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u044e<br \/>  <code>weights = [2, 1], [jin_ni, promo]<\/code> \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0431\u0440\u0430\u0442\u044c 2 \u0442\u0440\u0435\u043a\u0430 \u0438\u0437 jin_ni, \u0437\u0430\u0442\u0435\u043c 1 \u0438\u0437 promo, \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e 2 \u0442\u0440\u0435\u043a\u0430 \u0438\u0437 jin_ni \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<br \/>  <code>weights = [3, 1], [mus_ni, ins_ni]<\/code> \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0431\u0440\u0430\u0442\u044c 3 \u0442\u0440\u0435\u043a\u0430 \u0438\u0437 mus_ni, \u0437\u0430\u0442\u0435\u043c 1 \u0442\u0440\u0435\u043a \u0438\u0437 \u0442\u043e\u0433\u043e \u0443\u0436\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u043e\u0439 \u0440\u0430\u043d\u0435\u0435 (ins_ni).<\/p>\n<p>  3) \u041f\u0440\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u044d\u0444\u0438\u0440\u0430 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438:<\/p>\n<pre><code class=\"bash\">radio = switch (track_sensitive = true, [   ({ (1w21h - 1w22h) or (3w21h - 3w22h) or (5w21h - 5w22h)}, 1_prog),   ({ (1w18h - 1w19h) or (3w18h - 3w19h) or (4w18h - 4w19h) or (5w18h - 5w19h)}, 2_prog),   ({  2h - 6h  }, ni),   ({  6h - 9h  }, mo),   ({  9h - 19h }, da),   ({ 19h - 2h  }, ev) ]) <\/code><\/pre>\n<p>  <code>switch()<\/code> \u2014 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0430\u0443\u0434\u0438\u043e\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0438 \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.<br \/>  <code>track_sensitive = true<\/code> \u2014 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0435 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0442\u0440\u0435\u043a, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u0440\u0435\u043c\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 \u0438\u0441\u0442\u0435\u043a\u043b\u043e. \u0422.\u0435. \u0435\u0441\u043b\u0438 \u043d\u043e\u0447\u043d\u043e\u0439 \u0442\u0440\u0435\u043a \u043d\u0430\u0447\u0430\u043b\u0441\u044f \u0432 05:59, \u0442\u043e, \u043f\u043e\u043a\u0430 \u043e\u043d \u043d\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f, \u0432 \u0441\u0438\u043b\u0443 \u043d\u0435 \u0432\u0441\u0442\u0443\u043f\u0438\u0442 \u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442.<br \/>  <code>({ (1w21h - 1w22h) or (3w21h - 3w22h) or (5w21h - 5w22h)}, 1_prog),<\/code> \u2014 \u043f\u043e \u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a\u0430\u043c, \u0441\u0440\u0435\u0434\u0430\u043c \u0438 \u043f\u044f\u0442\u043d\u0438\u0446\u0430\u043c \u0441 21 \u0434\u043e 22 \u0447\u0430\u0441\u043e\u0432 \u0438\u0433\u0440\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a 1_prog.<br \/>  \u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044f \u043f\u043e\u043d\u044f\u043b, \u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0438\u0432 \u0441\u043f\u0438\u0441\u043a\u0435 switch(), \u0447\u0442\u043e \u0432\u044b\u0448\u0435 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b, \u0438\u043c\u0435\u044e\u0442 \u0432\u044b\u0441\u0448\u0438\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442.<\/p>\n<h4>\u0424\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430 \u0440\u0430\u0434\u0438\u043e\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/h4>\n<p>  \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u043f\u0440\u043e\u0441\u0442: \u0432 \u043f\u0430\u043f\u043a\u0435 prog_1 \u043b\u0435\u0436\u0430\u0442 \u0444\u0430\u0439\u043b\u044b \u0440\u0430\u0434\u0438\u043e\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0432\u0438\u0434\u0430 \u00ab01_ProgName\u00bb, \u0433\u0434\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0433\u043e\u043b\u043e\u0441\u0430 \u0440\u0430\u0434\u0438\u043e\u0432\u0435\u0434\u0443\u0449\u0438\u0445. \u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u0430:<\/p>\n<p>  <i>01_ProgName<br \/>  Music152<br \/>  02_ProgName<br \/>  Music241<br \/>  03_ProgName<br \/>  Music937<br \/>  &#8230;<\/i><\/p>\n<p>  \u0414\u0443\u043c\u0430\u044e, \u043d\u0430 bash \u0431\u044b\u043b\u043e \u0431\u044b \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0439 \u043f\u0438\u0441\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0442\u0430\u043a\u043e\u0433\u043e \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u0430, \u043d\u043e \u044f \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0434\u043e\u0440\u0432\u0430\u043b\u0441\u044f \u0434\u043e Python, \u043f\u043e\u0441\u0435\u043c\u0443 \u043d\u0430 \u0441\u043a\u043e\u0440\u0443\u044e \u0440\u0443\u043a\u0443 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043d\u0430 \u043d\u0451\u043c:<\/p>\n<h6>.\/radio\/technical\/generatorProg1.py<\/h6>\n<pre><code class=\"python\">#!\/usr\/bin\/env python2 # -*- coding: utf-8 -*- import os import random  finalPaylist = '\/home\/user\/radio\/collection\/programs\/1_prog.pl' music = '\/home\/user\/radio\/collection\/efir\/evening\/music\/' show = '\/home\/user\/radio\/collection\/programs\/1_prog\/' myShow = sorted(os.listdir(show)) myMusic = os.listdir(music) listOfTracks = []  def getRandomTrack(list):     i = 0     buf = random.choice(myMusic)     while (buf in list) & (not i == 100):         i += 1         buf = random.choice(myMusic)     return buf  for i in range(60):     if not i%2:         try:             listOfTracks.append(show + myShow[i\/2])         except :             listOfTracks.append(music + getRandomTrack(listOfTracks))     else:         listOfTracks.append(music + getRandomTrack(listOfTracks))  myFile = open(finalPaylist, 'w') for i in range(len(listOfTracks)):     myFile.write(listOfTracks[i]+'\\n') <\/code><\/pre>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0447\u0430\u0441 \u044d\u0444\u0438\u0440\u0430 \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 \u0444\u0430\u0439\u043b\u043e\u0432 \u0440\u0430\u0434\u0438\u043e\u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043d\u0435 \u0437\u0430\u0431\u044b\u0442\u044c \u043f\u043e\u0434\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u0432 \u043d\u0435\u0440\u0430\u043d\u0434\u043e\u043c\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435. \u041d\u0443 \u0438 \u0434\u043b\u044f \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0430\u043a \u0436\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u0441\u0442\u043e\u0438\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<h4>\u0424\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0448\u0442\u0440\u0438\u0445\u0438<\/h4>\n<p>  \u0417\u0430\u043d\u043e\u0441\u0438\u043c \u0432 crontab \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u043e\u0432:<\/p>\n<h6>crontab -e<\/h6>\n<pre><code class=\"bash\">0 19 * * * \/home\/user\/radio\/technical\/generatorProg1.py 0 16 * * * \/home\/user\/radio\/technical\/generatorProg2.py <\/code><\/pre>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a KDE \u043f\u0430\u0440\u0443 \u0441\u0442\u0440\u043e\u043a:<\/p>\n<h6>\/home\/user\/.kde4\/Autostart\/start_liquidsoap.sh<\/h6>\n<pre><code class=\"bash\">#!\/bin\/sh cp \/home\/user\/radio\/technical\/liquidsoap.log \/home\/user\/radio\/technical\/liquidsoap_backup.log cat \/dev\/null &gt; \/home\/user\/radio\/technical\/liquidsoap.log liquidsoap \/home\/user\/radio\/technical\/start_liquidsoap <\/code><\/pre>\n<p>  \u0410\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c IceCast \u0442\u043e\u0436\u0435 \u043d\u0435 \u043f\u043e\u043c\u0435\u0448\u0430\u043b\u043e \u0431\u044b  <\/p>\n<pre><code class=\"bash\">\/etc\/init.d\/icecast start chkconfig --add icecast <\/code><\/pre>\n<p>  \u0418, \u0447\u0442\u043e \u0432\u0430\u0436\u043d\u043e, \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u0441\u0442\u043e\u0438\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c NTP \u2014 \u0437\u0434\u0435\u0441\u044c \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0432\u0435\u0440\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0415\u0433\u043e \u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b \u0438\u0437-\u043f\u043e\u0434 YaST.<\/p>\n<h4>\u0412 \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h4>\n<p>  \u0421\u0435\u0439\u0447\u0430\u0441 \u044d\u0442\u043e \u0440\u0430\u0434\u0438\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0444\u0430\u0439\u043b\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e \u0438\u0437-\u043f\u043e\u0434 Windows, \u0447\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u0432\u044f\u0437\u043a\u0438 openVPN+Samba, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0438\u0433\u0440\u0430\u044e\u0442, \u043b\u043e\u0433\u0438 \u043f\u0438\u0448\u0443\u0442\u0441\u044f. \u041d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043e \u0435\u0449\u0451 \u043f\u0430\u0440\u0430 \u0444\u0438\u0447, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445: \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u0441\u0442\u0430\u0432\u043e\u043a \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0447\u0430\u0441\u0430, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0432\u043e\u0435\u0439 \u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u043b\u0435\u0439\u043b\u0438\u0441\u0442\u043e\u0432, \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446-\u0437\u0432\u043e\u043d\u043a\u0438 \u0432 \u043f\u0440\u044f\u043c\u043e\u0439 \u044d\u0444\u0438\u0440, \u043f\u0440\u0438\u0447\u0451\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0433\u043e \u0438 \u0432\u0441\u044f, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u0443\u0449\u0435\u0439 \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043f\u043e\u0438\u0441\u043a \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0445 \u043a\u0430\u043c\u043d\u0435\u0439. \u0412\u043e\u043e\u0431\u0449\u0435 \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0441 Liquidsoap \u2014 \u043e\u0434\u043d\u043e \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u0435. \u0425\u043e\u0440\u043e\u0448\u0435\u0439 \u0432\u0441\u0435\u043c \u043c\u0443\u0437\u044b\u043a\u0438. \t\t\t \t\t\t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/156591\/\"> http:\/\/habrahabr.ru\/post\/156591\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\"> \t\t\t\u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0441\u043a\u0430\u0437\u0430\u043d\u043e \u043f\u0440\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0440\u0430\u0434\u0438\u043e\u0432\u0435\u0449\u0430\u043d\u0438\u0435 \u0438\u0437\u043d\u0443\u0442\u0440\u0438. \u0415\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 <a href=\"http:\/\/habrahabr.ru\/post\/149681\/\">\u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435<\/a> <a href=\"http:\/\/habrahabr.ru\/post\/153817\/\">\u043e\u0441\u043d\u043e\u0432\u044b<\/a> \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0440\u0430\u0434\u0438\u043e\u0432\u0435\u0449\u0430\u043d\u0438\u044f, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0431\u044b \u0445\u043e\u0442\u0435\u043b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e\u0439 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0440\u0430\u0434\u0438\u043e\u0441\u0442\u0430\u043d\u0446\u0438\u0438, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 \u043d\u0430 \u0441\u0432\u044f\u0437\u043a\u0435 \u043d\u0435\u0437\u0430\u0441\u043b\u0443\u0436\u0435\u043d\u043d\u043e \u043c\u0430\u043b\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e <a href=\"http:\/\/savonet.sourceforge.net\/\">Liquidsoap 1.0.1<\/a> \u0438 \u0432\u0435\u0437\u0434\u0435\u0441\u0443\u0449\u0435\u0433\u043e <a href=\"http:\/\/www.icecast.org\/\">IceCast 2.3.2<\/a>. \u0421\u0442\u0430\u0442\u044c\u044f \u0440\u0430\u0441\u0447\u0438\u0442\u0430\u043d\u0430 \u043d\u0430 \u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u043d\u0430\u0435\u0442, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0430\u0443\u0434\u0438\u043e\u043f\u043e\u0442\u043e\u043a, IceCast, \u043b\u0438\u043d\u0443\u043a\u0441\u043e\u0432\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u0442\u0430\u043a\u0438 <i>\u0447\u0442\u043e<\/i> \u043e\u043d \u0432\u043e\u043e\u0431\u0449\u0435 \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u043d\u0430 \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u0430\u0436\u0435 \u043d\u0435 \u0437\u0430\u0440\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-156591","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/156591","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=156591"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/156591\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=156591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=156591"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=156591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}