{"id":351677,"date":"2024-05-20T21:53:01","date_gmt":"2024-05-20T21:53:01","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=351677"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=351677","title":{"rendered":"<span>\u041e\u043d\u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u044f\u0442 \u0432\u0430\u0441 \u043d\u0435\u043d\u0430\u0432\u0438\u0434\u0435\u0442\u044c: \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 VAST \u0438 VPAID, \u0438\u043b\u0438 \u041a\u0430\u043a \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u0432 web-\u0432\u0438\u0434\u0435\u043e\u043f\u043b\u0435\u0435\u0440<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0414\u043e\u0431\u0440\u043e\u0433\u043e \u0432\u0430\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0443\u0442\u043e\u043a! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0412\u0430\u043b\u0435\u0440\u0438\u044f, \u044f \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 <a href=\"https:\/\/doubletapp.ai\/en\/?utm_source=habr&amp;utm_medium=organic&amp;utm_campaign=video_player\">Doubletapp<\/a>. \u0413\u043e\u0434 \u0441\u0432\u043e\u0435\u0439 \u0436\u0438\u0437\u043d\u0438 \u043e\u0442\u0434\u0430\u043b\u0430 \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432\u0438\u0434\u0435\u043e\u043f\u043b\u0435\u0435\u0440\u0430 \u0441 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f\u043c\u0438. \u041d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 \u0431\u044b\u043b\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u0435\u043a\u0430, \u0434\u043e\u043a\u0430, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0425\u0430\u0431\u0440\u0435, \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0449\u0430\u044f \u0437\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u0443, \u0438 \u043e\u0433\u0440\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430 \u043d\u0430\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043e\u043d\u0443\u044e \u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u043f\u043b\u0435\u0435\u0440. \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0438 \u0432\u0430\u0441 \u043f\u043e\u0431\u043b\u0438\u0436\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c \u0441 \u0440\u0435\u043a\u043b\u0430\u043c\u043e\u0439.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1a5\/da6\/9d0\/1a5da69d0a3e29066764c1dd02497312.png\" width=\"3840\" height=\"2160\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1a5\/da6\/9d0\/1a5da69d0a3e29066764c1dd02497312.png\"\/><\/figure>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0442\u0435\u043c, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u044b VAST \u0438 VPAID, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u043e\u0439, \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0431\u043b\u043e\u043a\u043e\u043c \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 (<strong>out-stream<\/strong>) \u0438\u043b\u0438 \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u0440\u043e\u043b\u0438\u043a \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f\u043c\u0438 (<strong>in-stream<\/strong>).<\/p>\n<p><a class=\"anchor\" name=\"2\" id=\"2\"><\/a><\/p>\n<h3>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u0438\u043b\u0438 \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0438\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b<\/h3>\n<p>Video Ad Serving Template \u0438\u043b\u0438 VAST \u2014 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u044b\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438. \u041f\u043e \u0444\u0430\u043a\u0442\u0443 \u2014 \u0444\u0430\u0439\u043b\u0438\u043a \u0444\u043e\u0440\u043c\u0430\u0442\u0430 xml. \u041e\u043d \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/iabtechlab.com\/standards\/vast\/\">\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/a>, \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Interactive Advertising Bureau (IAB).<\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e VAST \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0432 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0443 \u043f\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u043c, \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430\u043c \u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c \u0437\u0440\u0438\u0442\u0435\u043b\u0435\u0439; \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u0443\u044e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0443, \u043c\u0435\u0441\u0442\u0443 \u0436\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u0438 \u0443\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u0443\u044e \u043a\u0430\u043c\u043f\u0430\u043d\u0438\u044e.\u00a0<\/p>\n<p>\u041d\u0430\u0441 \u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u0430. \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c VAST, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0438\u0434\u0435\u043e\u043f\u043b\u0435\u0435\u0440\u0430 \u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u0434\u043b\u044f xml. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u2014 \u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0442 \u0440\u0435\u043a\u043b\u0430\u043c\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 hls-\u043f\u043b\u0435\u0435\u0440\u0430 \u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 MSE \u2014 \u043c\u044b \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 &lt;video> \u0442\u0435\u0433. \u0410 \u0432\u043e\u0442 \u0432 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u043c\u044b \u043f\u043e\u0439\u0434\u0435\u043c \u043f\u043e \u0445\u0430\u0440\u0434\u043a\u043e\u0440\u0443. Google IMA SDK, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0434\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0435\u043a\u043b\u0430\u043c\u043e\u0439 \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.\u00a0<\/p>\n<p>\u0427\u0438\u0441\u0442\u043e \u0434\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0438: \u0435\u0441\u0442\u044c \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043f\u043b\u0435\u0435\u0440\u044b \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0440\u0435\u043a\u043b\u0430\u043c\u044b (\u043f\u043b\u0430\u0442\u043d\u044b\u0435 \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435) \u2014 Video.js, JW Player, plyr \u0438 \u0442. \u043f. \u0415\u0441\u043b\u0438 \u043f\u043e\u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0443 \u043d\u0438\u0445 \u0442\u043e\u0442 \u0436\u0435 Google IMA SDK, \u043d\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u0430\u044e\u0442 \u043a \u043d\u0435\u043c\u0443 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0438 \u0441\u0432\u043e\u0439 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0415\u0441\u0442\u044c \u0435\u0449\u0435 Video Ads SDK \u043e\u0442 \u042f\u043d\u0434\u0435\u043a\u0441\u0430, \u043d\u043e, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u0430\u043c\u0438.<\/p>\n<p>\u041f\u043e\u0434\u044b\u0442\u043e\u0436\u0438\u043c, IMA SDK \u0434\u0430\u0441\u0442 \u043d\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0433\u0438\u0431\u043a\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c VAST&#8217;\u0430\u043c\u0438, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0441\u0430\u0439\u0434-\u044d\u0444\u0444\u0435\u043a\u0442\u044b \u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u043d\u044f\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u0434 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430.\u00a0<\/p>\n<p><a class=\"anchor\" name=\"3\" id=\"3\"><\/a><\/p>\n<h3>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e VAST<\/h3>\n<p><em>\u042d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442\u043e\u043c VAST-\u0444\u0430\u0439\u043b\u043e\u0432, \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a <\/em><a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#1\"><em>\u0440\u0430\u0437\u0434\u0435\u043b\u0443 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439<\/em><\/a><em>.<\/em><\/p>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 VAST \u0438\u043c\u0435\u0435\u0442 <a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#18\">\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443<\/a>. \u0415\u0435 \u043d\u0438 \u0441 \u0447\u0435\u043c \u043d\u0435 \u0441\u043f\u0443\u0442\u0430\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0435\u043b\u043e \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0443\u0437\u0435\u043b <code>&lt;VAST><\/code>. \u0412 \u043d\u0435\u043c \u043c\u043e\u0433\u0443\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0443\u0437\u043b\u044b <code>AD<\/code> \u0438\u043b\u0438 \u0443\u0437\u0435\u043b <code>ERROR<\/code>, \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0432\u0435\u0440\u043d\u0443\u043b \u0440\u0435\u043a\u043b\u0430\u043c\u0443.<\/p>\n<p>\u0412 \u0443\u0437\u043b\u0435 VAST \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442\u0430, \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u2014 4.3. \u041f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u043b\u0435\u0435\u0440\u0430 \u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0430 \u0432\u0430\u0441\u0442\u044b 3.0 \u0438 2.0 \u0432\u0435\u0440\u0441\u0438\u0439. \u041f\u0443\u0441\u0442\u044c \u044d\u0442\u043e \u0432\u0430\u0441 \u043d\u0435 \u0441\u043c\u0443\u0449\u0430\u0435\u0442, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>\u0423\u0437\u043b\u043e\u0432 <code>AD<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 VAST \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 3.0 \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e. \u041e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 <code>sequence<\/code>. \u0415\u0441\u043b\u0438 \u0440\u0435\u043a\u043b\u0430\u043c\u0430 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0443\u0437\u043b\u0435 <code>AD<\/code> \u0443\u043f\u0430\u043b\u0430 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<pre><code class=\"xml\">&lt;VAST version=\u201d3.0\u201d> &lt;AD id=\u201djDGmdD\u201d sequence=\u201d1\u201d> \u2026 &lt;\/AD> &lt;AD id=\u201dhrYhfK\u201d sequence=\u201d2\u201d> \u2026 &lt;\/AD> \u2026 &lt;AD id=\u201dhrYhfK\u201d sequence=\u201d14\u201d> \u2026 &lt;\/AD> &lt;\/VAST><\/code><\/pre>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 AD \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c:<\/p>\n<ol>\n<li>\n<p>\u0421\u0430\u043c\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u0430 \u2014 <a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#18\">\u0443\u0437\u0435\u043b InLine<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0435 \u0432 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u2014 <a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#19\">\u0443\u0437\u0435\u043b Wrapper<\/a>.<\/p>\n<\/li>\n<\/ol>\n<p><a class=\"anchor\" name=\"18\" id=\"18\"><\/a><\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u0443\u0437\u043b\u043e\u043c InLine.<\/p>\n<pre><code class=\"xml\">&lt;VAST version=\"3.0\">   &lt;Ad id=\"1234567\">     &lt;InLine>     &lt;AdSystem>Your Ad System&lt;\/AdSystem>     &lt;AdTitle>Name of your VAST&lt;\/AdTitle>     &lt;Description>Linear Video Ad&lt;\/Description>     &lt;Error>https:\/\/www.example.com\/error&lt;\/Error>     &lt;Impression>https:\/\/www.example.com\/impression&lt;\/Impression>       &lt;Creatives>         &lt;Creative sequence=\"1\">           &lt;Linear skipoffset=\u201d00:00:05\u201d>           &lt;Duration>00:01:55&lt;\/Duration>             &lt;TrackingEvents>               &lt;Tracking event=\"start\">https:\/\/www.example.com\/start&lt;\/Tracking>               &lt;Tracking event=\"firstQuartile\">https:\/\/www.example.com\/firstQuartile&lt;\/Tracking>               &lt;Tracking event=\"midpoint\">https:\/\/www.example.com\/midpoint&lt;\/Tracking>               &lt;Tracking event=\"thirdQuartile\">https:\/\/www.example.com\/thirdQuartile&lt;\/Tracking>               &lt;Tracking event=\"complete\">https:\/\/www.example.com\/complete&lt;\/Tracking>               &lt;Tracking event=\"mute\">https:\/\/www.example.com\/mute&lt;\/Tracking>               &lt;Tracking event=\"unmute\">https:\/\/www.example.com\/unmute&lt;\/Tracking>               &lt;Tracking event=\"rewind\">https:\/\/www.example.com\/rewind&lt;\/Tracking>               &lt;Tracking event=\"pause\">https:\/\/www.example.com\/pause&lt;\/Tracking>               &lt;Tracking event=\"resume\">https:\/\/www.example.com\/resume&lt;\/Tracking>               &lt;Tracking event=\"fullscreen\">https:\/\/www.example.com\/fullscreen&lt;\/Tracking>             &lt;\/TrackingEvents>             &lt;VideoClicks>               &lt;ClickThrough id=\"123\">https:\/\/google.com&lt;\/ClickThrough>               &lt;ClickTracking id=\"123\">https:\/\/www.example.com\/click&lt;\/ClickTracking>             &lt;\/VideoClicks>             &lt;MediaFiles>               &lt;MediaFile delivery=\"progressive\" type=\"video\/mp4\"> https:\/\/example.com\/example.mp4 &lt;\/MediaFile>             &lt;\/MediaFiles>           &lt;\/Linear>         &lt;\/Creative>       &lt;\/Creatives>     &lt;\/InLine>   &lt;\/Ad> &lt;\/VAST> <\/code><\/pre>\n<p><em>*\u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430. \u041c\u044b \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u043c, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 VAST \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b<\/em><\/p>\n<p><code>AdSystem<\/code> \u2014 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u043a\u043b\u0430\u043c\u0443<br \/><code>AdTitle, Description<\/code> \u2014 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u044b<br \/><code>Error<\/code> \u2014 <em>url<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u043e\u0432\u0435\u0442\u0441\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438<br \/><code>Impression<\/code> \u2014 <em>url<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u043e\u0432\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0444\u0440\u0435\u0439\u043c\u0430 \u043a\u0440\u0435\u0430\u0442\u0438\u0432\u0430<br \/><code>Creatives<\/code> \u2014 \u043d\u0430\u0431\u043e\u0440 \u043a\u0440\u0435\u0430\u0442\u0438\u0432\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u043a\u0430\u0437\u0430. \u041e\u0434\u0438\u043d \u043a\u0440\u0435\u0430\u0442\u0438\u0432 = \u043e\u0434\u0438\u043d \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f.<br \/><code>Creative<\/code> \u2014 \u043a\u0440\u0435\u0430\u0442\u0438\u0432 \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <em>sequence<\/em> \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u0443\u0437\u043b\u043e\u043c <code>AD<\/code>. \u0418\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0441\u0438\u0442 \u043d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c <code>Creative<\/code> <em>sequence<\/em> \u0441 <code>Ad<\/code> <em>sequence.<\/em> \u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <em>sequence \u2014 <\/em>\u044d\u0442\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f.<br \/><code>Linear<\/code> \u2014 \u0442\u0438\u043f \u0440\u0435\u043a\u043b\u0430\u043c\u044b. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <em>skipoffset<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0434\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0440\u0435\u043a\u043b\u0430\u043c\u0443.<\/p>\n<p>\u0412\u0441\u0435\u0433\u043e IAB \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0440\u0438 \u0432\u0438\u0434\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u044b <strong>Linear<\/strong>, <strong>NonLinearAds<\/strong> \u0438 <strong>CompanionAds<\/strong>. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u0432 \u0447\u0435\u043c \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/48d\/455\/8e0\/48d4558e011367523fd57b5f05f0d4fa.png\" width=\"3428\" height=\"2491\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/48d\/455\/8e0\/48d4558e011367523fd57b5f05f0d4fa.png\"\/><\/figure>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c Linear \u0442\u0438\u043f \u0440\u0435\u043a\u043b\u0430\u043c\u044b:<\/p>\n<p><code>Duration<\/code> \u2014 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u043a\u043b\u0430\u043c\u044b<br \/><code>TrackingEvents<\/code><strong> <\/strong>\u2014 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f <code>Tracking<\/code><strong><br \/><\/strong><code>Tracking<\/code> \u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <em>url<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 <em>event<\/em><br \/><code>VideoClicks<\/code> \u2014 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0443\u0437\u043b\u044b <code>ClickThrough<\/code><strong>, <\/strong><code>ClickTracking<\/code><strong> <\/strong>\u0438<strong> <\/strong><code>CustomClick<\/code>. \u0412 \u043d\u0435\u043c \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u043d\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a<br \/><code>ClickThrough<\/code> \u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0441\u044b\u043b\u043a\u0443, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u0440\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u0441 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u043c \u0431\u043b\u043e\u043a\u043e\u043c (\u043b\u0435\u043d\u0434\u0438\u043d\u0433, \u0441\u0430\u0439\u0442)<br \/><code>ClickTracking<\/code> \u2014 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043a\u043b\u0438\u043a\u043e\u0432, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 \u0443\u0437\u043b\u0435 <code>VideoClicks<\/code> (\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u043d\u0430 \u0441\u0430\u0439\u0442 \u0438\u043b\u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u043a\u043b\u0438\u043a\u0438)<br \/><code>MediaFiles<\/code> \u2014 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f <code>MediaFile<\/code><strong><br \/><\/strong><code>MediaFile<\/code> \u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u0443. \u0418\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0430\u0437\u043d\u043e\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435, \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 <em>width<\/em> \u0438 <em>height<\/em>. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445. \u0410\u0442\u0440\u0438\u0431\u0443\u0442 <em>delivery<\/em> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u2014 <em>streaming<\/em> \u0438\u043b\u0438 <em>progressive.<\/em><\/p>\n<p><a class=\"anchor\" name=\"19\" id=\"19\"><\/a><\/p>\n<p>\u0420\u0430\u043d\u0435\u0435 \u044f \u043e\u0442\u043c\u0435\u0447\u0430\u043b\u0430, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438, \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044b\u0435 \u0432\u043e <code>Wrapper<\/code>. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 VAST \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u043e\u0436\u0435 \u043e\u0431\u0432\u0435\u0448\u0430\u043b \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438 \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u043f\u043e\u043a\u0430\u0437\u043e\u0432. \u0412 \u044d\u0442\u043e\u0439 \u043e\u0431\u0435\u0440\u0442\u043a\u0435 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u0439 VAST \u043b\u0435\u0436\u0438\u0442 \u0432 \u0443\u0437\u043b\u0435 <code>VASTAdTagURI<\/code>. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0439\u0442\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u0432 \u043d\u0435\u043c, \u0442\u043e \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0442\u043e\u0442 \u0436\u0435 InLine xml-\u0444\u0430\u0439\u043b, \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 <a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#18\">\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0448\u0435<\/a>.<\/p>\n<pre><code class=\"xml\">&lt;VAST xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"vast.xsd\" version=\"3.0\">   &lt;Ad id=\"5368884870\">     &lt;Wrapper>     &lt;AdSystem>GDFP&lt;\/AdSystem>     &lt;VASTAdTagURI>       &lt;![CDATA[ https:\/\/lerok007.ams3.digitaloceanspaces.com\/vast%20(1).xml ]]&gt;     &lt;\/VASTAdTagURI>     &lt;Error>https:\/\/www.example.com\/error&lt;\/Error>     &lt;Impression>https:\/\/www.example.com\/impression&lt;\/Impression>       &lt;Creatives>         &lt;Creative id=\"138311401271\" sequence=\"1\">           &lt;Linear>             &lt;TrackingEvents>             \u2026             &lt;\/TrackingEvents>             &lt;VideoClicks>             \u2026             &lt;\/VideoClicks>           &lt;\/Linear>         &lt;\/Creative>       &lt;\/Creatives>       &lt;Extensions>         &lt;Extension type=\"geo\">           &lt;Country>RU&lt;\/Country>         &lt;\/Extension>       &lt;\/Extensions>     &lt;\/Wrapper>   &lt;\/Ad> &lt;\/VAST> <\/code><\/pre>\n<p><em>*\u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430, \u0432\u0437\u044f\u0442\u044b\u0439 \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f IAB <\/em><a href=\"https:\/\/github.com\/InteractiveAdvertisingBureau\/VAST_Samples\"><u>https:\/\/github.com\/InteractiveAdvertisingBureau\/VAST_Samples<\/u><\/a><em>. \u0412\u043d\u0443\u0442\u0440\u0438 VAST \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b.<\/em><\/p>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c \u044d\u0442\u0438\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u0434\u0443\u0448\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439, \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 <a href=\"https:\/\/iabtechlab.com\/standards\/vast\/\">\u043d\u0430 \u0441\u0430\u0439\u0442\u0435 IAB<\/a> \u0438\u043b\u0438 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f <a href=\"https:\/\/habr.com\/ru\/post\/499164\/\">\u0441 \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/a>.\u00a0<\/p>\n<p><a class=\"anchor\" name=\"1\" id=\"1\"><\/a><\/p>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 (out-stream)<\/h3>\n<p>\u0412\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u044f \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0430 \u0432 \u044d\u0442\u043e\u043c <a href=\"https:\/\/github.com\/doubletapp\/vast-examples\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>. \u0412 \u043d\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \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\u0438\u043c\u0435\u0440\u043e\u0432, \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043a\u043e\u0434\u043e\u043c. \u0413\u043e\u0442\u043e\u0432\u044c\u0442\u0435 \u043f\u043e\u043f\u043a\u043e\u0440\u043d \u0438 <strong>\u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c AdBlock!<\/strong>)<\/p>\n<p>\u041f\u0440\u043e\u0448\u0443 \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <a href=\"https:\/\/github.com\/doubletapp\/vast-examples\/tree\/main\/src\/simpleExampleVast\"><em>simpleExampleVast<\/em><\/a>. \u042f \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0438 \u043d\u0435 \u0442\u0435\u0440\u044f\u0442\u044c\u0441\u044f \u0432 \u0447\u0430\u0441\u0442\u044f\u0445 \u043a\u043e\u0434\u0430. \u0410 \u0435\u0449\u0435 \u044d\u0442\u043e \u043c\u043e\u0433 \u0431\u044b \u0431\u044b\u0442\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u0432\u043e\u0440\u043a\u0448\u043e\u043f)<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 index.html \u0438 \u0441\u0442\u0438\u043b\u0438 \u0434\u043b\u044f \u043d\u0435\u0433\u043e. IMA \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0432\u0438\u0434\u0435\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u0440\u0435\u043a\u043b\u0430\u043c\u044b. VAST-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0445 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u043f\u043b\u0435\u0435\u0440\u0430\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u043c\u044b \u0431\u0443\u0434\u0435\u043c, \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0442\u0435\u0433\u0430 <code>&lt;video><\/code>. <code>adContainer<\/code> \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043e\u043c \u0438 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0438\u043c \u0432\u0435\u0441\u044c \u0431\u043b\u043e\u043a \u0432\u0438\u0434\u0435\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430.<\/p>\n<pre><code class=\"css\">\/* .\/src\/simpleExampleVast\/index.html **\/ &lt;div id=\"videoContainer\"> \u00a0\u00a0\u00a0\u00a0&lt;video id=\"videoElement\">&lt;\/video> \u00a0\u00a0\u00a0\u00a0&lt;div id=\"adContainer\">&lt;\/div> &lt;\/div><\/code><\/pre>\n<pre><code class=\"css\">\/* .\/src\/simpleExampleVast\/styles.html **\/ #videoContainer { \u00a0position: relative; \u00a0width: 800px; \u00a0height: 450px; \u00a0background-color: black; }  #videoElement { \u00a0width: 100%; \u00a0height: 100%; }  #adContainer { \u00a0position: absolute; \u00a0top: 0; \u00a0left: 0; \u00a0width: 100%; \u00a0height: 100%; }<\/code><\/pre>\n<p><a class=\"anchor\" name=\"4\" id=\"4\"><\/a><\/p>\n<h4>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c IMA SDK<\/h4>\n<p>\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0438\u043b\u0430\u0441\u044c \u0438 \u0437\u0430\u0445\u043e\u0441\u0442\u0438\u043b\u0430 \u0434\u043b\u044f \u0432\u0430\u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 VAST <a href=\"https:\/\/lerok007.ams3.digitaloceanspaces.com\/vast%20(1).xml\">\u043f\u043e \u044d\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/a>. \u041c\u043e\u0436\u0435\u0442\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0432\u044b\u0448\u0435. \u0412 \u043d\u0435\u043c \u043d\u0435\u0442 \u0442\u0440\u0435\u043a\u0438\u043d\u0433\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043d\u043e \u0434\u043b\u044f \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<\/p>\n<p>\u0418\u0437 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e IMA SDK (\u0432\u043e\u0442 <a href=\"https:\/\/developers.google.com\/interactive-media-ads\/docs\/sdks\/html5\/client-side?hl=en\">\u0434\u043e\u043a\u0430<\/a>).\u00a0<\/p>\n<p>IMA SDK \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u0441\u043a\u0440\u0438\u043f\u0442, \u043d\u043e \u043c\u044b \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u043c <a href=\"https:\/\/www.npmjs.com\/package\/@alugha\/ima\">@alugha\/ima<\/a>. \u042d\u0442\u043e \u0434\u0430\u0441\u0442 \u043d\u0430\u043c \u0440\u044f\u0434 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0444\u0438\u0447:<\/p>\n<p>1. \u0422\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f<br \/>2. \u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 IMA SDK<br \/>3. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0440\u0435\u043a\u043b\u0430\u043c\u044b<\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c IMA SDK\u00a0<\/p>\n<pre><code class=\"typescript\">import {loadImaSdk} from \"@alugha\/ima\";  async function loadIma() { \u00a0try { \u00a0\u00a0\u00a0const ima = await loadImaSdk() \u00a0\u00a0\u00a0console.info('IMA SDK successfully loaded. Ima version: ' + ima.VERSION); \u00a0} catch (err) { \u00a0\u00a0\u00a0console.error(\"IMA SDK could not be loaded. Check your ad blocker\"); \u00a0} }  loadIma()<\/code><\/pre>\n<p><code>loadImaSdk<\/code> \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043b\u0438 \u0432 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0435. \u0415\u0441\u043b\u0438 \u0431\u043b\u043e\u043a\u0435\u0440\u043e\u0432 \u043d\u0435\u0442 \u2014 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 <code>ima<\/code>, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0438\u0442 \u043e\u0448\u0438\u0431\u043a\u0443.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c <code>ima<\/code>, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f <code>loadImaSdk<\/code>. \u0422\u0430\u043a\u0436\u0435 \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 <code>window.google.ima<\/code>.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u043e\u0431\u043d\u043e\u0432\u0438\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/types.d.ts **\/ import { ImaSdk } from '@alugha\/ima'  declare global { \u00a0interface Window { \u00a0\u00a0\u00a0google: { ima: ImaSdk } \u00a0} }<\/code><\/pre>\n<p>\u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u0442\u0438\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 IMA SDK. \u041e\u043d\u0430 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043d\u0430\u043c \u0434\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438.\u00a0<\/p>\n<p>\u041d\u0430\u0448 \u0443\u0442\u0438\u043b\u044c \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u043e\u043b\u0431\u044d\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u043e\u0432\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 ima.<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/imaLoader.ts **\/ import { loadImaSdk } from '@alugha\/ima'  export async function loadIma(onImaLoaded: () => void) { \u00a0const ima = await loadImaSdk().catch((err) => \u00a0\u00a0\u00a0console.error('IMA SDK could not be loaded. Check your ad blocker.') \u00a0)  \u00a0if (ima) { \u00a0\u00a0\u00a0console.info('IMA SDK successfully loaded.') \u00a0\u00a0\u00a0onImaLoaded() \u00a0} }<\/code><\/pre>\n<p><a class=\"anchor\" name=\"5\" id=\"5\"><\/a><\/p>\n<h4>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c<\/h4>\n<p>\u041e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 IMA \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0430\u0441\u044c \u0443\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0437\u0430 \u043a\u0430\u0434\u0440\u043e\u043c Get Started. \u041e\u0431\u043e\u0431\u0449\u0443 \u0437\u043d\u0430\u043d\u0438\u044f, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043f\u043b\u0435\u0435\u0440\u0430. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0438 \u0435\u0433\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439.<\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e IMA \u043c\u043e\u0436\u043d\u043e:<\/p>\n<ul>\n<li>\n<p>\u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0440\u0435\u043a\u043b\u0430\u043c\u044b;<\/p>\n<\/li>\n<li>\n<p>\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u0430\u0439\u0434-\u044d\u0444\u0444\u0435\u043a\u0442\u044b;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0440\u0435\u043a\u043b\u0430\u043c\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0432\u0443\u043a\u043e\u043c, \u043f\u0430\u0443\u0437\u043e\u0439, \u043f\u0435\u0440\u0435\u043c\u043e\u0442\u043a\u043e\u0439 \u0438 \u0442. \u043f.;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u043e\u0432\u0443\u044e \u0440\u0435\u043a\u043b\u0430\u043c\u0443;<\/p>\n<\/li>\n<\/ul>\n<p>\u0438 \u043c\u043d\u043e\u0433\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435.<\/p>\n<p>\u041c\u0430\u043d\u0438\u043f\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0432\u0443\u043c\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/simpleExampleVast\/index.ts **\/ const videoElement = document.getElementById('videoContainer') const adContainer = document.getElementById('adContainer')<\/code><\/pre>\n<p>\u0412\u0441\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0440\u0435\u043a\u043b\u0430\u043c\u043e\u0439 \u0431\u0443\u0434\u0443 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u043c \u043a\u043b\u0430\u0441\u0441\u0435 <code>ImaManager<\/code>. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432 (\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e <code>adContainer<\/code>), \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u0438\u043d\u0441\u0442\u0430\u043d\u0441 <code>imaManager<\/code>.\u00a0<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/simpleExampleVast\/index.ts **\/ const imaManager = new ImaManager(videoElement, adContainer)<\/code><\/pre>\n<p>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043d\u0430\u0448\u0435\u043c <code>adContainer<\/code> \u0432 <code>ima<\/code>. \u0418\u043c\u0435\u043d\u043d\u043e \u0432 \u044d\u0442\u043e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 IMA \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u043e\u0431\u043e\u0439 <code>html<\/code> \u0441 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u043e\u043c \u0432 <code>&lt;iframe><\/code> \u0438\u043b\u0438 <code>&lt;video><\/code>. \u0422\u0430\u043a\u0436\u0435 \u0432 IMA SDK \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u0438\u043b\u0438 \u0442\u0430\u0439\u043c\u0435\u0440\u0430.<\/p>\n<p>\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 <code>ImaManager<\/code>.<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/simpleExampleVast\/ImaManager.ts **\/ init() { \u00a0\u00a0\u00a0const ima = window.google.ima  \u00a0\u00a0\u00a0const adDisplayContainer = new ima.AdDisplayContainer( \u00a0\u00a0\u00a0\u00a0\u00a0this.adContainer \u00a0\u00a0\u00a0)  \u00a0\u00a0\u00a0adDisplayContainer.initialize() \u00a0}<\/code><\/pre>\n<p>\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u0438\u043a \u0440\u0435\u043a\u043b\u0430\u043c\u044b<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/simpleExampleVast\/ImaManager.ts **\/ init() { \u00a0\u00a0\u00a0if (this.adsLoader) return  \u00a0\u00a0\u00a0const ima = window.google.ima  \u00a0\u00a0\u00a0const adDisplayContainer = new ima.AdDisplayContainer(this.adContainer)    adDisplayContainer.initialize()  \u00a0\u00a0\u00a0this.adsLoader = new ima.AdsLoader(adDisplayContainer)  \u00a0\u00a0\u00a0this.adsLoader.addEventListener( \u00a0\u00a0\u00a0\u00a0\u00a0ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, \u00a0\u00a0\u00a0\u00a0\u00a0this.onAdsManagerLoaded \u00a0\u00a0\u00a0)  \u00a0\u00a0\u00a0this.adsLoader.addEventListener( \u00a0\u00a0\u00a0\u00a0\u00a0ima.AdErrorEvent.Type.AD_ERROR, \u00a0\u00a0\u00a0\u00a0\u00a0this.onAdError \u00a0\u00a0\u00a0) \u00a0}<\/code><\/pre>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c <code>adsLoader<\/code> \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e <code>ImaManager<\/code> \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0434\u0438\u043d \u0440\u0430\u0437, \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 \u0435\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p><code>adsLoader<\/code> \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 xml \u0444\u0430\u0439\u043b \u0438 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e \u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0438 <code>ADS_MANAGER_LOADED<\/code> \u0438\u043b\u0438 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u2014 <code>AD_ERROR<\/code>.<\/p>\n<p><a class=\"anchor\" name=\"6\" id=\"6\"><\/a><\/p>\n<h4>\u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0438<\/h4>\n<p>\u0423 ima \u0435\u0441\u0442\u044c \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438 \u043d\u0435\u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u0438\u0445 \u043a\u043e\u0434\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/support.google.com\/authorizedbuyers\/answer\/9032019?hl=ru\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043c\u0435\u0442\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/simpleExampleVast\/ImaManager.ts **\/ private onAdError = (adErrorEvent: google.ima.AdErrorEvent) => { \u00a0\u00a0\u00a0console.error( \u00a0\u00a0\u00a0\u00a0\u00a0adErrorEvent.getError().getErrorCode(), \u00a0\u00a0\u00a0\u00a0\u00a0adErrorEvent.getError().getMessage() \u00a0\u00a0\u00a0) \u00a0}<\/code><\/pre>\n<p><a class=\"anchor\" name=\"7\" id=\"7\"><\/a><\/p>\n<h4>\u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0441\u043e\u0431\u044b\u0442\u0438\u0435 ADS_MANAGER_LOADED<\/h4>\n<pre><code class=\"typescript\">\/* .\/src\/simpleExampleVast\/ImaManager.ts **\/ this.adsLoader.addEventListener( \u00a0\u00a0\u00a0ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, \u00a0\u00a0\u00a0this.onAdsManagerLoaded )<\/code><\/pre>\n<p>\u0421\u043e\u0431\u044b\u0442\u0438\u0435 <code>ADS_MANAGER_LOADED<\/code> \u0442\u0440\u0438\u0433\u0435\u0440\u0438\u0442\u0441\u044f \u0432 \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d xml-\u0444\u0430\u0439\u043b. \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a <code>adsManager<\/code>. \u041e\u043d \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u00ab\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u00bb \u0441 \u0440\u0435\u043a\u043b\u0430\u043c\u043e\u0439. \u0418\u043d\u0441\u0442\u0430\u043d\u0441 <code>adsManager<\/code> \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442:<\/p>\n<ul>\n<li>\n<p>\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0440\u0435\u043a\u043b\u0430\u043c\u0435,\u00a0<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0440\u0435\u043a\u043b\u0430\u043c\u044b,\u00a0<\/p>\n<\/li>\n<li>\n<p>\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u2014 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c, \u043f\u0435\u0440\u0435\u043c\u043e\u0442\u0430\u0442\u044c \u0438\u043b\u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a\u0436\u0435, \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043a\u0438\u043d\u0443\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <code>adsManager<\/code> \u2014 \u0438\u0445 \u0441\u043f\u0438\u0441\u043e\u043a <a href=\"https:\/\/developers.google.com\/interactive-media-ads\/docs\/sdks\/html5\/client-side\/reference\/js\/google.ima.AdsRenderingSettings\">\u0442\u0443\u0442<\/a>.\u00a0<\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0438\u0437\u043c\u0435\u043d\u0438\u043c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u0430 \u043d\u0430 9 \u0441\u0435\u043a\u0443\u043d\u0434 (default = 8 \u0441\u0435\u043a\u0443\u043d\u0434). \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0432\u0438\u0434\u0435\u043e \u0438\u043b\u0438 \u0431\u0430\u043d\u043d\u0435\u0440 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 9 \u0441\u0435\u043a\u0443\u043d\u0434, IMA \u0435\u0433\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442 \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439, \u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u043f\u043e\u043a\u0430\u0437\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u044b (\u043e\u0431 \u044d\u0442\u043e\u043c \u0432 <a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#12\">\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0440\u0435\u043a\u043b\u0430\u043c\u044b<\/a>)<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/simpleExampleVast\/ImaManager.ts **\/ onAdsManagerLoaded = ( \u00a0\u00a0\u00a0adsManagerLoadedEvent: google.ima.AdsManagerLoadedEvent ) => { \u00a0\u00a0\u00a0console.info('Ads manager loaded')  \u00a0\u00a0\u00a0const ima = window.google.ima  \u00a0\u00a0\u00a0const adsRenderingSettings = new ima.AdsRenderingSettings()  \u00a0\u00a0\u00a0adsRenderingSettings.loadVideoTimeout = 9000  \u00a0\u00a0\u00a0this.adsManager = adsManagerLoadedEvent.getAdsManager( \u00a0\u00a0\u00a0\u00a0\u00a0this.videoElement, \u00a0\u00a0\u00a0\u00a0\u00a0adsRenderingSettings \u00a0\u00a0\u00a0) \u00a0}<\/code><\/pre>\n<p>\u0412 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0439\u0442\u0438 \u043d\u0435 \u0442\u0430\u043a, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c <a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#6\">\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043e\u0448\u0438\u0431\u043e\u043a<\/a> \u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c adsManager.\u00a0<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/simpleExampleVast\/ImaManager.ts **\/ onAdsManagerLoaded = ( \u00a0\u00a0\u00a0adsManagerLoadedEvent: google.ima.AdsManagerLoadedEvent \u00a0) => { \u00a0\u00a0\u00a0\/\/ . . .\u00a0  \u00a0\u00a0\u00a0this.adsManager.addEventListener( \u00a0\u00a0\u00a0\u00a0\u00a0ima.AdErrorEvent.Type.AD_ERROR, \u00a0\u00a0\u00a0\u00a0\u00a0this.onAdError \u00a0\u00a0\u00a0)  \u00a0\u00a0\u00a0this.adsManager.init( \u00a0\u00a0\u00a0\u00a0\u00a0this.videoElement.clientWidth, \u00a0\u00a0\u00a0\u00a0\u00a0this.videoElement.clientHeight, \u00a0\u00a0\u00a0\u00a0\u00a0ima.ViewMode.NORMAL \u00a0\u00a0\u00a0) \u00a0}<\/code><\/pre>\n<p>\u041f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 <code>adsManager<\/code> \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0442\u0440\u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u2014 \u0448\u0438\u0440\u0438\u043d\u0443 \u0438 \u0432\u044b\u0441\u043e\u0442\u0443 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u043f\u0440\u0438 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u0440\u0435\u0436\u0438\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u00abNORMAL\u00bb \u0438\u043b\u0438 \u00abFULLSCREEN\u00bb).<\/p>\n<p><a class=\"anchor\" name=\"8\" id=\"8\"><\/a><\/p>\n<h4>\u0417\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c \u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u0440\u0435\u043a\u043b\u0430\u043c\u0443<\/h4>\n<p>\u0412 \u043a\u043b\u0430\u0441\u0441\u0435 <code>ImaManager<\/code> \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u043c\u0435\u0442\u043e\u0434 <code>requestAds<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u0438 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u0435\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443. <\/p>\n<pre><code class=\"typescript\">\/* .\/src\/simpleExampleVast\/ImaManager.ts **\/ requestAds(adTagUrl: string) { \u00a0\u00a0\u00a0if (!this.adsLoader) return  \u00a0\u00a0\u00a0console.info('Start to request ad')  \u00a0\u00a0\u00a0const adsRequest = new window.google.ima.AdsRequest()  \u00a0\u00a0\u00a0adsRequest.adTagUrl = adTagUrl  \u00a0\u00a0\u00a0this.adsLoader.requestAds(adsRequest) \u00a0}<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0437\u043e\u0432\u0430 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>adsLoader<\/code> \u043d\u0430\u0447\u043d\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u0438 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0434\u0438\u0441\u043f\u0430\u0442\u0447\u0438\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 <code>ADS_MANAGER_LOADED<\/code>. \u0412 \u043d\u0435\u043c \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c <code>adsManager<\/code>, \u0437\u0430\u0434\u0430\u0447\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u2014 \u043d\u0430\u0439\u0442\u0438 \u0432 xml .mp4 \u0444\u0430\u0439\u043b \u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043e \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435. \u0418\u2026 \u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f.\u00a0<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0440\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435, \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0436\u0434\u0430\u0442\u044c\u0441\u044f \u0435\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438 \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>adsManager.start()<\/code>.<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/simpleExampleVast\/ImaManager.ts **\/ private onAdsManagerLoaded = ( \u00a0\u00a0\u00a0adsManagerLoadedEvent: google.ima.AdsManagerLoadedEvent \u00a0) => { \u00a0\u00a0\u00a0\/\/ . . .\u00a0  \u00a0\u00a0\u00a0this.adsManager.addEventListener( \u00a0\u00a0\u00a0\u00a0\u00a0ima.AdEvent.Type.LOADED, \u00a0\u00a0\u00a0\u00a0\u00a0this.adsManager.start \u00a0\u00a0\u00a0)  \u00a0\u00a0\u00a0this.adsManager.addEventListener( \u00a0\u00a0\u00a0\u00a0\u00a0ima.AdErrorEvent.Type.AD_ERROR, \u00a0\u00a0\u00a0\u00a0\u00a0this.onAdError \u00a0\u00a0\u00a0)  \u00a0\u00a0\u00a0\/\/ . . . \u00a0}<\/code><\/pre>\n<p>\u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 <code>imaManager<\/code>. \u0412 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>init<\/code> \u044f \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0443 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0430<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/simpleExampleVast\/index.ts **\/ import { loadIma } from '..\/imaLoader'  function createAdService() { \u00a0\/\/ Get elements and init ad's manager \u00a0const videoElement = document.getElementById( \u00a0\u00a0\u00a0'videoElement' \u00a0) as HTMLVideoElement  \u00a0const adContainer = document.getElementById('adContainer') as HTMLDivElement  \u00a0if (videoElement === null || adContainer === null) \u00a0\u00a0\u00a0throw Error('VideoElement or AdContainer not included in DOM')  \u00a0const imaManager = new ImaManager(videoElement, adContainer)  \u00a0\/\/ Init ima instance \u00a0imaManager.init()  \u00a0\/\/ Activate controls \u00a0const startBtn = document.getElementById('startButton')   \u00a0startBtn?.addEventListener('click', () => {   \u00a0\/\/ Start to load current ad when start ad button clicked   \u00a0imaManager.requestAds(   \u00a0\u00a0\u00a0'https:\/\/lerok007.ams3.digitaloceanspaces.com\/vast%20(1).xml'   \u00a0) \u00a0}) }  document.addEventListener('DOMContentLoaded', () => loadIma(createAdService))<\/code><\/pre>\n<p><em>\u041a\u043b\u0430\u0441\u0441 ImaManager \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 simpleExampleVast \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0434 \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0435 yarn simple-vast. \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438.<\/em><\/p>\n<p>P. S. \u0423 <code>adsManager<\/code> \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0435\u043a\u043b\u0430\u043c\u043e\u0439 \u0438 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u043c\u0438 \u0431\u043b\u043e\u043a\u0430\u043c\u0438 (\u0432\u0435\u0434\u044c \u0438\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e). \u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0441 \u0442\u0430\u0439\u043f\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c, \u0442\u043e \u043f\u0440\u043e\u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0442\u0440\u0443\u0434\u0430. \u0414\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0430 \u043c\u0435\u0442\u043e\u0434\u044b \u043f\u043b\u0435\u044f, \u043f\u0430\u0443\u0437\u044b \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u044b. \u0412\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c: \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u0440\u0435\u0433\u0443\u043b\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 <em>skipoffset<\/em> <a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#3\">VAST-\u0444\u0430\u0439\u043b\u0430<\/a>.<\/p>\n<p><a class=\"anchor\" name=\"9\" id=\"9\"><\/a><\/p>\n<h4>\u041f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 (\u0432\u044a\u0435\u0437\u0436\u0430\u0435\u043c \u0432 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0440\u0435\u043a\u043b\u0430\u043c\u044b)<\/h4>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443. \u0412\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432\u0441\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043f\u043b\u043e\u0445\u043e. \u041d\u043e \u043a\u043e\u0435-\u0447\u0442\u043e \u043c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u0435\u0441\u043b\u0438 \u044f \u043f\u043e\u043f\u044b\u0442\u0430\u044e\u0441\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b <code>videoContainer<\/code>, \u0442\u043e \u0440\u0435\u043a\u043b\u0430\u043c\u0430 \u043a \u043d\u0438\u043c \u043d\u0435 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/9d3\/93c\/c01\/9d393cc01ccd41f882276be91cdea007.png\" alt=\"\u0414\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 \u0432\u0438\u0434\" title=\"\u0414\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 \u0432\u0438\u0434\" width=\"1042\" height=\"591\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9d3\/93c\/c01\/9d393cc01ccd41f882276be91cdea007.png\"\/><\/p>\n<div><figcaption>\u0414\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 \u0432\u0438\u0434<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7d3\/251\/0ed\/7d32510ede9011fef0456cbb1e657138.png\" alt=\"\u041f\u0440\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f\" title=\"\u041f\u0440\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f\" width=\"1299\" height=\"745\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7d3\/251\/0ed\/7d32510ede9011fef0456cbb1e657138.png\"\/><\/p>\n<div><figcaption><em>\u041f\u0440\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u0441\u0435 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u044f \u0431\u0443\u0434\u0443 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430, \u043d\u043e \u0443\u0436\u0435 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <a href=\"https:\/\/github.com\/doubletapp\/vast-examples\/tree\/main\/src\/advancedExampleVast\"><em>advancedExampleVast<\/em><\/a>.<\/p>\n<p><a class=\"anchor\" name=\"10\" id=\"10\"><\/a><\/p>\n<h4>\u041b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/h4>\n<p>\u0417\u0430\u0434\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 <code>ima<\/code> \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445 <code>adConteiners<\/code> \u0438 \u0442\u043e\u0447\u0435\u0447\u043d\u043e \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e (<a href=\"https:\/\/developers.google.com\/interactive-media-ads\/docs\/sdks\/html5\/client-side\/reference\/js\/google.ima.ImaSdkSettings#setAutoPlayAdBreaks\">\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/a>).\u00a0<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0438\u0436\u0435 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438. \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u2014 \u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0434\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<pre><code class=\"typescript\">\/\/ global change  \u00a0\u00a0\u00a0ima.settings.setLocale('ru')  \u00a0\u00a0\u00a0ima.settings.setAutoPlayAdBreaks(false)<\/code><\/pre>\n<pre><code class=\"typescript\">\/\/ local change for manual managing current adContainer  \u00a0\u00a0\u00a0this.adsLoader.getSettings().setAutoPlayAdBreaks(false)<\/code><\/pre>\n<p>setAutoPlayAdBreaks \u043c\u044b \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0434\u0430\u043b\u0435\u0435 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 <a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#14\">VMAP<\/a>.<\/p>\n<p><a class=\"anchor\" name=\"11\" id=\"11\"><\/a><\/p>\n<h4>\u0410\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c<\/h4>\n<p>\u0421\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0431\u0443\u0434\u0443 \u0447\u0435\u0440\u0435\u0437 ResizeObserver. \u041a\u0441\u0442\u0430\u0442\u0438, \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a \u043d\u0435\u043c\u0443 \u043f\u043e\u043b\u0438\u0444\u0438\u043b \u0434\u043b\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445.<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/advancedExampleVast\/ImaManager.ts **\/ private initResizeObserver(): void { \u00a0\u00a0\u00a0const resizeObserver = new ResizeObserver(() => { \u00a0\u00a0\u00a0\u00a0\u00a0this.adsManager?.resize( \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.videoElement.clientWidth, \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.videoElement.clientHeight, \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0window.google.ima.ViewMode.NORMAL \u00a0\u00a0\u00a0\u00a0\u00a0) \u00a0\u00a0\u00a0})  \u00a0\u00a0\u00a0resizeObserver.observe(this.videoElement) \u00a0}<\/code><\/pre>\n<p><a class=\"anchor\" name=\"12\" id=\"12\"><\/a><\/p>\n<h4>\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439<\/h4>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0434\u043b\u044f VAST \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/developers.google.com\/interactive-media-ads\/docs\/sdks\/html5\/client-side\/reference\/js\/google.ima.AdEvent\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u041f\u043e\u0434\u043f\u0438\u0448\u0435\u043c\u0441\u044f \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0438 \u043f\u0440\u043e\u043b\u043e\u0433\u0433\u0438\u0440\u0443\u0435\u043c.<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/advancedExampleVast\/ImaManager.ts **\/ private onAdsManagerLoaded = ( \u00a0\u00a0\u00a0adsManagerLoadedEvent: google.ima.AdsManagerLoadedEvent \u00a0) => { \u00a0\u00a0\u00a0\/\/ . . .  \u00a0\u00a0\u00a0const imaEvents: google.ima.AdEvent.Type[] = [ \u00a0\u00a0\u00a0\u00a0\u00a0window.google.ima.AdEvent.Type.LOADED, \u00a0\u00a0\u00a0\u00a0\u00a0window.google.ima.AdEvent.Type.STARTED, \u00a0\u00a0\u00a0\u00a0\u00a0window.google.ima.AdEvent.Type.AD_PROGRESS, \u00a0\u00a0\u00a0\u00a0\u00a0window.google.ima.AdEvent.Type.PAUSED, \u00a0\u00a0\u00a0\u00a0\u00a0window.google.ima.AdEvent.Type.RESUMED, \u00a0\u00a0\u00a0\u00a0\u00a0window.google.ima.AdEvent.Type.SKIPPABLE_STATE_CHANGED, \u00a0\u00a0\u00a0\u00a0\u00a0window.google.ima.AdEvent.Type.SKIPPED, \u00a0\u00a0\u00a0\u00a0\u00a0window.google.ima.AdEvent.Type.CLICK, \u00a0\u00a0\u00a0\u00a0\u00a0window.google.ima.AdEvent.Type.VOLUME_CHANGED, \u00a0\u00a0\u00a0\u00a0\u00a0window.google.ima.AdEvent.Type.COMPLETE, \u00a0\u00a0\u00a0\u00a0\u00a0window.google.ima.AdEvent.Type.ALL_ADS_COMPLETED, \u00a0\u00a0\u00a0]  \u00a0\u00a0\u00a0imaEvents.forEach((imaEvent) => \u00a0\u00a0\u00a0\u00a0\u00a0this.adsManager?.addEventListener(imaEvent, this.onAdEvent) \u00a0\u00a0\u00a0)<\/code><\/pre>\n<pre><code class=\"typescript\">\/* .\/src\/advancedExampleVast\/ImaManager.ts **\/ onAdEvent = ( \u00a0\u00a0\u00a0adEvent: google.ima.AdEvent &amp; { type?: google.ima.AdEvent.Type } \u00a0) => { \u00a0\u00a0\u00a0console.info('EVENT: ', adEvent.type)  \u00a0\u00a0\u00a0switch (adEvent.type) { \u00a0\u00a0\u00a0\u00a0\u00a0case window.google.ima.AdEvent.Type.LOADED: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.adsManager?.start() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break \u00a0\u00a0\u00a0} \u00a0}<\/code><\/pre>\n<p>\u0412 \u0438\u0432\u0435\u043d\u0442\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u0440\u0435\u043a\u043b\u0430\u043c\u0435 (<code>adEvent.getAd()<\/code> \u0438\u043b\u0438 <code>adEvent.getAdData()<\/code>). \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432\u044b \u0435\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u043b\u0438. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0438 <code>AD_PROGRESS<\/code> \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u043a\u043b\u0430\u043c\u044b, \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0435 \u0438 \u0442. \u043f.<\/p>\n<p>\u0414\u043b\u044f \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0430\u0440\u043e\u0447\u043a\u0443 \u0441\u0430\u0439\u0434-\u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432, \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u043c\u043e\u0438\u043c \u0432\u043e\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u043c \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u043e\u043c<\/p>\n<ol>\n<li>\n<p>\u00ab\u042f \u043a\u043b\u0438\u043a\u0430\u044e \u043d\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u0443, \u043f\u0435\u0440\u0435\u0445\u043e\u0436\u0443 \u043d\u0430 \u0441\u0430\u0439\u0442, \u043f\u043e\u0442\u043e\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e, \u0438 \u0440\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 \u043f\u0430\u0443\u0437\u0435. \u0425\u043e\u0447\u0443, \u0447\u0442\u043e\u0431\u044b \u044f \u043c\u043e\u0433 \u0435\u0435 \u0432\u043e\u0437\u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u00bb.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430:<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/advancedExampleVast\/ImaManager.ts **\/ onAdEvent = ( \u00a0\u00a0\u00a0adEvent: google.ima.AdEvent &amp; { type?: google.ima.AdEvent.Type } \u00a0) => { \u00a0\u00a0\u00a0console.info('EVENT: ', adEvent.type)  \u00a0\u00a0\u00a0switch (adEvent.type) { \u00a0\u00a0\u00a0\u00a0\u00a0case window.google.ima.AdEvent.Type.LOADED: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.adsManager?.start() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break \u00a0\u00a0\u00a0\u00a0\u00a0case window.google.ima.AdEvent.Type.PAUSED: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.resumeButton?.classList.remove('hidden') \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break \u00a0\u00a0\u00a0\u00a0\u00a0case window.google.ima.AdEvent.Type.RESUMED: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.resumeButton?.classList.add('hidden') \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break \u00a0\u00a0\u00a0} \u00a0}<\/code><\/pre>\n<ol start=\"2\">\n<li>\n<p>\u00ab\u041c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u044d\u0442\u0430 \u043f\u0443\u0441\u0442\u043e\u0442\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u044b. \u041f\u0443\u0441\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0435\u0449\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u0430 \u2014 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u00bb.<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"typescript\">\/* .\/src\/advancedExampleVast\/ImaManager.ts **\/ onAdEvent = ( \u00a0\u00a0\u00a0adEvent: google.ima.AdEvent &amp; { type?: google.ima.AdEvent.Type } \u00a0) => { \u00a0\u00a0\u00a0console.info('EVENT: ', adEvent.type)  \u00a0\u00a0\u00a0switch (adEvent.type) { \u00a0\u00a0\u00a0\u00a0\u00a0\/\/ . . . \u00a0\u00a0\u00a0\u00a0\u00a0case window.google.ima.AdEvent.Type.SKIPPED: \u00a0\u00a0\u00a0\u00a0\u00a0case window.google.ima.AdEvent.Type.ALL_ADS_COMPLETED: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.requestAds( \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'https:\/\/lerok007.ams3.digitaloceanspaces.com\/vast%20(1).xml' \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break \u00a0\u00a0\u00a0} \u00a0}<\/code><\/pre>\n<p><em>\u041a\u043b\u0430\u0441\u0441 ImaManager \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 advancedExampleVast \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u0434 \u043f\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0435 yarn advanced-vast.<\/em><\/p>\n<p>P. S. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c VAST \u0438\u043b\u0438 VMAP. \u041d\u043e \u0432\u0430\u0436\u043d\u043e \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 VMAP \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u044b, \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u043a <em>preroll<\/em>. (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 <a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#14\">\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 VMAP<\/a>)<\/p>\n<p><a class=\"anchor\" name=\"13\" id=\"13\"><\/a><\/p>\n<h3>\u0420\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u043c \u0432\u0438\u0434\u0435\u043e\u0440\u043e\u043b\u0438\u043a \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u043c\u0438 \u043f\u0430\u0443\u0437\u0430\u043c\u0438 (in-stream, VMAP)<\/h3>\n<p>\u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f: \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e \u043d\u0430\u0448 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a \u2014 \u043c\u0435\u0434\u0438\u0430\u0441\u0435\u0440\u0432\u0438\u0441 \u0441 \u043f\u043b\u0430\u0442\u043d\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u043e\u0439, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u043e\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u0434\u043b\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430. \u0427\u0442\u043e\u0431\u044b \u043e\u043f\u043b\u0430\u0442\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u043b\u044f \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043c\u0430 \u0444\u0430\u0439\u043b\u043e\u0432, \u0430 \u0435\u0449\u0435 \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0443\u044e \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c, \u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0442\u0440\u0430\u0442\u044b, \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044f \u043e\u043f\u043b\u0430\u0442\u044b \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0439 \u043d\u0430 \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u044e \u0441\u0430\u043c\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441\u0442\u0430\u0440\u0430\u044e\u0442\u0441\u044f \u043c\u043e\u043d\u0435\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0431\u0435\u0437 \u043f\u043e\u0434\u043f\u0438\u0441\u043a\u0438, \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044f \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0438. \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430, \u0432 \u043a\u043e\u043d\u0446\u0435 \u0438 \u0432 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0431\u044b \u043c\u044b \u0440\u0435\u0448\u0430\u043b\u0438 \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443, \u0438\u043c\u0435\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0439 VAST, \u0442\u043e \u043d\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0431\u044b \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c <em>timestamp<\/em> \u0432\u0438\u0434\u0435\u043e \u0438 \u0432 \u043d\u0443\u0436\u043d\u044b\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0440\u0435\u043a\u043b\u0430\u043c\u0443. \u0411\u043b\u0430\u0433\u043e \u0432\u0441\u0435 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 VMAP.\u00a0<\/p>\n<p>\u041d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043d\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0442\u0434\u0430\u044e\u0442 VAST \u0444\u0430\u0439\u043b\u044b, \u043d\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043c\u0435\u0448\u0430\u0435\u0442 \u0443\u043f\u0430\u043a\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0432 VMAP.<\/p>\n<p><a class=\"anchor\" name=\"14\" id=\"14\"><\/a><\/p>\n<h4>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e VMAP<\/h4>\n<p><em>\u042d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442\u043e\u043c VMAP-\u0444\u0430\u0439\u043b\u043e\u0432, \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a <\/em><a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#15\"><em>\u0440\u0430\u0437\u0434\u0435\u043b\u0443 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439<\/em><\/a><em>.<\/em><\/p>\n<p>Video Multiple Ad Playlist \u0438\u043b\u0438 VMAP \u2014 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u044b\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u043d\u0430\u0431\u043e\u0440\u0430\u043c\u0438 \u0432\u0438\u0434\u0435\u043e\u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0439. \u042d\u0442\u043e xml-\u0444\u0430\u0439\u043b, \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Interactive Advertising Bureau (IAB). \u041d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u043c\u0435\u0435\u0442 <a href=\"https:\/\/iabtechlab.com\/standards\/video-multiple-ad-playlist-vmap\/\">\u043e\u0434\u043d\u0443 \u0432\u0435\u0440\u0441\u0438\u044e<\/a>.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0449\u0435, \u0442\u043e VMAP \u2014 \u044d\u0442\u043e \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0445 \u043f\u0430\u0443\u0437 \u0434\u043b\u044f \u0432\u0438\u0434\u0435\u043e\u043f\u043b\u0435\u0435\u0440\u0430, \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u043a\u0430\u043a\u043e\u0439-\u043b\u0438\u0431\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442.\u00a0<\/p>\n<p>\u041d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 VMAP-\u0444\u0430\u0439\u043b\u0430<\/p>\n<pre><code class=\"xml\">&lt;vmap:VMAP xmlns:vmap=\"http:\/\/www.iab.net\/videosuite\/vmap\" version=\"1.0\">   &lt;vmap:AdBreak timeOffset=\"start\" breakType=\"linear\" breakId=\"preroll\">     &lt;vmap:AdSource id=\"preroll\" allowMultipleAds=\"false\" followRedirects=\"true\">       &lt;vmap:AdTagURI templateType=\"vast3\">         &lt;![CDATA[ https:\/\/raw.githubusercontent.com\/InteractiveAdvertisingBureau\/VAST_Samples\/master\/VAST%203.0%20Samples\/Inline_Linear_Tag-test.xml ]]&gt;       &lt;\/vmap:AdTagURI>     &lt;\/vmap:AdSource>   &lt;\/vmap:AdBreak>   &lt;vmap:AdBreak timeOffset=\"00:00:30.000\" breakType=\"linear\" breakId=\"midroll-1\">     &lt;vmap:AdSource id=\"midroll-ad-1\" allowMultipleAds=\"true\" followRedirects=\"true\">       &lt;vmap:AdTagURI templateType=\"vast3\">         &lt;![CDATA[ https:\/\/raw.githubusercontent.com\/InteractiveAdvertisingBureau\/VAST_Samples\/master\/VAST%203.0%20Samples\/Inline_Linear_Tag-test.xml ]]&gt;       &lt;\/vmap:AdTagURI>     &lt;\/vmap:AdSource>   &lt;\/vmap:AdBreak>   &lt;vmap:AdBreak timeOffset=\"00:01:00.000\" breakType=\"linear\" breakId=\"midroll-1\">     &lt;vmap:AdSource id=\"midroll-ad-2\" allowMultipleAds=\"true\" followRedirects=\"true\"> (*1)  &lt;vmap:VASTData>        &lt;VAST version=\u201d3.0\u201d>        \u00a0 \u00a0. . .       \u00a0\u00a0\u00a0&lt;\/VAST>       &lt;\/vmap:VASTData>     &lt;\/vmap:AdSource>     &lt;vmap:TrackingEvents>     \u00a0\u00a0\u00a0&lt;vmap:Tracking event=\u201dbreakStart\u201d>      https:\/\/www.example.com\/breakStart     \u00a0\u00a0\u00a0&lt;\/vmap:Tracking> (*2)&lt;\/vmap:TrackingEvents>   &lt;\/vmap:AdBreak>   &lt;vmap:AdBreak timeOffset=\"00:01:30.000\" breakType=\"linear\" breakId=\"midroll-1\">     &lt;vmap:AdSource id=\"midroll-ad-3\" allowMultipleAds=\"false\" followRedirects=\"true\">       &lt;vmap:AdTagURI templateType=\"vast3\">         &lt;![CDATA[ https:\/\/raw.githubusercontent.com\/InteractiveAdvertisingBureau\/VAST_Samples\/master\/VAST%203.0%20Samples\/Inline_Linear_Tag-test.xml ]]&gt;       &lt;\/vmap:AdTagURI>     &lt;\/vmap:AdSource>   &lt;\/vmap:AdBreak>   &lt;vmap:AdBreak timeOffset=\"end\" breakType=\"linear\" breakId=\"postroll\">     &lt;vmap:AdSource id=\"postroll\" allowMultipleAds=\"false\" followRedirects=\"true\">       &lt;vmap:AdTagURI templateType=\"vast3\">         &lt;![CDATA[ https:\/\/raw.githubusercontent.com\/InteractiveAdvertisingBureau\/VAST_Samples\/master\/VAST%203.0%20Samples\/Inline_Linear_Tag-test.xml ]]&gt;       &lt;\/vmap:AdTagURI>     &lt;\/vmap:AdSource>   &lt;\/vmap:AdBreak> &lt;\/vmap:VMAP><\/code><\/pre>\n<p><em>*\u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430. \u041c\u044b \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u043c, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 VAST \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b.<\/em><\/p>\n<p><code>AdBreak<\/code> \u2014 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u0430\u044f \u043f\u0430\u0443\u0437\u0430, \u043e\u0431\u0435\u0440\u0442\u043a\u0430 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 VAST.\u00a0<br \/>\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b:<br \/><em>timeOffset<\/em> \u2014 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0432 \u043a\u0430\u043a\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e \u043d\u0430\u0447\u043d\u0435\u0442\u0441\u044f \u0440\u0435\u043a\u043b\u0430\u043c\u0430. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u043b\u044f IMA SDK \u2014 <em>\u201cstart\u201d, \u201cend\u201d<\/em> \u0438\u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0434\u043e \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434.<br \/><em>breakType<\/em> \u2014 \u0437\u0430\u0434\u0430\u0435\u0442 \u0442\u0438\u043f \u0440\u0435\u043a\u043b\u0430\u043c\u044b.<\/p>\n<p><code>AdSource<\/code><strong> <\/strong>\u2014 \u0445\u0440\u0430\u043d\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e VAST, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f. \u0412 \u043d\u0435\u0433\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u0430 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 VAST (<code>AdTagURI<\/code>) \u0438\u043b\u0438 \u0446\u0435\u043b\u044b\u0439 \u0444\u0430\u0439\u043b ((1*) <code>VASTData<\/code>).<br \/>\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b:<br \/><em>allowMultipleAds<\/em> \u2014 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0443\u0437\u043b\u043e\u0432 <code>Ad<\/code> \u0432 <code>VAST<\/code> (\u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430),\u00a0<br \/><em>followRedirects<\/em> \u2014 \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0438\u043b\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 <code>VAST<\/code> \u0441 \u043f\u0435\u0440\u0435\u0430\u0434\u0440\u0435\u0441\u0430\u0446\u0438\u0435\u0439 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 <code>VAST<\/code>. (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>Wrapper<\/code>)<\/p>\n<p>(2*) \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0432 <code>TrackingEvents<\/code><\/p>\n<p><a class=\"anchor\" name=\"15\" id=\"15\"><\/a><\/p>\n<h4>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c VMAP \u043a \u0432\u0438\u0434\u0435\u043e\u043f\u043b\u0435\u0435\u0440\u0443<\/h4>\n<p><em>\u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <\/em><a href=\"https:\/\/github.com\/doubletapp\/vast-examples\/tree\/main\/src\/exampleVmap\"><em>exampleVmap<\/em><\/a><em>. \u0412\u0441\u0435 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u044f \u0431\u0443\u0434\u0443 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0432 \u043d\u0435\u043c.<\/em><\/p>\n<p>\u042f \u0431\u044b\u043b\u0430 \u0431\u044b \u043d\u0435 \u044f, \u0435\u0441\u043b\u0438 \u0431\u044b \u043d\u0435 \u0437\u0430\u0445\u043e\u0441\u0442\u0438\u043b\u0430 \u0434\u043b\u044f \u0432\u0430\u0441 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b \u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 VMAP (<a href=\"https:\/\/lerok007.ams3.digitaloceanspaces.com\/vmap%20(2).xml\">\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043d\u0435\u0433\u043e<\/a>).<\/p>\n<p>\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0412 \u043d\u0435\u043c \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 4 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u0430 \u2014 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 (<em>preroll<\/em>) \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 (<em>postroll<\/em>) \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0432\u0430 <em>midroll<\/em> \u043d\u0430 5-\u0439 \u0438 10-\u0439 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445.\u00a0<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e \u043a\u043d\u043e\u043f\u043a\u0435, \u0430 \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e.\u00a0<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/exampleVmap\/index.ts **\/ function createAdService() { \u00a0\/\/ . . .  \u00a0videoElement.addEventListener('play', onVideoPlay)  \u00a0function onVideoPlay() { \u00a0\u00a0\u00a0imaManager.requestAds( \u00a0\u00a0\u00a0\u00a0'https:\/\/lerok007.ams3.digitaloceanspaces.com\/vmap%20(2).xml' \u00a0\u00a0\u00a0) \u00a0\u00a0\u00a0videoElement.removeEventListener('play', onVideoPlay) \u00a0} }<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0435 \u043f\u0430\u0443\u0437\u044b \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e, \u043d\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0432\u0438\u0434\u0435\u043e, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u043a\u043b\u0438\u043a\u0430\u0431\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043f\u043e\u0441\u043b\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0442\u0430\u043a\u0438\u0445 \u0441\u0430\u0439\u0434-\u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u0432 IMA \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u044b \u0434\u0432\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f <code>CONTENT_PAUSE_REQUESTED<\/code> \u0438 <code>CONTENT_RESUME_REQUESTED<\/code>. \u041e\u043d\u0438 \u0441\u043e\u043e\u0431\u0449\u0430\u044e\u0442, \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u043d\u0430\u0447\u0430\u0442\u044c \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438 \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442.\u00a0<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/exampleVmap\/ImaManager.ts **\/ onAdEvent = ( \u00a0\u00a0\u00a0adEvent: google.ima.AdEvent &amp; { type?: google.ima.AdEvent.Type } \u00a0) => { \u00a0\u00a0\u00a0console.info('EVENT: ', adEvent.type)  \u00a0\u00a0\u00a0switch (adEvent.type) { \u00a0\u00a0\u00a0\u00a0\u00a0case window.google.ima.AdEvent.Type.PAUSED: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.resumeButton?.classList.remove('hidden') \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break \u00a0\u00a0\u00a0\u00a0\u00a0case window.google.ima.AdEvent.Type.RESUMED: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.resumeButton?.classList.add('hidden') \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break \u00a0\u00a0\u00a0\u00a0\u00a0case window.google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.videoElement.pause() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.adContainer.classList.remove('backwards') \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break \u00a0\u00a0\u00a0\u00a0\u00a0case window.google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.videoElement.play() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.adContainer.classList.add('backwards') \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break \u00a0\u00a0\u00a0} \u00a0}<\/code><\/pre>\n<p><em>\u041a\u043b\u0430\u0441\u0441 backwards \u043c\u0435\u043d\u044f\u0435\u0442 z-index \u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u043d\u0430 -1.<\/em><\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0443\u0436\u0435 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 <code>LOADED<\/code>. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 <code>vast<\/code> \u0443 \u043d\u0430\u0441 \u0437\u0430\u0434\u0430\u043d\u044b \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043a\u0438 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0437\u0432\u0430\u0442\u044c <code>adsManager?.start()<\/code> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0441\u0435\u0433\u043e \u0440\u0430\u0437 \u043f\u043e\u0441\u043b\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u041f\u0440\u0438\u0447\u0435\u043c Ima \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0435\u0444\u0435\u0442\u0447\u0438\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u043f\u0435\u0440\u0435\u0434 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438.<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/exampleVmap\/ImaManager.ts **\/ private onAdsManagerLoaded = ( \u00a0\u00a0\u00a0adsManagerLoadedEvent: google.ima.AdsManagerLoadedEvent \u00a0) => { \u00a0\u00a0\u00a0\/\/ . . .  \u00a0\u00a0\u00a0this.adsManager.init( \u00a0\u00a0\u00a0\u00a0\u00a0this.videoElement.clientWidth, \u00a0\u00a0\u00a0\u00a0\u00a0this.videoElement.clientHeight, \u00a0\u00a0\u00a0\u00a0\u00a0this.ima.ViewMode.NORMAL \u00a0\u00a0\u00a0)  \u00a0\u00a0\u00a0this.adsManager?.start()   }<\/code><\/pre>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u0441\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u044b, \u043a\u0440\u043e\u043c\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439. \u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e IMA \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043e \u0442\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043e \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0435\u0439 \u043f\u043e\u043c\u043e\u0436\u0435\u043c.<\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 <em>postroll<\/em> \u0432\u043d\u0443\u0442\u0440\u0438 VMAP \u0438, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c, \u0441\u043e\u043e\u0431\u0449\u0438\u043c \u043e\u0431 \u044d\u0442\u043e\u043c <code>adsLoader.contentComplete()<\/code> \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e.<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/exampleVmap\/ImaManager.ts **\/ private addContentCompletedHandler(adsManager: google.ima.AdsManager) { \u00a0\u00a0\u00a0const hasPostroll = adsManager.getCuePoints().slice(-1)[0] === -1  \u00a0\u00a0\u00a0if (!hasPostroll) return     \u00a0\u00a0\u00a0const onContentEnded = () => { \u00a0\u00a0\u00a0\u00a0\u00a0if (hasPostroll) { \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.adsLoader?.contentComplete() \u00a0\u00a0\u00a0\u00a0\u00a0} \u00a0\u00a0\u00a0\u00a0\u00a0this.videoElement.removeEventListener('ended', onContentEnded) \u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0this.videoElement.addEventListener('ended', onContentEnded) \u00a0}<\/code><\/pre>\n<p>\u0412\u044b\u0437\u043e\u0432\u0435\u043c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f adsManager \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 onAdsManagerLoaded.<\/p>\n<p><a class=\"anchor\" name=\"16\" id=\"16\"><\/a><\/p>\n<h4>\u0420\u0443\u0447\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u0442\u043e\u043c \u0440\u0435\u043a\u043b\u0430\u043c\u044b<\/h4>\n<p>\u041d\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043c, \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0437\u0430\u0440\u0430\u043d\u0435\u0435, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0434\u043e\u0436\u0438\u0434\u0430\u0442\u044c\u0441\u044f \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u0430 \u0438 \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u043f\u043b\u0435\u0435\u0440\u0430 \u0443\u0436\u0435 \u0438\u043c\u0435\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0435\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c.<\/p>\n<p>\u042d\u0442\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u044f \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0438\u043b\u0430 \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 <a href=\"https:\/\/github.com\/doubletapp\/vast-examples\/tree\/main\/src\/advancedExampleVast\"><em>advancedExampleVmap<\/em><\/a><em>.<\/em><\/p>\n<p>\u0412 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 <code>adsLoader<\/code> \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/advancedExampleVmap\/ImaManager.ts **\/ init() { \u00a0\u00a0\u00a0\/\/ . . .  \u00a0\u00a0\u00a0this.adsLoader = new this.ima.AdsLoader(adDisplayContainer)  \u00a0\u00a0\u00a0this.adsLoader.getSettings().setAutoPlayAdBreaks(false) \u00a0}<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0438\u0432\u0435\u043d\u0442 <code>AD_BREAK_READY<\/code>. \u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e.<\/p>\n<p>\u041f\u0440\u0438 \u043d\u0430\u0447\u0430\u043b\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e \u0431\u0443\u0434\u0435\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 <code>imaManager.startAd()<\/code>,<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/advancedExampleVmap\/index.ts **\/ function onVideoPlay() {  \u00a0\u00a0\u00a0imaManager.startAd()  \u00a0\u00a0\u00a0videoElement.removeEventListener('play', onVideoPlay)  \u00a0}<\/code><\/pre>\n<p>\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a,\u00a0<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/advancedExampleVmap\/ImaManager.ts **\/ startAd() { \u00a0\u00a0\u00a0if (this.adsReady) { \u00a0\u00a0\u00a0\u00a0\u00a0this.adsManager?.start() \u00a0\u00a0\u00a0}  \u00a0\u00a0\u00a0this.adCanPlay = true \u00a0}<\/code><\/pre>\n<p>\u043b\u0438\u0431\u043e \u0436\u0434\u0430\u0442\u044c, \u043f\u043e\u043a\u0430 \u043e\u043d \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f<\/p>\n<pre><code class=\"typescript\">\/* .\/src\/advancedExampleVmap\/ImaManager.ts **\/ onAdEvent = ( \u00a0\u00a0\u00a0adEvent: google.ima.AdEvent &amp; { type?: google.ima.AdEvent.Type } \u00a0) => { \u00a0\u00a0\u00a0console.info('EVENT: ', adEvent.type)  \u00a0\u00a0\u00a0switch (adEvent.type) { \u00a0\u00a0\u00a0\u00a0\u00a0case window.google.ima.AdEvent.Type.AD_BREAK_READY: \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (this.adCanPlay) { \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.adsManager?.start() \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else { \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.adsReady = true \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0break         \u00a0\u00a0\u00a0\u00a0\/\/ . . .  \u00a0}<\/code><\/pre>\n<p>\u00a0P. S. \u041e\u0434\u043d\u0430\u043a\u043e \u0441 \u044d\u0442\u0438\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u043d\u0443\u0436\u043d\u043e \u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432 \u043e\u0431\u0430, \u0435\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u043d\u0435 \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c VAST-\u0444\u0430\u0439\u043b\u043e\u043c, \u0430 \u0441 VPAID. \u0412 \u0435\u0433\u043e \u043a\u043e\u0434\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 VPAID \u0441\u0442\u0430\u0432\u044f\u0442 <em>timeout<\/em>, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043e\u0431\u044f\u0437\u0430\u043d\u044b \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>adsManager.start()<\/code>, \u0438\u043d\u0430\u0447\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u0430 \u0443\u043f\u0430\u0434\u0435\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0438 IMA \u0435\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442.<\/p>\n<p>\u0412\u044b \u0434\u043e\u0448\u043b\u0438 \u0434\u043e \u044d\u0442\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0430? \u041f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u044f\u044e. \u0410 \u044f \u043a\u0430\u043a \u0440\u0430\u0437 \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0430\u0441\u044c \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e VPAID.<\/p>\n<p><a class=\"anchor\" name=\"17\" id=\"17\"><\/a><\/p>\n<h3>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 VPAID<\/h3>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043c, <a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#3\">\u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 VAST<\/a>.<\/p>\n<p>\u0418 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435 \u0435\u0433\u043e \u0441 VPAID \u043d\u0438\u0436\u0435<\/p>\n<pre><code class=\"xml\">&lt;VAST version=\"3.0\">   &lt;Ad id=\"1234567\">     &lt;InLine>     &lt;AdSystem>Your Ad System&lt;\/AdSystem>     &lt;AdTitle>Name of your VAST&lt;\/AdTitle>     &lt;Description>Linear Video Ad&lt;\/Description>     &lt;Error>https:\/\/www.example.com\/error&lt;\/Error>     &lt;Impression>https:\/\/www.example.com\/impression&lt;\/Impression>       &lt;Creatives>         &lt;Creative sequence=\"1\">           &lt;Linear skipoffset=\u201d00:00:05\u201d>           &lt;Duration>00:01:55&lt;\/Duration>           &lt;TrackingEvents>           . . .            &lt;\/TrackingEvents>           &lt;VideoClicks>           . . .            &lt;\/VideoClicks>             &lt;MediaFiles>               &lt;MediaFile maintainAspectRatio=\"true\" scalable=\"true\" delivery=\"progressive\" apiFramework=\"VPAID\" type=\"application\/javascript\">    &lt;![CDATA[ https:\/\/example.com\/vpaidVideoAd.js ]]&gt;               &lt;\/MediaFile>             &lt;\/MediaFiles>           &lt;\/Linear>         &lt;\/Creative>       &lt;\/Creatives>     &lt;\/InLine>   &lt;\/Ad> &lt;\/VAST> <\/code><\/pre>\n<p><em>*\u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430. \u041c\u044b \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u043c, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 VAST \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b<\/em><\/p>\n<p>\u042f \u043f\u043e\u0434\u0441\u043a\u0430\u0436\u0443, \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u0435 \u043b\u0438\u0448\u044c \u0432 \u043e\u0434\u043d\u043e\u043c \u2014 \u0432 <code>MediaFile<\/code> \u0437\u0434\u0435\u0441\u044c \u043b\u0435\u0436\u0438\u0442 \u0443\u0436\u0435 \u043d\u0435 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b <em>.mp4<\/em>, \u0430 \u0441\u043a\u0440\u0438\u043f\u0442.<\/p>\n<p>Video Player-Ad Interface Definition (VPAID) \u2014 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0435\u043a\u043b\u0430\u043c\u044b. \u0412 \u043d\u0435\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043e\u0442\u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442\u044c \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043b\u044e\u0431\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b. \u041f\u043e \u0438\u0442\u043e\u0433\u0443 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0434\u0430\u0436\u0435 \u043d\u0435 \u0432\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b, \u0430 \u0431\u0430\u043d\u043d\u0435\u0440 \u0441 \u043e\u043f\u0440\u043e\u0441\u043e\u043c. \u041c\u043e\u0439 \u0441\u043e\u0432\u0435\u0442: \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u044b\u0442\u0430\u0439\u0442\u0435\u0441\u044c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u0438 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0435\u0435 \u0440\u043e\u0432\u043d\u043e \u0442\u0430\u043a\u043e\u0439, \u043a\u0430\u043a\u043e\u0439 \u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a VPAID, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u043f\u043e \u0437\u0430\u0432\u0435\u0442\u0430\u043c \u0440\u0435\u043a\u043b\u0430\u043c\u043e\u0434\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u041d\u0430\u0448\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u2014 VPAID \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u0438 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438\u00a0<\/p>\n<pre><code class=\"typescript\">\u00a0\u00a0\/\/ for local adContainer \u00a0\u00a0this.adsLoader \u00a0\u00a0\u00a0.getSettings() \u00a0\u00a0\u00a0.setVpaidMode(window.google.ima.ImaSdkSettings.VpaidMode.INSECURE)    \/\/ global for all project   this.ima.settings.setVpaidMode(     window.google.ima.ImaSdkSettings.VpaidMode.INSECURE   )<\/code><\/pre>\n<p>\u0423\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u043a \u0432\u0430\u043c \u043f\u0440\u0438\u0448\u0435\u043b VPAID, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0438 <code>LOADED<\/code><\/p>\n<pre><code class=\"typescript\">case window.google.ima.AdEvent.Type.LOADED:    this.isVPAID = adEvent.getAdData().apiFramework === 'VPAID'    break<\/code><\/pre>\n<p>\u0420\u0430\u0431\u043e\u0442\u0430 VPAID \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0438\u0432\u0435\u043d\u0442\u043e\u0432 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u2014 \u043e\u043d\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u044b \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/iabtechlab.com\/standards\/video-player-ad-interface-definition-vpaid\/\">\u0442\u0443\u0442<\/a>.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u044f \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u00ab\u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439\u00bb \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u043f\u0440\u043e \u0440\u0435\u043a\u043b\u0430\u043c\u0443. \u041d\u043e \u0435\u0449\u0435 \u043f\u0430\u0440\u043e\u0447\u043a\u0430 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0432\u0430\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u044b:<\/p>\n<ul>\n<li>\n<p>\u0430\u0432\u0442\u043e\u043f\u043b\u0435\u0439<\/p>\n<\/li>\n<\/ul>\n<p>VAST \u2014 \u044d\u0442\u043e \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b, \u0438 \u043a\u0430\u043a \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043c\u0435\u0434\u0438\u0430\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445, \u043d\u0430 \u043d\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0432\u0438\u0434\u0435\u043e \u0438\u0433\u0440\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0442\u043e \u0440\u0435\u043a\u043b\u0430\u043c\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0441\u043e \u0437\u0432\u0443\u043a\u043e\u043c. \u0410\u0432\u0442\u043e\u043f\u043b\u0435\u0438\u0442\u044c \u0436\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u0431\u0435\u0437 \u0437\u0432\u0443\u043a\u0430, \u0438\u043d\u0430\u0447\u0435 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445 \u043e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438\u0441\u044c. \u0421 VAST \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c\u00a0<\/p>\n<p><code>adsManager.setVolume(0)<\/code><\/p>\n<p>\u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f <code>adsManager<\/code><\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 VPAID, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0432 \u0435\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u0442\u043e\u0436\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0432\u0443\u043a\u0430. \u0412 \u0442\u0430\u043a\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c\u0441\u044f \u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043b\u044f\u043c\u0438 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c VPAID \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0431\u0435\u0437 \u0437\u0432\u0443\u043a\u0430, \u0435\u0441\u043b\u0438 \u0432 \u0438\u0445 \u0430\u0434\u043c\u0438\u043d\u043a\u0430\u0445 \u0442\u0430\u043a\u043e\u0435 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e.<\/p>\n<ul>\n<li>\n<p>\u0444\u0443\u043b\u0441\u043a\u0440\u0438\u043d<\/p>\n<\/li>\n<\/ul>\n<p>\u041c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u043b\u0435\u0435\u0440\u043e\u043c \u2014 \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a video.js \u0438\u043b\u0438 plyr. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c IMA SDK, \u0442\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c fullscreen \u043d\u0443\u0436\u043d\u043e \u043d\u0430 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435 <code>videoElement<\/code> \u0438 <code>adContainer<\/code>.<\/p>\n<ul>\n<li>\n<p>\u043f\u0435\u0440\u0435\u043c\u043e\u0442\u043a\u0430<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u043c\u043e\u0442\u043a\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0432\u0438\u0434\u0435\u043e IMA \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a, \u0435\u0441\u043b\u0438 \u043e\u043d \u043f\u043e\u043f\u0430\u043b \u0432 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043f\u0435\u0440\u0435\u043c\u043e\u0442\u043a\u0438, \u043d\u043e \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0434\u043d\u043e\u0433\u043e.<\/p>\n<ul>\n<li>\n<p>\u043f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 VAST<\/p>\n<\/li>\n<\/ul>\n<p>IMA \u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0432\u0430\u0441\u0442\u044b \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043b\u043e\u043a\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u043f\u043b\u0435\u0435\u0440\u0430.<\/p>\n<p>\u041d\u0430 \u044d\u0442\u043e\u043c \u0442\u043e\u0447\u043d\u043e \u0432\u0441\u0435, \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043d\u043e\u0432\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c AdBlock! \u0421\u043f\u0430\u0441\u0438\u0431\u043e, \u0447\u0442\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e \u0438, \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u0441\u043e \u043c\u043d\u043e\u0439 \u0432\u0430\u043c \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e!<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><\/p>\n<div class=\"tm-article-poll-container\"><!--[--><\/p>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/companies\/doubletapp\/articles\/753450\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u0410 \u0432\u0430\u043c \u0443\u0436\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0440\u0435\u043a\u043b\u0430\u043c\u043e\u0439 VAST, VPAID?<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">18.18% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0435 \u0441\u043b\u044b\u0448\u0430\u043b, \u0437\u0430\u0448\u0435\u043b \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a<\/span><span class=\"tm-article-poll__answer-votes\">4<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 18.18%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">13.64% <\/span><span class=\"tm-article-poll__answer-label\">\u0412\u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u043b\u044b\u0448\u0443, \u043d\u043e \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a \u043f\u0440\u043e\u0441\u0438\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c<\/span><span class=\"tm-article-poll__answer-votes\">3<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 13.64%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">9.09% <\/span><span class=\"tm-article-poll__answer-label\">\u0420\u0430\u0431\u043e\u0442\u0430\u043b \u0441 VAST \u0438 VPAID, \u043d\u043e \u043d\u0435 \u0449\u0443\u043f\u0430\u043b VMAP<\/span><span class=\"tm-article-poll__answer-votes\">2<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 9.09%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">18.18% <\/span><span class=\"tm-article-poll__answer-label\">\u0412\u0441\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u043e, \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0440\u0435\u043f\u0443<\/span><span class=\"tm-article-poll__answer-votes\">4<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 18.18%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">40.91% <\/span><span class=\"tm-article-poll__answer-label\">\u0425\u043e\u0447\u0443 \u0440\u0430\u0437\u0432\u0438\u0434\u0435\u0442\u044c VAST \u0438 VPAID<\/span><span class=\"tm-article-poll__answer-votes\">9<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 40.91%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 22 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.    \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 4 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/div>\n<p><!--]--><\/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=\"https:\/\/habr.com\/ru\/articles\/753450\/\"> https:\/\/habr.com\/ru\/articles\/753450\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u0414\u043e\u0431\u0440\u043e\u0433\u043e \u0432\u0430\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0441\u0443\u0442\u043e\u043a! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0412\u0430\u043b\u0435\u0440\u0438\u044f, \u044f \u0444\u0440\u043e\u043d\u0442\u0435\u043d\u0434-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0438\u0437 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 <a href=\"https:\/\/doubletapp.ai\/en\/?utm_source=habr&amp;utm_medium=organic&amp;utm_campaign=video_player\">Doubletapp<\/a>. \u0413\u043e\u0434 \u0441\u0432\u043e\u0435\u0439 \u0436\u0438\u0437\u043d\u0438 \u043e\u0442\u0434\u0430\u043b\u0430 \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0432\u0438\u0434\u0435\u043e\u043f\u043b\u0435\u0435\u0440\u0430 \u0441 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f\u043c\u0438. \u041d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 \u0431\u044b\u043b\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043f\u0435\u043a\u0430, \u0434\u043e\u043a\u0430, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 \u0425\u0430\u0431\u0440\u0435, \u043f\u043e\u044f\u0441\u043d\u044f\u044e\u0449\u0430\u044f \u0437\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u0443, \u0438 \u043e\u0433\u0440\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430 \u043d\u0430\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u043e\u043d\u0443\u044e \u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u043f\u043b\u0435\u0435\u0440. \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u0438 \u0432\u0430\u0441 \u043f\u043e\u0431\u043b\u0438\u0436\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c \u0441 \u0440\u0435\u043a\u043b\u0430\u043c\u043e\u0439.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0442\u0435\u043c, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0435 \u0440\u0430\u0431\u043e\u0442\u044b VAST \u0438 VPAID, \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u043e\u0439, \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0431\u043b\u043e\u043a\u043e\u043c \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 (<strong>out-stream<\/strong>) \u0438\u043b\u0438 \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e\u0440\u043e\u043b\u0438\u043a \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u043c\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f\u043c\u0438 (<strong>in-stream<\/strong>).<\/p>\n<p><a class=\"anchor\" name=\"2\" id=\"2\"><\/a><\/p>\n<h3>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439, \u0438\u043b\u0438 \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0438\u043d\u0433\u0440\u0435\u0434\u0438\u0435\u043d\u0442\u044b<\/h3>\n<p>Video Ad Serving Template \u0438\u043b\u0438 VAST \u2014 \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u044b\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u043b\u044f \u043e\u0431\u043c\u0435\u043d\u0430 \u0432\u0438\u0434\u0435\u043e\u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438. \u041f\u043e \u0444\u0430\u043a\u0442\u0443 \u2014 \u0444\u0430\u0439\u043b\u0438\u043a \u0444\u043e\u0440\u043c\u0430\u0442\u0430 xml. \u041e\u043d \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/iabtechlab.com\/standards\/vast\/\">\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/a>, \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Interactive Advertising Bureau (IAB).<\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e VAST \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0432 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435, \u0441\u043e\u0431\u0438\u0440\u0430\u044e\u0442 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0443 \u043f\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430\u043c, \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430\u043c \u0438 \u0434\u0440\u0443\u0433\u0438\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f\u043c \u0437\u0440\u0438\u0442\u0435\u043b\u0435\u0439; \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u0443\u044e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0443, \u043c\u0435\u0441\u0442\u0443 \u0436\u0438\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u0438 \u0443\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u0443\u044e \u043a\u0430\u043c\u043f\u0430\u043d\u0438\u044e.\u00a0<\/p>\n<p>\u041d\u0430\u0441 \u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u0430. \u0427\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c VAST, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u0438\u0434\u0435\u043e\u043f\u043b\u0435\u0435\u0440\u0430 \u0438 \u043f\u0430\u0440\u0441\u0435\u0440\u0430 \u0434\u043b\u044f xml. \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u2014 \u043a\u043e\u043d\u0446\u0435\u043d\u0442\u0440\u0430\u0442 \u0440\u0435\u043a\u043b\u0430\u043c\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 hls-\u043f\u043b\u0435\u0435\u0440\u0430 \u0438\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 MSE \u2014 \u043c\u044b \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 &lt;video> \u0442\u0435\u0433. \u0410 \u0432\u043e\u0442 \u0432 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u043c\u044b \u043f\u043e\u0439\u0434\u0435\u043c \u043f\u043e \u0445\u0430\u0440\u0434\u043a\u043e\u0440\u0443. Google IMA SDK, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0434\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0435\u043a\u043b\u0430\u043c\u043e\u0439 \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.\u00a0<\/p>\n<p>\u0427\u0438\u0441\u0442\u043e \u0434\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0438: \u0435\u0441\u0442\u044c \u0443\u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043f\u043b\u0435\u0435\u0440\u044b \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0440\u0435\u043a\u043b\u0430\u043c\u044b (\u043f\u043b\u0430\u0442\u043d\u044b\u0435 \u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0435) \u2014 Video.js, JW Player, plyr \u0438 \u0442. \u043f. \u0415\u0441\u043b\u0438 \u043f\u043e\u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f, \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0443 \u043d\u0438\u0445 \u0442\u043e\u0442 \u0436\u0435 Google IMA SDK, \u043d\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u0430\u044e\u0442 \u043a \u043d\u0435\u043c\u0443 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0438 \u0441\u0432\u043e\u0439 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441. \u0415\u0441\u0442\u044c \u0435\u0449\u0435 Video Ads SDK \u043e\u0442 \u042f\u043d\u0434\u0435\u043a\u0441\u0430, \u043d\u043e, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0442\u043d\u0435\u0440\u0430\u043c\u0438.<\/p>\n<p>\u041f\u043e\u0434\u044b\u0442\u043e\u0436\u0438\u043c, IMA SDK \u0434\u0430\u0441\u0442 \u043d\u0430\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0433\u0438\u0431\u043a\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c VAST&#8217;\u0430\u043c\u0438, \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0441\u0430\u0439\u0434-\u044d\u0444\u0444\u0435\u043a\u0442\u044b \u0438 \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043c\u0435\u043d\u044f\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u0434 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430.\u00a0<\/p>\n<p><a class=\"anchor\" name=\"3\" id=\"3\"><\/a><\/p>\n<h3>\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e VAST<\/h3>\n<p><em>\u042d\u0442\u043e\u0442 \u0431\u043b\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u0432\u044b \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0441 \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442\u043e\u043c VAST-\u0444\u0430\u0439\u043b\u043e\u0432, \u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a <\/em><a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#1\"><em>\u0440\u0430\u0437\u0434\u0435\u043b\u0443 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439<\/em><\/a><em>.<\/em><\/p>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0438\u0439 VAST \u0438\u043c\u0435\u0435\u0442 <a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#18\">\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443<\/a>. \u0415\u0435 \u043d\u0438 \u0441 \u0447\u0435\u043c \u043d\u0435 \u0441\u043f\u0443\u0442\u0430\u0442\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0435\u043b\u043e \u043e\u0431\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0443\u0437\u0435\u043b <code>&lt;VAST><\/code>. \u0412 \u043d\u0435\u043c \u043c\u043e\u0433\u0443\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0443\u0437\u043b\u044b <code>AD<\/code> \u0438\u043b\u0438 \u0443\u0437\u0435\u043b <code>ERROR<\/code>, \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0432\u0435\u0440\u043d\u0443\u043b \u0440\u0435\u043a\u043b\u0430\u043c\u0443.<\/p>\n<p>\u0412 \u0443\u0437\u043b\u0435 VAST \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442\u0430, \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u2014 4.3. \u041f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u043b\u0435\u0435\u0440\u0430 \u044f \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0430 \u0432\u0430\u0441\u0442\u044b 3.0 \u0438 2.0 \u0432\u0435\u0440\u0441\u0438\u0439. \u041f\u0443\u0441\u0442\u044c \u044d\u0442\u043e \u0432\u0430\u0441 \u043d\u0435 \u0441\u043c\u0443\u0449\u0430\u0435\u0442, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f.<\/p>\n<p>\u0423\u0437\u043b\u043e\u0432 <code>AD<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 VAST \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 3.0 \u0432\u0435\u0440\u0441\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e. \u041e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 <code>sequence<\/code>. \u0415\u0441\u043b\u0438 \u0440\u0435\u043a\u043b\u0430\u043c\u0430 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0443\u0437\u043b\u0435 <code>AD<\/code> \u0443\u043f\u0430\u043b\u0430 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<pre><code class=\"xml\">&lt;VAST version=\u201d3.0\u201d> &lt;AD id=\u201djDGmdD\u201d sequence=\u201d1\u201d> \u2026 &lt;\/AD> &lt;AD id=\u201dhrYhfK\u201d sequence=\u201d2\u201d> \u2026 &lt;\/AD> \u2026 &lt;AD id=\u201dhrYhfK\u201d sequence=\u201d14\u201d> \u2026 &lt;\/AD> &lt;\/VAST><\/code><\/pre>\n<p>\u0412\u043d\u0443\u0442\u0440\u0438 AD \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c:<\/p>\n<ol>\n<li>\n<p>\u0421\u0430\u043c\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u0430 \u2014 <a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#18\">\u0443\u0437\u0435\u043b InLine<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0435 \u0432 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u044b \u2014 <a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#19\">\u0443\u0437\u0435\u043b Wrapper<\/a>.<\/p>\n<\/li>\n<\/ol>\n<p><a class=\"anchor\" name=\"18\" id=\"18\"><\/a><\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u0443\u0437\u043b\u043e\u043c InLine.<\/p>\n<pre><code class=\"xml\">&lt;VAST version=\"3.0\">   &lt;Ad id=\"1234567\">     &lt;InLine>     &lt;AdSystem>Your Ad System&lt;\/AdSystem>     &lt;AdTitle>Name of your VAST&lt;\/AdTitle>     &lt;Description>Linear Video Ad&lt;\/Description>     &lt;Error>https:\/\/www.example.com\/error&lt;\/Error>     &lt;Impression>https:\/\/www.example.com\/impression&lt;\/Impression>       &lt;Creatives>         &lt;Creative sequence=\"1\">           &lt;Linear skipoffset=\u201d00:00:05\u201d>           &lt;Duration>00:01:55&lt;\/Duration>             &lt;TrackingEvents>               &lt;Tracking event=\"start\">https:\/\/www.example.com\/start&lt;\/Tracking>               &lt;Tracking event=\"firstQuartile\">https:\/\/www.example.com\/firstQuartile&lt;\/Tracking>               &lt;Tracking event=\"midpoint\">https:\/\/www.example.com\/midpoint&lt;\/Tracking>               &lt;Tracking event=\"thirdQuartile\">https:\/\/www.example.com\/thirdQuartile&lt;\/Tracking>               &lt;Tracking event=\"complete\">https:\/\/www.example.com\/complete&lt;\/Tracking>               &lt;Tracking event=\"mute\">https:\/\/www.example.com\/mute&lt;\/Tracking>               &lt;Tracking event=\"unmute\">https:\/\/www.example.com\/unmute&lt;\/Tracking>               &lt;Tracking event=\"rewind\">https:\/\/www.example.com\/rewind&lt;\/Tracking>               &lt;Tracking event=\"pause\">https:\/\/www.example.com\/pause&lt;\/Tracking>               &lt;Tracking event=\"resume\">https:\/\/www.example.com\/resume&lt;\/Tracking>               &lt;Tracking event=\"fullscreen\">https:\/\/www.example.com\/fullscreen&lt;\/Tracking>             &lt;\/TrackingEvents>             &lt;VideoClicks>               &lt;ClickThrough id=\"123\">https:\/\/google.com&lt;\/ClickThrough>               &lt;ClickTracking id=\"123\">https:\/\/www.example.com\/click&lt;\/ClickTracking>             &lt;\/VideoClicks>             &lt;MediaFiles>               &lt;MediaFile delivery=\"progressive\" type=\"video\/mp4\"> https:\/\/example.com\/example.mp4 &lt;\/MediaFile>             &lt;\/MediaFiles>           &lt;\/Linear>         &lt;\/Creative>       &lt;\/Creatives>     &lt;\/InLine>   &lt;\/Ad> &lt;\/VAST> <\/code><\/pre>\n<p><em>*\u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430. \u041c\u044b \u043d\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u043c, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 VAST \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b<\/em><\/p>\n<p><code>AdSystem<\/code> \u2014 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0440\u0435\u043a\u043b\u0430\u043c\u0443<br \/><code>AdTitle, Description<\/code> \u2014 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0435\u043a\u043b\u0430\u043c\u044b<br \/><code>Error<\/code> \u2014 <em>url<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u043e\u0432\u0435\u0442\u0441\u044f \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0448\u0438\u0431\u043a\u0438<br \/><code>Impression<\/code> \u2014 <em>url<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0437\u043e\u0432\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u043a\u0430\u0437\u0430 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0444\u0440\u0435\u0439\u043c\u0430 \u043a\u0440\u0435\u0430\u0442\u0438\u0432\u0430<br \/><code>Creatives<\/code> \u2014 \u043d\u0430\u0431\u043e\u0440 \u043a\u0440\u0435\u0430\u0442\u0438\u0432\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u043a\u0430\u0437\u0430. \u041e\u0434\u0438\u043d \u043a\u0440\u0435\u0430\u0442\u0438\u0432 = \u043e\u0434\u0438\u043d \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f.<br \/><code>Creative<\/code> \u2014 \u043a\u0440\u0435\u0430\u0442\u0438\u0432 \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <em>sequence<\/em> \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u0443\u0437\u043b\u043e\u043c <code>AD<\/code>. \u0418\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0441\u0438\u0442 \u043d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c <code>Creative<\/code> <em>sequence<\/em> \u0441 <code>Ad<\/code> <em>sequence.<\/em> \u0422\u0430\u043a \u043a\u0430\u043a \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 <em>sequence \u2014 <\/em>\u044d\u0442\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043d\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u044f.<br \/><code>Linear<\/code> \u2014 \u0442\u0438\u043f \u0440\u0435\u043a\u043b\u0430\u043c\u044b. \u041c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 <em>skipoffset<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0434\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0440\u0435\u043a\u043b\u0430\u043c\u0443.<\/p>\n<p>\u0412\u0441\u0435\u0433\u043e IAB \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0440\u0438 \u0432\u0438\u0434\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u044b <strong>Linear<\/strong>, <strong>NonLinearAds<\/strong> \u0438 <strong>CompanionAds<\/strong>. \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u044c, \u0432 \u0447\u0435\u043c \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c Linear \u0442\u0438\u043f \u0440\u0435\u043a\u043b\u0430\u043c\u044b:<\/p>\n<p><code>Duration<\/code> \u2014 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u043a\u043b\u0430\u043c\u044b<br \/><code>TrackingEvents<\/code><strong> <\/strong>\u2014 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f <code>Tracking<\/code><strong><br \/><\/strong><code>Tracking<\/code> \u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <em>url<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u0432 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0435 <em>event<\/em><br \/><code>VideoClicks<\/code> \u2014 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0443\u0437\u043b\u044b <code>ClickThrough<\/code><strong>, <\/strong><code>ClickTracking<\/code><strong> <\/strong>\u0438<strong> <\/strong><code>CustomClick<\/code>. \u0412 \u043d\u0435\u043c \u0437\u0430\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u043d\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a<br \/><code>ClickThrough<\/code> \u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0441\u044b\u043b\u043a\u0443, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043f\u0440\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438 \u0441 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u043c \u0431\u043b\u043e\u043a\u043e\u043c (\u043b\u0435\u043d\u0434\u0438\u043d\u0433, \u0441\u0430\u0439\u0442)<br \/><code>ClickTracking<\/code> \u2014 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u043a\u043b\u0438\u043a\u043e\u0432, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432 \u0443\u0437\u043b\u0435 <code>VideoClicks<\/code> (\u043f\u0435\u0440\u0435\u0445\u043e\u0434\u044b \u043d\u0430 \u0441\u0430\u0439\u0442 \u0438\u043b\u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u043a\u043b\u0438\u043a\u0438)<br \/><code>MediaFiles<\/code> \u2014 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f <code>MediaFile<\/code><strong><br \/><\/strong><code>MediaFile<\/code> \u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0440\u0435\u043a\u043b\u0430\u043c\u0443. \u0418\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0432 \u0440\u0430\u0437\u043d\u043e\u043c \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435, \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 <em>width<\/em> \u0438 <em>height<\/em>. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445. \u0410\u0442\u0440\u0438\u0431\u0443\u0442 <em>delivery<\/em> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0434\u043b\u044f \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u2014 <em>streaming<\/em> \u0438\u043b\u0438 <em>progressive.<\/em><\/p>\n<p><a class=\"anchor\" name=\"19\" id=\"19\"><\/a><\/p>\n<p>\u0420\u0430\u043d\u0435\u0435 \u044f \u043e\u0442\u043c\u0435\u0447\u0430\u043b\u0430, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438, \u043e\u0431\u0435\u0440\u043d\u0443\u0442\u044b\u0435 \u0432\u043e <code>Wrapper<\/code>. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 VAST \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u043e\u0436\u0435 \u043e\u0431\u0432\u0435\u0448\u0430\u043b \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438 \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u043f\u043e\u043a\u0430\u0437\u043e\u0432. \u0412 \u044d\u0442\u043e\u0439 \u043e\u0431\u0435\u0440\u0442\u043a\u0435 \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u0439 VAST \u043b\u0435\u0436\u0438\u0442 \u0432 \u0443\u0437\u043b\u0435 <code>VASTAdTagURI<\/code>. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0439\u0442\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u0432 \u043d\u0435\u043c, \u0442\u043e \u0432\u044b \u0443\u0432\u0438\u0434\u0438\u0442\u0435 \u0442\u043e\u0442 \u0436\u0435 InLine xml-\u0444\u0430\u0439\u043b, \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u043d\u0430 <a href=\"https:\/\/habr.com\/ru\/companies\/doubletapp\/articles\/753450\/#18\">\u043f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0448\u0435<\/a>.<\/p>\n<pre><code class=\"xml\">&lt;VAST xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"vast.xsd\" version=\"3.0\">   &lt;Ad id=\"5368884870\">     &lt;Wrapper>     &lt;AdSystem>GDFP&lt;\/AdSystem>     &lt;VASTAdTagURI>       &lt;![CDATA[ https:\/\/lerok007.ams3.digitaloceanspaces.com\/vast%20(1).xml ]]&gt;     &lt;\/VASTAdTagURI>     &lt;Error>https:\/\/www.example.com\/error&lt;\/Error>     &lt;Impression>https:\/\/www.example.com\/impression&lt;\/Impression>       &lt;Creatives>         &lt;Creative id=\"138311401271\" sequence=\"1\">           &lt;Linear>             &lt;TrackingEvents>             \u2026             &lt;\/TrackingEvents>             &lt;VideoClicks>             \u2026             &lt;\/VideoClicks>           &lt;\/Linear>         &lt;\/Creative>       &lt;\/Creatives>       &lt;Extensions>         &lt;Extension type=\"geo\">           &lt;Country>RU&lt;\/Country>         &lt;\/Extension>       &lt;\/Extensions>     &lt;\/Wrapper>   &lt;\/Ad> &lt;\/VAST> <\/code><\/pre>\n<p><em>*\u044d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430, \u0432\u0437\u044f\u0442\u044b\u0439 \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f IAB <\/em><a href=\"https:\/\/github.com\/InteractiveAdvertisingBureau\/VAST_Samples\"><u>https:\/\/github.com\/InteractiveAdvertisingBureau\/VAST_Samples<\/u><\/a><em>. \u0412\u043d\u0443\u0442\u0440\u0438 VAST \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b.<\/em><\/p>\n<p>\u0412 \u0446\u0435\u043b\u043e\u043c \u044d\u0442\u0438\u0445 \u0437\u043d\u0430\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u0432\u0430\u0448\u0430 \u0434\u0443\u0448\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439, \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 <a href=\"https:\/\/iabtechlab.com\/standards\/vast\/\">\u043d\u0430 \u0441\u0430\u0439\u0442\u0435 IAB<\/a> \u0438\u043b\u0438 \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f <a href=\"https:\/\/habr.com\/ru\/post\/499164\/\">\u0441 \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435\u0439 \u043d\u0430 \u0425\u0430\u0431\u0440\u0435<\/a>.\u00a0<\/p>\n<p><a class=\"anchor\" name=\"1\" id=\"1\"><\/a><\/p>\n<h3>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 (out-stream)<\/h3>\n<p>\u0412\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u044f \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0430 \u0432 \u044d\u0442\u043e\u043c <a href=\"https:\/\/github.com\/doubletapp\/vast-examples\">\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438<\/a>. \u0412 \u043d\u0435\u043c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \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\u0438\u043c\u0435\u0440\u043e\u0432, \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u043a\u043e\u0434\u043e\u043c. \u0413\u043e\u0442\u043e\u0432\u044c\u0442\u0435 \u043f\u043e\u043f\u043a\u043e\u0440\u043d \u0438 <strong>\u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c AdBlock!<\/strong>)<\/p>\n<p>\u041f\u0440\u043e\u0448\u0443 \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 <a href=\"https:\/\/github.com\/doubletapp\/vast-examples\/tree\/main\/src\/simpleExampleVast\"><em>simpleExampleVast<\/em><\/a>. \u042f \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0442\u044c \u0432 \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u0432\u0438\u0434\u0435\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0438 \u043d\u0435 \u0442\u0435\u0440\u044f\u0442\u044c\u0441\u044f \u0432 \u0447\u0430\u0441\u0442\u044f\u0445 \u043a\u043e\u0434\u0430. \u0410 \u0435\u0449\u0435 \u044d\u0442\u043e \u043c\u043e\u0433 \u0431\u044b \u0431\u044b\u0442\u044c \u043d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u0432\u043e\u0440\u043a\u0448\u043e\u043f)<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0431\u0430\u0437\u043e\u0432\u044b\u0439 index.html \u0438 \u0441\u0442\u0438\u043b\u0438 \u0434\u043b\u044f \u043d\u0435\u0433\u043e. IMA \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0443\u0440\u043e\u0432\u043d\u0435 \u0432\u0438\u0434\u0435\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u0440\u0435\u043a\u043b\u0430\u043c\u044b. VAST-\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u044b\u0445 \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0439 \u0432\u0438\u0434\u0435\u043e\u043f\u043b\u0435\u0435\u0440\u0430\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u0442\u044c \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u043c\u044b \u0431\u0443\u0434\u0435\u043c, \u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0442\u0435\u0433\u0430 <code>&lt;video><\/code>. <code>adContainer<\/code> \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u043c \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043e\u043c \u0438 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0438\u043c \u0432\u0435\u0441\u044c \u0431\u043b\u043e\u043a \u0432\u0438\u0434\u0435\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430.<\/p>\n<pre><code class=\"css\">\/* .\/src\/simpleExampleVast\/index.html **\/ &lt;div id=\"videoContainer\"> \u00a0\u00a0\u00a0\u00a0&lt;video id=\"videoElement\">&lt;\/video> \u00a0\u00a0\u00a0\u00a0&lt;div id=\"adContainer\">&lt;\/div> &lt;\/div><\/code><\/pre>\n<pre><code class=\"css\">\/* .\/src\/simpleExampleVast\/styles.html **\/ #videoContainer { \u00a0position: relative; \u00a0width: 800px; \u00a0height: 450px; \u00a0background-color: black; }  #videoElement { \u00a0width: 100%; \u00a0height: 100%; }  #adContainer { \u00a0position: absolute; \u00a0top: 0; \u00a0left: 0; \u00a0width: 100%; \u00a0height: 100%; }<\/code><\/pre>\n<p><a class=\"anchor\" name=\"4\" id=\"4\"><\/a><\/p>\n<h4>\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c IMA SDK<\/h4>\n<p>\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u044f \u0437\u0430\u043c\u043e\u0440\u043e\u0447\u0438\u043b\u0430\u0441\u044c \u0438 \u0437\u0430\u0445\u043e\u0441\u0442\u0438\u043b\u0430 \u0434\u043b\u044f \u0432\u0430\u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 VAST <a href=\"https:\/\/lerok007.ams3.digitaloceanspaces.com\/vast%20(1).xml\">\u043f\u043e \u044d\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0435<\/a>. \u041c\u043e\u0436\u0435\u0442\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u0432\u044b\u0448\u0435. \u0412 \u043d\u0435\u043c \u043d\u0435\u0442 \u0442\u0440\u0435\u043a\u0438\u043d\u0433\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043d\u043e \u0434\u043b\u044f \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0438 \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e.<\/p>\n<p>\u0418\u0437 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e IMA SDK (\u0432\u043e\u0442 <a href=\"https:\/\/developers.google.com\/interactive-media-ads\/docs\/sdks\/html5\/client-side?hl=en\">\u0434\u043e\u043a\u0430<\/a>).\u00a0<\/p>\n<p>IMA SDK \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e <\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-351677","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/351677","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=351677"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/351677\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=351677"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=351677"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=351677"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}