HTML5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╡реАрдбрд┐рдпреЛ рд╕рд╛рдордЧреНрд░реА рдХреА рдореЗрдЬрдмрд╛рдиреА

рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╣реБрдд рдкрд╣рд▓реЗ W3C рдХреА рдПрдХ рдирдИ рдкрд╣рд▓ рд╣рдм - рдПрдирдХреНрд░рд┐рдкреНрдЯреЗрдб рдореАрдбрд┐рдпрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреНрд╕ рдпрд╛ рд╕рд┐рд░реНрдл EME рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереАред рдЖрдЗрдП рд╣рдо рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреНрдпрд╛ рдирдпрд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред

рддреЛ, рдХрд╛рд░реНрдп: рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рджрд┐рд▓рдЪрд╕реНрдк рд╡реАрдбрд┐рдпреЛ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рднреА рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рдЕрдЪреНрдЫреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП (рджреЛрд╕реНрддреЛрдВ, рдкрд░рд┐рдЪрд┐рддреЛрдВ рдХреЗ рд▓рд┐рдП ... рдпрд╛ рд╕рд┐рд░реНрдл рдкреИрд╕реЗ рдХреЗ рд▓рд┐рдП)ред рддреЛ, рдПрдирдХреНрд░рд┐рдкреНрдЯреЗрдб рдореАрдбрд┐рдпрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреНрд╕ рдкрд╣рд▓ рдХреЗрд╡рд▓ HTML рдорд╛рдирдХ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдПрдкреАрдЖрдИ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрдмреНрд▓реНрдпреВ 3 рд╕реА рдкреНрд░рд╕реНрддрд╛рд╡ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдХреЛ рднреА рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдмреАрдорд╛рд░ рдбреАрдЖрд░рдПрдо, рд▓реЗрдХрд┐рди рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рд╕реНрдердЧрд┐рдд рдХрд░ рджреЗрдВрдЧреЗ, рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╕реЗрд╡рд╛ рд╕рдВрдЧрдарди рдХреЗ рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реБрдПред рдПрдХ рд╢рд░реНрдд рдпрд╣ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдИрдПрдордИ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдореВрд▓ рд╕реНрдкрд╖реНрдЯ рдХреБрдВрдЬреА рдкреНрд░рдгрд╛рд▓реА рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИред

рддреЛ, рдПрдХ video рдЯреИрдЧ рдФрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ foo.webm , рдЬрд┐рд╕рдореЗрдВ рдПрдИрдПрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реАрдбрд┐рдпреЛ рдФрд░ рдСрдбрд┐рдпреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ (рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╡реЗрдмрдПрдо рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдФрд░ рдИрдПрдордИ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдЗрд╕рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рдпрд╛ рд╣реИ):

 <video src="foo.webm" autoplay></video> 


рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, EME рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдЬрдм foo.webm рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ foo.webm рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЧрдИ рд╣реИ, рд░реБрдХ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреБрдВрдЬреА рджреА рдЬрд╛рддреА рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреИрд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕реАрдзреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ; рд╣рдо рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ HTMLMediaElement рддрддреНрд╡ рдкрд░ рднреА рдиреАрдбрд┐рдВрдХ рдИрд╡реЗрдВрдЯ рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрд╕реЗ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЕрдВрддрддрдГ, рдХреБрдВрдЬреА рдкреНрд░рджрд╛рди рдХрд░реЗрдВ:

 <video src="foo.webm" autoplay onneedkey="handleKeyNeeded(event)"></video> 


