{"id":262915,"date":"2015-08-04T21:20:02","date_gmt":"2015-08-04T17:20:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=262915"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=262915","title":{"rendered":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Media Capture API \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435"},"content":{"rendered":"<p>       <i>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 <a href=\"http:\/\/www.codeproject.com\/Articles\/1013212\/Using-the-Media-Capture-API-in-the-Browser\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u00abUsing the Media Capture API in the Browser\u00bb \u0430\u0432\u0442\u043e\u0440\u0441\u0442\u0432\u0430 Dave Voyles.<br \/>  <\/i><br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/a19\/a54\/4fc\/a19a544fc80e491f98535a2a0bc03205.jpg\"\/><\/p>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 <a href=\"http:\/\/w3c.github.io\/mediacapture-main\/getusermedia.html?WT.mc_id=13558-DEV-codeproject-article35\">Media Capture \u0438 Streams API<\/a>, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0432 <a href=\"http:\/\/www.w3.org\/2011\/04\/webrtc\/?WT.mc_id=13558-DEV-codeproject-article35\">Web Real-Time Communications Working Group<\/a> \u0438\u0437 W3C \u0438 <a href=\"http:\/\/www.w3.org\/2009\/dap?WT.mc_id=13558-DEV-codeproject-article35\">Device APIs Working Group<\/a>. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0437\u043d\u0430\u0442\u044c \u0438\u0445 \u043a\u0430\u043a getUserMedia \u2014 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u0440\u043b\u044f\u0435\u0442 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0442\u0430\u043a\u0438\u043c \u0434\u0435\u0432\u0430\u0439\u0441\u0430\u043c, \u043a\u0430\u043a \u0432\u0435\u0431-\u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u044b.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043c\u043e\u0435\u043c <a href=\"https:\/\/github.com\/DaveVoyles\/GetUserMedia-sample?WT.mc_id=13558-DEV-codeproject-article35\">GitHub<\/a>. <a href=\"http:\/\/getusermedia.azurewebsites.net\/?WT.mc_id=13558-DEV-codeproject-article35\">\u0417\u0434\u0435\u0441\u044c<\/a> \u0435\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u0434\u0435\u043c\u043e \u0434\u043b\u044f \u0432\u0430\u0448\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c Windows 10 preview release Microsoft \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 <a href=\"http:\/\/dev.modern.ie\/?utm_source=CodeProject&amp;utm_medium=article35&amp;utm_campaign=CodeProject\">media capture APIs \u0432 Microsoft Edge<\/a>. \u0417\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u0437\u044f\u0442\u0430 \u0441 Photo Capture sample, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0434\u0435\u043b\u0430\u043b\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 Edge \u043d\u0430 \u0438\u0445 <a href=\"http:\/\/dev.modern.ie\/testdrive\/?utm_source=CodeProject&amp;utm_medium=article35&amp;utm_campaign=CodeProject\">\u0442\u0435\u0441\u0442\u043e\u0432\u043e\u043c \u0441\u0430\u0439\u0442\u0435<\/a>.<\/p>\n<p>  \u0414\u043b\u044f \u0442\u0435\u0445 \u0438\u0437 \u0432\u0430\u0441, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0443\u0437\u043d\u0430\u0442\u044c \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0448\u0435, Eric Bidelman \u043d\u0430\u043f\u0438\u0441\u0430\u043b <a href=\"http:\/\/www.html5rocks.com\/en\/tutorials\/getusermedia\/intro\/?WT.mc_id=13558-DEV-codeproject-article35\">\u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043d\u0430 HTML5 rocks<\/a>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u044d\u0442\u0438\u0445 API.<\/p>\n<h1>\u041d\u0430\u0447\u043d\u0435\u043c<\/h1>\n<p>  \u041c\u0435\u0442\u043e\u0434 <a href=\"http:\/\/w3c.github.io\/mediacapture-main\/getusermedia.html#local-content?WT.mc_id=13558-DEV-codeproject-article35\">getUserMedia()<\/a> \u2014 \u043e\u0442\u043b\u0438\u0447\u043d\u0430\u044f \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0432 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 Media Capture API. \u0412\u044b\u0437\u0432\u043e\u0432 getUserMedia() \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 <a href=\"http:\/\/w3c.github.io\/mediacapture-main\/getusermedia.html#mediastreamconstraints?WT.mc_id=13558-DEV-codeproject-article35\">MediaStreamConstraints<\/a> \u043a\u0430\u043a \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\/\u0438\u043b\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0438 \u0437\u0430\u0445\u0432\u0430\u0447\u0435\u043d\u044b\u043c \u043c\u0435\u0434\u0438\u0430 \u043f\u043e\u0442\u043e\u043a\u0430\u043c, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u0433\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u0430, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u0438\u0434\u0438\u043e, \u043a\u0430\u043a\u0430\u044f \u043a\u0430\u043c\u0435\u0440\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 (\u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u0432\u0438\u0434\u0443 \u043f\u0435\u0440\u0435\u0434\u043d\u044f\u044f \u0438\u043b\u0438 \u0437\u0430\u0434\u043d\u044f\u044f \u2014 \u043f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u0430).<\/p>\n<p>  \u0427\u0435\u0440\u0435\u0437 MediaStreamConstraints, \u0432\u044b \u0442\u0430\u043a \u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0435\u0433\u043e ID, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0447\u0435\u0440\u0435\u0437 enumerateDevices() \u043c\u0435\u0442\u043e\u0434. \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u0430\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435, getUserMedia() \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 <a href=\"http:\/\/w3c.github.io\/mediacapture-main\/getusermedia.html#mediastream?WT.mc_id=13558-DEV-codeproject-article35\">MediaSteam<\/a> \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c, \u0435\u0441\u043b\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 MediaStreamConstraints \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0439\u0434\u0435\u043d.<\/p>\n<p>  \u0418 \u0432\u0441\u0435 \u044d\u0442\u043e \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d! \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0443\u0437\u043d\u0430\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e API \u0438 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432 \u0434\u043b\u044f \u0432\u0438\u0434\u0438\u043e \u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u0438 \u0432\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440? getUserMedia() \u0431\u044b\u043b \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0441 Chrome 21, Opera 18, and Firefox 17, \u0438 <a href=\"https:\/\/dev.modern.ie\/platform\/status\/mediacaptureandstreams\/mediacaptureandstreams?utm_source=CodeProject&amp;utm_medium=article35&amp;utm_campaign=CodeProject?term=GetUser\">\u0441\u0435\u0439\u0447\u0430\u0441 \u0432 Edge<\/a>.<\/p>\n<h1>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/h1>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u2014 \u043f\u0440\u043e\u0441\u0442\u043e\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f navigator.getUserMedia. \u042d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u2014 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440. \u042f \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <a href=\"http:\/\/modernizr.com\/?WT.mc_id=13558-DEV-codeproject-article35\">Modernizr<\/a>. \u0412\u043e\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442:<\/p>\n<pre><code class=\"javascript\">if (Modernizr.getusermedia) {   var getUM = Modernizr.prefixed('getUserMedia', navigator);   getUM({video: true}, function( \/\/...   \/\/... } <\/code><\/pre>\n<p>  \u0411\u0435\u0437 Modernizr`\u0430, \u043a\u0430\u043a \u0432 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u044d\u0442\u043e:<\/p>\n<pre><code class=\"javascript\">\tnavigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;   if (!navigator.getuserMedia) {   Console.log('You are using a browser that does not support the Media Capture API'); } <\/code><\/pre>\n<h1>\u0412\u0438\u0434\u0438\u043e \u043f\u043b\u0435\u0435\u0440<\/h1>\n<p>  \u0412 \u043d\u0430\u0448\u0435\u043c HTML \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c video \u0442\u0435\u0433 \u0432\u0432\u0435\u0440\u0445\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u043d \u0441\u0442\u043e\u0438\u0442 \u043d\u0430 autoplay`\u0435. \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e, \u0437\u0430\u0432\u0438\u0441\u043d\u0435\u0442 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u043a\u0430\u0434\u0440\u0435.<\/p>\n<pre><code class=\"html\">&lt;div class=&quot;view--video&quot;&gt;     &lt;video id=&quot;videoTag&quot; src=&quot;&quot; autoplay muted class=&quot;view--video__video&quot;&gt;&lt;\/video&gt; &lt;\/div&gt; <\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0435\u0449\u0435 \u043d\u0435\u0442 \u043c\u0435\u0434\u0438\u0430 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430, \u043d\u043e \u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Javascript.<\/p>\n<h1>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443<\/h1>\n<p>  \u041d\u043e\u0432\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0432\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439, \u043d\u043e \u0442\u0443\u0442 \u0435\u0441\u0442\u044c \u0440\u0438\u0441\u043a \u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0432\u043e\u0435 \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2014 \u0437\u0430\u043f\u0440\u043e\u0441 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u0437\u0430\u0445\u0432\u0430\u0442\u0430. getUserMedia \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u041f\u0435\u0440\u0432\u044b\u0439 \u2014 \u043e\u0431\u044a\u0435\u043a\u0442 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439 \u0434\u0435\u0442\u0430\u043b\u0438 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u043c\u0435\u0434\u0438\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0434\u043e\u0441\u0442\u0443\u043f. \u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043a\u0430\u043c\u0435\u0440\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c {video: true}, \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u0430 {video: true, audio: true}.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/7dc\/fac\/aa1\/7dcfacaa1ded43cfb6e83f4b93a3ca9b.jpg\"\/><\/p>\n<h1>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043a\u0430\u043c\u0435\u0440<\/h1>\n<p>  \u0412\u043e\u0442 \u0437\u0434\u0435\u0441\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0442\u043d\u043e. \u041c\u044b \u0442\u0430\u043a\u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/MediaDevices\/enumerateDevices?WT.mc_id=13558-DEV-codeproject-article35\">MediaDevices.enumeratedDevices<\/a> \u043c\u0435\u0442\u043e\u0434 \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435. \u041e\u043d \u0441\u043e\u0431\u0438\u0440\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043f\u0440\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0432\u0432\u043e\u0434\u0430-\u0432\u044b\u0432\u043e\u0434\u0430, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u044b, \u043a\u0430\u043c\u0435\u0440\u044b, \u043a\u043e\u043b\u043e\u043d\u043a\u0438. \u042d\u0442\u043e \u043e\u0431\u0435\u0449\u0430\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0432\u0438\u0434 (\u0442\u0438\u043f) \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430: \u00abvideoinput\u00bb, \u00abaudioinput\u00bb, \u0438\u043b\u0438 \u00abaudiooutput.\u00bb \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 ID \u0432 \u0444\u043e\u0440\u043c\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 ( videoinput: id = csO9c0YpAf274OuCPUA53CNE0YHlIr2yXCi+SqfBZZ8=), \u043c\u0435\u0442\u043a\u0443 \u0441 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443: \u00abFaceTime HD Camera (Built-in)\u00bb. \u042d\u0442\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0439, \u0438 \u0435\u0435 \u0435\u0449\u0435 \u043d\u0435\u0442 \u043d\u0430 <a href=\"http:\/\/caniuse.com\/?WT.mc_id=13558-DEV-codeproject-article35#search=enumerateDevices\">CanIUse.com<\/a>.<\/p>\n<h1>\u0423\u0441\u0442\u0430\u043d\u0440\u043e\u0432\u043a\u0430 \u0438\u0441\u0442\u043e\u043d\u0438\u043a\u0430 \u0432 \u0432\u0438\u0434\u0438\u043e \u043f\u043b\u0435\u0435\u0440<\/h1>\n<p>  \u0412 initalizeVideoStream \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043c\u044b \u0431\u0435\u0440\u0435\u043c video \u0442\u0435\u0433 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u043d\u0430\u0448 \u0441\u0442\u0440\u0438\u043c. \u0421\u0442\u0440\u0438\u043c \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435 \u2014 blob. \u0415\u0441\u043b\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 srcObject \u0430\u0442\u0440\u0438\u0431\u0443\u0442, \u043d\u0430\u0434\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c URL \u0434\u043b\u044f \u043c\u0435\u0434\u0438\u0430 \u0441\u0442\u0440\u0438\u043c\u0430 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0433\u043e.<\/p>\n<pre><code class=\"javascript\">    var initializeVideoStream = function(stream) {         mediaStream = stream;           var video = document.getElementById('videoTag');         if (typeof (video.srcObject) !== 'undefined') {             video.srcObject = mediaStream;         }         else {             video.src = URL.createObjectURL(mediaStream);         }         if (webcamList.length &gt; 1) {             document.getElementById('switch').disabled = false;         }     }; <\/code><\/pre>\n<h1>\u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c CSS \u0444\u0438\u043b\u044c\u0442\u0440\u044b<\/h1>\n<p>  \u042f \u043f\u043b\u043e\u0445\u043e\u0439 \u0444\u043e\u0442\u043e\u0433\u0440\u0430\u0444, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043b\u043e\u0433\u0430\u044e\u0441\u044c \u043d\u0430 \u0444\u0438\u043b\u044c\u0442\u0440\u044b Instagram`\u0430. \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u043a \u0444\u043e\u0442\u043e \u0438 \u0432\u0438\u0434\u0438\u043e? \u0427\u0442\u043e \u0436, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435!<\/p>\n<p>  \u042f \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0444\u0443\u043d\u043a\u0438\u044e \u0434\u043b\u044f \u0432\u0438\u0434\u0438\u043e \u043f\u043e\u0442\u043e\u043a\u0430, \u043a\u043e\u0442\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043c\u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c CSS \u0444\u0438\u043b\u044c\u0442\u0440\u044b \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u041e\u043d\u0430 \u043f\u043e\u0447\u0442\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<\/p>\n<pre><code class=\"javascript\">    var changeCssFilterOnVid = function () {         var el       = document.getElementById('videoTag');         el.className = 'view--video__video';           var effect = filters[index++ % filters.length]         if (effect) {             el.classList.add(effect);             console.log(el.classList);         }     } <\/code><\/pre>\n<p>  \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u043b\u0430\u0441\u0441\u0430 \u0435\u0441\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432. \u041e\u043d\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0430 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043f\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u043a\u043b\u0430\u0441\u0441\u0430\u043c CSS. <br \/>  \/\/ CSS \u0444\u0438\u043b\u044c\u0442\u0440\u044b var index = 0; var filters = [&#8216;grayscale&#8217;, &#8216;sepia&#8217;, &#8216;blur&#8217;, &#8216;invert&#8217;, &#8216;brightness&#8217;, &#8216;contrast&#8217;, &#187;]; \u0438 CSS:<\/p>\n<pre><code class=\"css\">\/* image * video filters *\/ .grayscale {     -webkit-filter: grayscale(1);     -moz-filter: grayscale(1);     -ms-filter: grayscale(1);     filter: grayscale(1); }   .sepia {     -webkit-filter: sepia(1);     -moz-filter: sepia(1);     -ms-filter: sepia(1);     filter: sepia(1); }   .blur {     -webkit-filter: blur(3px);     -moz-filter: blur(3px);     -ms-filter: blur(3px);     filter: blur(3px); } <\/code><\/pre>\n<p>  \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438 \u043f\u043e\u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 <a href=\"http:\/\/dev.modern.ie\/testdrive\/demos\/css3filters\/?utm_source=CodeProject&amp;utm_medium=article35&amp;utm_campaign=CodeProject\">Edge test drive page<\/a>.<\/p>\n<h1>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f<\/h1>\n<p>  \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u044f\u0441\u044c \u0432 \u043a\u043e\u0434\u0435, \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0449\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u043c \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b. \u041f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0449\u044c\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0438\u0442\u044f\u043d\u0443\u043b\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u0431\u044b\u043b\u0430 navigator.msSaveBlob. Blob \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043b\u0435\u0433\u043a\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c blob`\u043e\u043c \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435. \u041e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 IE 10+.<\/p>\n<p>  <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/hh441122.aspx?WT.mc_id=13558-DEV-codeproject-article35\">msSaveBlob<\/a> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c blob \u043e\u0431\u044a\u0435\u043a\u0442 (\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0430\u0448\u0435 \u0444\u043e\u0442\u043e) \u043d\u0430 \u0434\u0438\u0441\u043a. \u0423 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0431\u0440\u0430\u0442 \u2014 \u043c\u0435\u0442\u043e\u0434 <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/hh772332(v=vs.85).aspx?WT.mc_id=13558-DEV-codeproject-article35\">msSaveOrOpenBlob<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0437\u043d\u0443\u0442\u0440\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430.<\/p>\n<pre><code class=\"javascript\">  var savePhoto = function() {         if (photoReady) {             var canvas = document.getElementById('canvasTag');             if (navigator.msSaveBlob) {                 var imgData = canvas.msToBlob('image\/jpeg');                 navigator.msSaveBlob(imgData, 'myPhoto.jpg');             }             else {                 var imgData = canvas.toDataURL('image\/jpeg');                 var link    = document.getElementById('saveImg');                 link.href   = imgData;                 link.download = 'myPhoto.jpg';                 link.click();             }             canvas.removeEventListener('click', savePhoto);             document.getElementById('photoViewText').innerHTML = '';             photoReady = false;         }     }; <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043c\u0435\u0442\u043e\u0434, \u0442\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u0434\u0430, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f.<\/p>\n<h1>\u0427\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435?<\/h1>\n<p>  \u042d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0447\u0430\u043b\u043e. \u0412\u043c\u0435\u0441\u0442\u0435 \u0441 \u044d\u0442\u0438\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c WebGL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432, \u0438\u043b\u0438 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u044c \u0430\u0443\u0434\u0438\u043e\/\u0432\u0438\u0434\u0438\u043e \u043f\u043e\u0442\u043e\u043a \u0432 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u043c\u043e\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c\u2026<\/p>\n<p>  \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u0442\u044c Web Audio API, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u043e\u0442\u043d\u0443\u044e \u043c\u043e\u0434\u0443\u043b\u044f\u0446\u0438\u044e \u043a \u0430\u0443\u0434\u0438\u043e \u043f\u043e\u0442\u043e\u043a\u0443. \u042d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437 <a href=\"http:\/\/dev.modern.ie\/testdrive\/demos\/webaudiotuner\/?utm_source=CodeProject&amp;utm_medium=article35&amp;utm_campaign=CodeProject\">Web Audio tuner<\/a>`\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u044d\u0442\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u043e\u0449\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e, \u0442\u0430\u043a \u0447\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 <a href=\"http:\/\/dev.modern.ie\/testdrive\/demos\/microphone\/?utm_source=CodeProject&amp;utm_medium=article35&amp;utm_campaign=CodeProject\">\u043f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442 Microsoft<\/a>.<\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b \u043d\u0430\u0447\u043d\u0443\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e, \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 API, \u0447\u0442\u043e\u0431\u044b \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043d\u0438\u043c\u0438 \u043d\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u044f \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443. \u0421\u0435\u0439\u0447\u0430\u0441 \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u0442\u044c \u0432\u0435\u0431 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u043c, \u0438 \u043d\u0430\u0434\u0435\u044e\u0441\u044c \u043f\u043e\u0441\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b \u043f\u043e\u0439\u043c\u0435\u0442\u0435, \u043f\u043e\u0447\u0435\u043c\u0443 \u044f \u0442\u0430\u043a \u0440\u0430\u0434 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u044d\u0442\u043e\u043c.   \t<\/p>\n<div class=\"clear\"><\/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\/264167\/\"> http:\/\/habrahabr.ru\/post\/264167\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       <i>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 <a href=\"http:\/\/www.codeproject.com\/Articles\/1013212\/Using-the-Media-Capture-API-in-the-Browser\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u00abUsing the Media Capture API in the Browser\u00bb \u0430\u0432\u0442\u043e\u0440\u0441\u0442\u0432\u0430 Dave Voyles.<br \/>  <\/i><br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/a19\/a54\/4fc\/a19a544fc80e491f98535a2a0bc03205.jpg\"\/><\/p>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0435\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 <a href=\"http:\/\/w3c.github.io\/mediacapture-main\/getusermedia.html?WT.mc_id=13558-DEV-codeproject-article35\">Media Capture \u0438 Streams API<\/a>, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e \u0432 <a href=\"http:\/\/www.w3.org\/2011\/04\/webrtc\/?WT.mc_id=13558-DEV-codeproject-article35\">Web Real-Time Communications Working Group<\/a> \u0438\u0437 W3C \u0438 <a href=\"http:\/\/www.w3.org\/2009\/dap?WT.mc_id=13558-DEV-codeproject-article35\">Device APIs Working Group<\/a>. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0437\u043d\u0430\u0442\u044c \u0438\u0445 \u043a\u0430\u043a getUserMedia \u2014 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u0440\u043b\u044f\u0435\u0442 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0442\u0430\u043a\u0438\u043c \u0434\u0435\u0432\u0430\u0439\u0441\u0430\u043c, \u043a\u0430\u043a \u0432\u0435\u0431-\u043a\u0430\u043c\u0435\u0440\u044b \u0438 \u043c\u0438\u043a\u0440\u043e\u0444\u043e\u043d\u044b.  <\/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-262915","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/262915","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=262915"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/262915\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=262915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=262915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=262915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}