{"id":316407,"date":"2021-01-15T09:01:17","date_gmt":"2021-01-15T09:01:17","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=316407"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=316407","title":{"rendered":"\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0441\u0432\u043e\u0439 RTMP \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433\u0430"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qy\/la\/hl\/qylahlusl8qf-xdfudzhznzvn2u.jpeg\"><\/p>\n<p>  \u0418\u043d\u043e\u0433\u0434\u0430 YouTube \u0438\u043b\u0438 Twitch \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u043a\u0430\u043a \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433\u043e\u0432\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u2014 \u0441\u043a\u0430\u0436\u0435\u043c, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u043b\u0438\u0442\u0435 \u043f\u043e\u0440\u0442\u0430\u043b \u0441 \u0432\u0435\u0431\u0438\u043d\u0430\u0440\u0430\u043c\u0438 \u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c 18+, \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442\u0435 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0430 \u0438\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044e \u043e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430. \u0423 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u043a\u0430\u043a \u0432 \u0432\u0438\u0434\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (\u0442\u0435 \u0436\u0435 \u043c\u0438\u043d\u0443\u0441\u044b, \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0438 \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u0430\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430), \u0442\u0430\u043a \u0438 \u0432 \u0432\u0438\u0434\u0435 self-hosted \u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0445 \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u043e\u043d\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u043a\u0440\u043e\u0445\u043e\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u043a\u0438 \u0438\u0437 \u043f\u0430\u0440\u044b \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u0442\u0447\u0430\u044f\u043d\u043d\u043e \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u044b\u0440\u0430\u0441\u0442\u0438 \u0432 \u0441\u0435\u0440\u0432\u0438\u0441, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u0447\u0430\u0442\u044b, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441\u0442\u0440\u0438\u043c\u043e\u0432 \u0438 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0451\u0442\u0435 \u043e\u0442\u0434\u0430\u043b\u044f\u044f\u0441\u044c \u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0446\u0435\u043b\u0438: \u0434\u0430\u0442\u044c \u043c\u0438\u0440\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u043c\u0443 \u043c\u0430\u043d\u0443\u0430\u043b\u0443 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0439. \u0427\u0442\u043e \u0441 \u043d\u0438\u043c \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u043b\u044c\u0448\u0435, \u0432 \u043a\u0430\u043a\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u044d\u0442\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u2014 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0448\u0435 \u043b\u0438\u0447\u043d\u043e\u0435 \u0434\u0435\u043b\u043e, \u0430 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 \u0442\u0432\u0438\u0447\u0430 \u0441 \u043b\u0430\u0433\u0430\u044e\u0449\u0438\u043c\u0438 \u0438 \u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u043b\u044f\u0449\u0438\u043c\u0441\u044f \u0431\u0438\u043b\u0434\u043e\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043d\u0438\u043a\u043e\u043c\u0443, \u043a\u0440\u043e\u043c\u0435 \u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0432\u043e\u0435\u0433\u043e RTMP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u043f\u043b\u0435\u0435\u0440\u043e\u043c.<a name=\"habracut\"><\/a><\/p>\n<h2>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<\/h2>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/1d\/gz\/yt\/1dgzytap861ejtdawvhgfs2ub0q.jpeg\"><\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e: \u0437\u0430 \u043f\u0440\u0438\u0451\u043c \u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0443 \u043f\u043e\u0442\u043e\u043a\u0430 \u0438\u0437 OBS \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 RTMP \u043c\u043e\u0434\u0443\u043b\u044c Nginx&#8217;a. \u0421\u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043e\u043d \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0440\u0443\u0436\u0443, \u0433\u0434\u0435 \u0435\u0433\u043e \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0435\u0442 HLS (HTTP Live Streaming) \u043a\u043b\u0438\u0435\u043d\u0442 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438 \u0432\u044b\u0434\u0430\u0451\u0442 \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432 \u043f\u043b\u0435\u0435\u0440\u0435.<\/p>\n<h2>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h2>\n<p>  \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0443\u043f\u043e\u0440 \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440. \u042f \u0432\u0437\u044f\u043b <a href=\"https:\/\/vdsina.ru\/cloud-servers?partner=habr225\">\u044d\u043f\u0438\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440<\/a> \u0441 \u0434\u0432\u0443\u043c\u044f \u044f\u0434\u0440\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u0442\u044c \u0431\u0438\u0442\u0440\u0435\u0439\u0442, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0433\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f \u2014 \u043d\u0430 11-12k \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441\u0442\u0430\u043b\u0430 \u0431\u043e\u043b\u0442\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0439\u043e\u043d\u0435 96-100%, \u0442\u0430\u043a \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u044f\u0436\u0451\u043b\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u043b\u0443\u0447\u0448\u0435 \u0432\u0437\u044f\u0442\u044c \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 \u0441 \u0437\u0430\u043f\u0430\u0441\u043e\u043c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/_s\/pi\/ys\/_spiyshz9hp5aiazvtdrrjq9yei.png\"><\/p>\n<p>  \u041d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f Docker \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e nginx-rtmp \u0441 FFmpeg \u0438 \u043b\u044e\u0431\u043e\u0439 \u0432\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u043e\u0442 \u0436\u0435 Nginx) \u0434\u043b\u044f \u0440\u0430\u0437\u0434\u0430\u0447\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u043f\u043b\u0435\u0435\u0440\u043e\u043c. \u042f \u0441\u0442\u0430\u0432\u0438\u043b \u043d\u0430 Ubuntu 20.04:<\/p>\n<pre><code class=\"bash\">$ sudo apt-get update  $ sudo apt-get install \\   apt-transport-https \\   ca-certificates \\   curl \\   gnupg-agent \\   software-properties-common \\   nginx  $ curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo apt-key add -  $ sudo apt-key fingerprint 0EBFCD88  $ sudo add-apt-repository \\   &quot;deb [arch=amd64] https:\/\/download.docker.com\/linux\/ubuntu \\   $(lsb_release -cs) \\   stable&quot;  $ sudo apt-get update  $ sudo apt-get install docker-ce docker-ce-cli containerd.io <\/code><\/pre>\n<p>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 c \u043f\u0440\u043e\u0431\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u0440\u0442\u0430\u043c\u0438:<\/p>\n<pre><code class=\"bash\">docker run -d -p 1935:1935 -p 8080:80 --rm alfg\/nginx-rtmp<\/code><\/pre>\n<p>  \u0417\u0430\u0442\u0435\u043c \u0432 OBS \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043d\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c \u043f\u043e\u0442\u043e\u043a\u0430 (\u043a\u043b\u044e\u0447 = \u0438\u043d\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0441\u0442\u0440\u0438\u043c\u0430):<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gh\/_a\/_a\/gh_a_a6bzdrtybmfyfoyfzyk3dw.png\"><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044e \u0438 \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0438\u0442\u044c\u0441\u044f \u0447\u0442\u043e \u043f\u043e\u0442\u043e\u043a \u043f\u043e\u0448\u0451\u043b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 <a href=\"https:\/\/hls-js.netlify.app\/demo\/\">\u0434\u0435\u043c\u043a\u0435 hls.js<\/a> \u0438\u043b\u0438 \u0432 \u043b\u044e\u0431\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u043c \u043f\u043b\u0435\u0435\u0440\u0435 HLS.<\/p>\n<p>  \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440. \u0412 nginx.conf \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043f\u0443\u0442\u044c \u0434\u043e \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b:<\/p>\n<pre><code class=\"nginx\">location \/ {                                                       root \/var\/www\/;                                                     index index.htm index.html;                                    autoindex on;                                 } <\/code><\/pre>\n<pre><code class=\"bash\">sudo nginx -s reload<\/code><\/pre>\n<p>  \u0412 index.html \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043a\u043e\u043f\u0438\u043f\u0430\u0441\u0442\u0438\u043c \u043a\u043e\u0434 \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 hls.js:<\/p>\n<pre><code class=\"html\">  &lt;script src=&quot;https:\/\/cdn.jsdelivr.net\/npm\/hls.js@latest&quot;&gt;&lt;\/script&gt;   &lt;!-- Or if you want a more recent alpha version --&gt;   &lt;!-- &lt;script src=&quot;https:\/\/cdn.jsdelivr.net\/npm\/hls.js@alpha&quot;&gt;&lt;\/script&gt; --&gt;   &lt;video id=&quot;video&quot;&gt;&lt;\/video&gt;   &lt;script&gt;     var video = document.getElementById('video');     var videoSrc = 'https:\/\/test-streams.mux.dev\/x36xhzz\/x36xhzz.m3u8';     if (Hls.isSupported()) {       var hls = new Hls();       hls.loadSource(videoSrc);       hls.attachMedia(video);       hls.on(Hls.Events.MANIFEST_PARSED, function() {         video.play();       });     }     \/\/ hls.js is not supported on platforms that do not have Media Source     \/\/ Extensions (MSE) enabled.     \/\/     \/\/ When the browser has built-in HLS support (check using `canPlayType`),     \/\/ we can provide an HLS manifest (i.e. .m3u8 URL) directly to the video     \/\/ element through the `src` property. This is using the built-in support     \/\/ of the plain video element, without using hls.js.     \/\/     \/\/ Note: it would be more normal to wait on the 'canplay' event below however     \/\/ on Safari (where you are most likely to find built-in HLS support) the     \/\/ video.src URL must be on the user-driven white-list before a 'canplay'     \/\/ event will be emitted; the last video event that can be reliably     \/\/ listened-for when the URL is not on the white-list is 'loadedmetadata'.     else if (video.canPlayType('application\/vnd.apple.mpegurl')) {       video.src = videoSrc;       video.addEventListener('loadedmetadata', function() {         video.play();       });     }   &lt;\/script&gt; <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430 8080 \u043f\u043e\u0440\u0442\u0443 \u043d\u0430\u0448\u0435\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0440\u0430\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0436\u0443\u0442\u043a\u043e\u0432\u0430\u0442\u044b\u0439 \u043c\u0443\u043b\u044c\u0442\u0438\u043a \u043f\u0440\u043e \u0437\u0430\u0439\u0446\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yy\/ho\/ya\/yyhoyanpz7ccc__nnh99dxtkro0.png\"><\/p>\n<p>  \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0443\u0442\u044c \u043d\u0430 <code>http:\/\/server_ip:8080\/live\/stream-key.m3u8<\/code> \u0438 \u0438\u0434\u0442\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044e!<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/a3\/2m\/wd\/a32mwdjql5lg9mmmupxxxnccp10.png\"><\/p>\n<p>  \u041d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 docker stats:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ck\/ye\/j3\/ckyej3tu6rwx0z8arayl555biak.png\"><\/p>\n<h2>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h2>\n<p>  \u0420\u0430\u0437\u043c\u0435\u0449\u0430\u044f \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433\u043e\u0432\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0432\u0430\u0436\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u0442\u044c, \u0447\u0442\u043e \u0432\u0435\u0441\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u0441\u043e \u0432\u0441\u0435\u0445 \u0437\u0440\u0438\u0442\u0435\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0433\u043e \u2014 \u0437\u043d\u0430\u0447\u0438\u0442, \u0435\u0441\u043b\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u043e\u043d\u043b\u0430\u0439\u043d \u0443 \u0432\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 1-2 \u0447\u0435\u043b\u043e\u0432\u0435\u043a, \u0441\u0442\u043e\u0438\u0442 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (\u0432\u0435\u0434\u044c \u0442\u0440\u0430\u043d\u0441\u043a\u043e\u0434\u0438\u0440\u0432\u043e\u0430\u043d\u0438\u0435 \u043e\u0449\u0443\u0442\u0438\u043c\u043e \u0434\u0430\u0432\u0438\u0442 \u0438 \u043d\u0430 CPU). \u0414\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0435\u0441\u0442\u044c \u044d\u043d\u0442\u0435\u0440\u043f\u0440\u0430\u0439\u0437\u043d\u043e\u0435 (\u043d\u043e \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u043e\u0435) \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 SRS aka Simple Realtime Server (<a href=\"https:\/\/github.com\/ossrs\/srs\">GitHub<\/a>, 10k \u0437\u0432\u0451\u0437\u0434, \u043e\u0433\u0440\u043e\u043c\u043d\u0430\u044f \u0432\u0438\u043a\u0438, \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430). \u0412 \u043d\u0435\u0433\u043e \u0441\u0442\u043e\u0438\u0442 \u0432\u043d\u0438\u043a\u0430\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0441\u0442\u0440\u0438\u043c\u044b \u043d\u0443\u0436\u043d\u044b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0437\u0430\u0434\u0430\u0447, \u0430 \u043d\u0435 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u043c \u0432\u0438\u0434\u0435\u043e\u043f\u043e\u0442\u043e\u043a\u043e\u043c.<\/p>\n<hr>\n<p>  <\/p>\n<h4>\u041d\u0430 \u043f\u0440\u0430\u0432\u0430\u0445 \u0440\u0435\u043a\u043b\u0430\u043c\u044b<\/h4>\n<p>  <a href=\"https:\/\/vdsina.ru\/cloud-servers?partner=habr225\">\u0421\u0435\u0440\u0432\u0435\u0440\u044b \u0432 \u0430\u0440\u0435\u043d\u0434\u0443<\/a> \u0434\u043b\u044f \u043b\u044e\u0431\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u2014 \u044d\u0442\u043e \u043f\u0440\u043e \u043d\u0430\u0448\u0438 <b>\u044d\u043f\u0438\u0447\u043d\u044b\u0435<\/b>! \u0412\u0441\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u044b \u043e\u0442 DDoS-\u0430\u0442\u0430\u043a, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u041e\u0421 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430 ISO. \u041b\u0443\u0447\u0448\u0435 \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c!<\/p>\n<p>  <a href=\"https:\/\/vdsina.ru\/cloud-servers?partner=habr225\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/8p\/3v\/z4\/8p3vz47nluspfyc0axlkx88gdua.png\"><\/a><\/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=\"https:\/\/habr.com\/ru\/company\/vdsina\/blog\/536206\/\"> https:\/\/habr.com\/ru\/company\/vdsina\/blog\/536206\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/qy\/la\/hl\/qylahlusl8qf-xdfudzhznzvn2u.jpeg\"><\/p>\n<p>  \u0418\u043d\u043e\u0433\u0434\u0430 YouTube \u0438\u043b\u0438 Twitch \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u043a\u0430\u043a \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433\u043e\u0432\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u2014 \u0441\u043a\u0430\u0436\u0435\u043c, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u0438\u043b\u0438\u0442\u0435 \u043f\u043e\u0440\u0442\u0430\u043b \u0441 \u0432\u0435\u0431\u0438\u043d\u0430\u0440\u0430\u043c\u0438 \u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c 18+, \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442\u0435 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0435 \u043f\u0440\u0430\u0432\u0430 \u0438\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u0433\u043e\u0440\u043e\u0434\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044e \u043e\u0442 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430. \u0423 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432 \u043a\u0430\u043a \u0432 \u0432\u0438\u0434\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 (\u0442\u0435 \u0436\u0435 \u043c\u0438\u043d\u0443\u0441\u044b, \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0438 \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u0430\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430), \u0442\u0430\u043a \u0438 \u0432 \u0432\u0438\u0434\u0435 self-hosted \u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043e\u043f\u0435\u043d\u0441\u043e\u0440\u0441\u043d\u044b\u0445 \u0441\u0442\u0440\u0438\u043c\u0438\u043d\u0433\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0432\u0441\u0435 \u043e\u043d\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u043a\u0440\u043e\u0445\u043e\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u043a\u0438 \u0438\u0437 \u043f\u0430\u0440\u044b \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439, \u0430 \u0437\u0430\u0442\u0435\u043c \u043e\u0442\u0447\u0430\u044f\u043d\u043d\u043e \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u0432\u044b\u0440\u0430\u0441\u0442\u0438 \u0432 \u0441\u0435\u0440\u0432\u0438\u0441, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b, \u0447\u0430\u0442\u044b, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441\u0442\u0440\u0438\u043c\u043e\u0432 \u0438 \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0451\u0442\u0435 \u043e\u0442\u0434\u0430\u043b\u044f\u044f\u0441\u044c \u043e\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 \u0446\u0435\u043b\u0438: \u0434\u0430\u0442\u044c \u043c\u0438\u0440\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e\u043c\u0443 \u043c\u0430\u043d\u0443\u0430\u043b\u0443 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0439. \u0427\u0442\u043e \u0441 \u043d\u0438\u043c \u0431\u0443\u0434\u0435\u0442 \u0434\u0430\u043b\u044c\u0448\u0435, \u0432 \u043a\u0430\u043a\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u044d\u0442\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u2014 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0430\u0448\u0435 \u043b\u0438\u0447\u043d\u043e\u0435 \u0434\u0435\u043b\u043e, \u0430 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 \u0442\u0432\u0438\u0447\u0430 \u0441 \u043b\u0430\u0433\u0430\u044e\u0449\u0438\u043c\u0438 \u0438 \u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c\u0438 \u0438 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u043b\u044f\u0449\u0438\u043c\u0441\u044f \u0431\u0438\u043b\u0434\u043e\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043d\u0438\u043a\u043e\u043c\u0443, \u043a\u0440\u043e\u043c\u0435 \u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0432\u043e\u0435\u0433\u043e RTMP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u043f\u043b\u0435\u0435\u0440\u043e\u043c.<\/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-316407","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/316407","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=316407"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/316407\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=316407"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=316407"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=316407"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}