handleKeyNeeded() рдлрд╝рдВрдХреНрд╢рди рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдпрд╣ рдЙрд╕ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдлрд┐рд░ рд╕рд░реНрд╡рд░ рдХреЛ XHR рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрддреНрддрд░ = рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдХреБрдВрдЬреА рд╡рд╛рдкрд╕ рджреЗрддрд╛ рд╣реИ (рдпрд╛ рдпрджрд┐ рд╕реНрдерд┐рддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рджреЗрддрд╛ - рдпрд╣ рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХ рд╣реИ)ред рд╣рдо рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рдХрд░реЗрдВрдЧреЗ - рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдВрдЬреА рд╣реИ; рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХреНрд▓рд┐рдпрд░ рдХреА + AES рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ 16-рдмрд╛рдЗрдЯ Uint8Array ; рддрдм рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 function handleKeyNeeded(event) { var video = event.target; var initData = event.initData; //var message = initData; //var xmlhttp = new XMLHttpRequest(); //xmlhttp.open("POST", "http://.../getkey", false); //xmlhttp.send(message); //var key = new Uint8Array(xmlhttp.response); var key = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); if (!video.keys) video.keys = video.MediaKeys("org.w3.clearkey"); if (!video.keys) throw "Could not create MediaKeys"; var keySession = video.keys.createSession(mimeType, initData); if (!keySession) throw "Could not create key session"; keySession.update(key); } 


рдпрд╣рд╛рдБ рдореБрдЦреНрдп рдкрд╛рддреНрд░:



рдЬреЛ рд▓реЛрдЧ рд╣реИрдВрдбрд▓ рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ () рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб (MediaKeys, MediaKeySession рдХреНрд▓рд╛рд╕реЗрд╕, рдЖрджрд┐) рднрд╡рд┐рд╖реНрдп рдХреА рдИрдПрдордИ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рддрд╛рдЬрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХреИрдЯрдмреЛ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ EME рд╕рдорд░реНрдерди (рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг 2) рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдерд╛, рддреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб_рдореАрдбрд┐рдпрд╛_рдкреНрд▓реЗрдпрд░_ bear-320x240-av-enc_av.webm рдкреГрд╖реНрда рдкрд░, рд╣рдо рдПрдХ рдХрд╛рд▓реЗ рднрд╛рд▓реВ рдХреЛ рдПрдХ рд╡реАрдбрд┐рдпреЛ рдкрд░ рдкрд┐рдВрдЬрд░реЗ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддреЗ рд╣реБрдП рдкрд╛рдПрдВрдЧреЗ ( bear-320x240-av-enc_av.webm рдирдореВрдирд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╡реАрдбрд┐рдпреЛ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдХреНрд░реЛрдорд┐рдпрдо рдХреЛрдб)ред рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рд╡рд╛рд▓рд╛ рдРрд╕рд╛ рдХреЛрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдкреГрд╖реНрда рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрднреА рднреА Google рдХреНрд░реЛрдо рдпрд╛ рдХреНрд░реЛрдорд┐рдпрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрд╕реНрдХрд░рдг 26 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднрд╛рд▓реВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдЬрдмрдХрд┐ рд╕рдорд░реНрдерди рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ): рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛_media_player.html ред

рдЕрдЧрд▓рд╛, рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╕реБрдзрд╛рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдереЗред рдкрд╣рд▓реЗ, рдХреНрд░реЛрдо / рдХреНрд░реЛрдорд┐рдпрдо рдЕрдм рднрд╡рд┐рд╖реНрдп рдХреЗ рдИрдПрдордИ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 1 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдИрдПрдордИ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕рдВрд╕реНрдХрд░рдг 2 рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдмрд╛рдж рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрдиреНрдореБрдЦ рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, Chrome / Chromium рдореЗрдВ, рдЕрднреА рддрдХ EME рдХрд╛ рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реА рд╢рд╛рдорд┐рд▓ рд╣реИ; рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЖрдкрдХреЛ webkit рдХреЛ рдЙрдкрд╕рд░реНрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ; рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, handleKeyNeeded() рдлрд╝рдВрдХреНрд╢рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛:

 function handleKeyNeeded(event) { ... var keySystem = "webkit-org.w3.clearkey"; video.webkitGenerateKeyRequest(keySystem, event.initData); //   video.webkitAddKey(keySystem, key, event.initData, null); } 


рджреВрд╕рд░реЗ, рдЕрдЧрд░ рдЕрдм рд╣рдо рд╕реАрдзреЗ video рдЯреИрдЧ рдХреЗ src рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо needkey рдЗрд╡реЗрдВрдЯ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реАрдбрд┐рдпреЛ ffmpeg рд╕реНрдЯреЙрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдЭрдВрдбреЗ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ (рдХреНрд░реЛрдо (рдХреНрд░реЛрдорд┐рдпрдо рдореЗрдВ рдореАрдбрд┐рдпрд╛ рд╕реНрдЯреИрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг рд╣реИрдВ)ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╡рд╣ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗрдЧрд╛ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИ ( needkey рдШрдЯрдирд╛ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реБрдП)ред рдЗрд╕ рдЕрдиреНрдп рд╡рд┐рдзрд┐ рдХреЛ рдореАрдбрд┐рдпрд╛ рд╕реНрд░реЛрдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ; рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рдмрд╛рдж рдХреЗ рдкреНрд▓реЗрдмреИрдХ рдХреЗ рд▓рд┐рдП рдореАрдбрд┐рдпрд╛ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗрдмрдо рдФрд░ mp4 рдЬреИрд╕реЗ рдбреЗрдореЛрдХреНрд╕рд░реЛрдВ рдХрд╛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, Google рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ; рдпрд╣ рд╡рд╣ рдерд╛ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдЬрд░реВрд░рдд рдкрдбрд╝реА рдШрдЯрдирд╛ рдХреЛ рдЙрддреНрддреЗрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдорд╛рд░реЗ video рдЯреИрдЧ рдХреЗ рд▓рд┐рдП рднрд╛рд▓реВ рд╡реАрдбрд┐рдпреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЙрдкрдпреБрдХреНрдд рдХреЛрдб рд╣реИ:

 function load() { var video = document.getElementById("video"); var mediaFile = "bear-320x240-av-enc_av.webm"; //video.src = mediaFile; var sourceOpened = false; function onSourceOpen(e) { if (sourceOpened) return; sourceOpened = true; var mediaType = 'video/webm; codecs="vorbis, vp8"'; var srcBuffer = mediaSource.addSourceBuffer(mediaType); var xhr = new XMLHttpRequest(); xhr.open('GET', mediaFile); xhr.responseType = 'arraybuffer'; xhr.addEventListener('load', function(e) { srcBuffer.append(new Uint8Array(e.target.response)); mediaSource.endOfStream(); }); xhr.send(); } var mediaSource = new WebKitMediaSource(); mediaSource.addEventListener('webkitsourceopen', onSourceOpen); video.src = window.URL.createObjectURL(mediaSource); ... } 


рдмреЗрд╢рдХ, рдпрд╣ рдХреЛрдб рд╕рд░рд▓ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдмрд╣реБрдореБрдЦреА рд╣реИред

 video.src = "bear-320x240-av-enc_av.webm"; 


; рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рднрд╡рд┐рд╖реНрдп рдХреЗ рдИрдПрдордИ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЯреНрд░рд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдпрд╣ рдХреЗрд╡рд▓ рд╕рдВрдЪрд╛рд▓рди рдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ)ред рд╣рдо рдЖрдЧреЗ рдХреЗ рдШрдЯрдирд╛рдХреНрд░рдо рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реИрдВред




рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдмрд╛рд╣рд░, рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рд╡реАрдбрд┐рдпреЛ рдХреЛ рдХреИрд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рдХрд╛рд░реНрдп рдХрдВрдЯреЗрдирд░-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, WebM рдореЗрдВ рдпрд╣ рдХреНрд╖рдорддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрдиреНрдп рдХрдВрдЯреЗрдирд░реЛрдВ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИред

рдИрдПрдордИ рд╡рд┐рд╖рдп рдкрд░ рд▓рд┐рдВрдХ:
Google, Microsoft рдФрд░ Netflix DRM5 рдХреЛ HTML5 рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдореАрдбрд┐рдпрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдЕрдиреБрд╡рд╛рдж / HTML5 рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдореАрдбрд┐рдпрд╛ рд╕рд╛рдордЧреНрд░реА

Source: https://habr.com/ru/post/In176115/


All Articles