рдорд╛рдЗрдХреНрд░реЛрдлреЛрди, рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдФрд░ рд╕реНрдерд╛рдиреАрдп рд╡реАрдбрд┐рдпреЛ: рдХреИрд╕реЗ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ Voximplant Web SDK рдореАрдбрд┐рдпрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ


рдЖрдЬ рдореИрдВ Voximplant Web SDK рдореЗрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдиреЗ рдкреБрд░рд╛рдиреЗ рдСрдбрд┐рдпреЛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, WebRTC рд╕реНрдЯреИрдХ рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдкреНрд░рдмрдВрдзрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рдХреНрдпреЛрдВ рдпрд╣ рд╕рдм рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд╢рд╛рдпрдж рд╣реА рдХрднреА, рдЕрдВрдд-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕ рдХрдИ рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рд╣реЛрддреЗ рд╣реИрдВред рдпрд╛ рдХрдИ рд╕реНрдкреАрдХрд░ рд╣реИрдВ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдзрд╛рд░рдг рд╕реНрдкреАрдХрд░ рдФрд░ рдмреНрд▓реВрдЯреВрде рд╣реЗрдбрдлрд╝реЛрди; рдпрд╛ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рдХреЗ рд▓рд┐рдП рдлреЛрди рд╕реНрдкреАрдХрд░ рдФрд░ рд╕реНрдкреАрдХрд░рдлреЛрдиред

рд▓реЗрдХрд┐рди рдЖрдзреБрдирд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рджреЛ рдХреИрдорд░реЗ рдмрд╣реБрдд рдЖрдо рд╣реИрдВред рдЧреЛрд▓рд┐рдпреЛрдВ рдФрд░ рдлреЛрди рдкрд░: рдирд┐рдпрдорд┐рдд рдФрд░ рд▓рд▓рд╛рдЯред рд▓реИрдкрдЯреЙрдк рдкрд░: рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдФрд░ рдмреЗрд╣рддрд░ рдмрд╛рд╣рд░реАред рд╡рдЧреИрд░рд╣ рд╡рдЧреИрд░рд╣ред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд╣реБрдд рдкрд░реЗрд╢рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЧрд▓рдд рд╕реЗрдЯ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд╣ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ WebRTC рдореЗрдВ рдкрд╣рд▓рд╛ рдореАрдбрд┐рдпрд╛ рдкреНрд░рдмрдВрдзрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИред

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



рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдбрд┐рд╡рд╛рдЗрд╕ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдореАрдбрд┐рдпрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рднреА рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдерд╛ред рдпрд╣рд╛рдБ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдСрдбрд┐рдпреЛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рдЕрдиреБрд░реЛрдз рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

const myConstraints = { audio:{ sampleSize: 16, channelCount: 2, noiseSuppression: true, echoCancellation: false }, video:{ width: { min: 640, ideal: 1920, max: 1920 }, height: { min: 400, ideal: 1080 }, aspectRatio: 1.777777778, frameRate: { max: 30 }, facingMode: { exact: "user" } } }; 

рдпрд╣ рдСрдбрд┐рдпреЛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд▓рдЪреАрд▓рд╛рдкрди рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ "рдмрдЯ" рд╣реЛрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╕рдорд░реНрдерди рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдЧреНрд░рд╛рд╣рдХ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рдереЗ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдПрдХ рдЕрдиреБрдХреВрд▓ рдордВрдЪ рд╣реИрдВ рдФрд░ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рд░рд▓рддрд╛ рдХреЗ рдЖрджреА рд╣реИрдВред рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рд╣рд╕ рдХрд┐рдпрд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдХреНрд╕рд░ рдЦреБрдж рдХреЛ рдШреБрдЯрдиреЗ рдХреЗ рдареАрдХ рдКрдкрд░ рдЧреЛрд▓реА рдорд╛рд░ рд▓реА, рдХреНрдпреЛрдВрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдереЛрдбрд╝реА рдЕрд╕рдВрдЧрддрд┐ рд╣реИред

рдЕрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдРрд╕рд╛ рдЬреАрд╡рди рдХреИрд╕реЗ рдорд┐рд▓рд╛ред рд╡реНрдпрд╛рдкрд╛рд░ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ: рдореЙрдбреНрдпреВрд▓ рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдирдЬрд╝рд░; рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╣рдорд╛рд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред

рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ StreamManager рд╣реИ ред рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ, [рдПрдХ рд╣рд╛рдереА рдХреЗ рд╕рд╛рде рдЪрд┐рддреНрд░ред рдЬреЗрдкреАрдЬреА], рдХрд┐ рд╣рдорд╛рд░реЗ рд╡реЗрдм рдПрд╕рдбреАрдХреЗ рдХреЗ рдХрдИ рд╣рд┐рд╕реНрд╕реЗ рд╕рд┐рдВрдЧрд▓рдЯрди рд╣реИрдВ, рдФрд░ рдпрд╣ рд╡рд░реНрдЧ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИ: рдЖрдк рдкреНрд░рд╛рдкреНрдд () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдореБрджреНрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ, рд╢рд╛рдпрджред

 const streamManager = VoxImplant.Hardware.StreamManager.get(); 

StreamManager рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╕реНрдерд╛рдиреАрдп рд╡реАрдбрд┐рдпреЛ рдХреЛ рд╕рдХреНрд╖рдо рдпрд╛ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░
рдЙрд╕рдХреЗ рд▓рд┐рдП рдореАрдбрд┐рдпрд╛ рдзрд╛рд░рд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдмрд╛рд╣рд░реА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред

 (async () => { try{ console.log('[WebSDK]   '); await streamManager.showLocalVideo(); console.log('[WebSDK]   '); await streamManager.hideLocalVideo(); console.log('[WebSDK]      !'); } catch(e){ console.log('[WebSDK] -   . ,    ?!'); console.error(e); } })(); 

рд╕реНрдерд╛рдиреАрдп рд╡реАрдбрд┐рдпреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рддрдереНрдп: рд╕реНрдерд╛рдиреАрдп рд╡реАрдбрд┐рдпреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╡рд╛рд░реНрддрд╛рдХрд╛рд░ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдЪрдбреА рдореЗрдВ рдПрдХ рдЪрд┐рддреНрд░ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ 320 * 240, рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдПрдХ рдХреЛрдиреЗ рдореЗрдВ рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╡реАрдбрд┐рдпреЛ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИред рдиреАрдЪреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЯреНрд░рд┐рдХ рдХреЛ рдХреНрд░реИрдВрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧрд╛ред

StreamManager рдореЗрдВ 3 рдШрдЯрдирд╛рдПрдБ рд╣реИрдВ:

  • DevicesUpdated - рдЙрд╕ рд╕рдордп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рдпрд╛ рдХреИрдорд░реЗ рдХреЛ рдХрдиреЗрдХреНрдЯ / рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИ;
  • MediaRendererAdded - рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рд╕реНрдерд╛рдиреАрдп рд╡реАрдбрд┐рдпреЛ рдпрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛;
  • MediaRendererRemoved - рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЗ рд╕рд╛рде рд╣рдЯрд╛рдП рдЧрдП рд╕реНрдерд╛рдиреАрдп рд╡реАрдбрд┐рдпреЛ рдпрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯред

GetLocalMediaRenderers () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП , рд╕реНрдерд╛рдиреАрдп рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде DOM рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдмрдЪрд╛рдпрд╛ рд╣реИред

 streamManager.getLocalMediaRenderers().forEach(renderer => { cont elementOfDOM = renderer.element; elementOfDOM.addEventListener('on42',doSomething,true); }); 

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

 const cameraManager= VoxImplant.Hardware.CameraManager.get(); 

рд╣рдо рдХреМрди рд╕реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЖрдЗрдП CameraParams рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рджреЗрдЦреЗрдВ:

  • рд╕рдЦреНрдд - рд╕рдЪ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдмрддрд╛рдПрдЧрд╛: "рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реБрдЖ рддреЛ рдЙрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдордд рдХрд░реЛ!" рдпрджрд┐ рдЧрд▓рдд рд╣реИ , рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдирдореНрд░рддрд╛рдкреВрд░реНрд╡рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдШрдЯрддрд╛ рд╣реИ;
  • рдХреИрдорд░рд╛рдЖрдИрдбреА - рдХреИрдорд░рд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдЪрдпрдиред рдЖрдк рдЙрд╕ рд╕реВрдЪреА рд╕реЗ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд░рд┐рдЯрд░реНрди рджреЗрддреА рд╣реИ

     const allMyDevices = await cameraManager.CameraManager.getInputDevices(); 
  • рдлреНрд░реЗрдорд░реЗрдЯ - рд╕реАрдзреЗ рдлреНрд░реЗрдо рджрд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдмрдЪрд╛рдиреЗ рдпрд╛ рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд┐рдирд╛ 30 рд╕реЗ рдиреАрдЪреЗ рдФрд░ 10 рд╕реЗ рдКрдкрд░ рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рдирд╣реАрдВ рджреВрдВрдЧрд╛ред рдЗрд╕ рд╕реАрдорд╛ рдХреЗ рдмрд╛рд╣рд░, рд╕рднреА рдХреИрдорд░реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
  • рдлреЗрд╕рдореЛрдб - рд╕рдЪ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдЪрд┐рддреНрд░ рдХреЛ рдлрд╝реНрд▓рд┐рдк рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдХрд▓реНрдк рдХрд╛рдлреА рдЖрд▓рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╡реАрдбрд┐рдпреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдлреНрд▓рд┐рдк рдХрд░рддреЗ рд╣реИрдВред

рд╡реАрдбрд┐рдпреЛ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ 3 рд╡рд┐рдХрд▓реНрдк рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ:

  • рдЖрдк рдпрд╛ рддреЛ VideoQuality рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╣рдордиреЗ рдлреИрд╢рдиреЗрдмрд▓ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде Enum VideoQuality рддреИрдпрд╛рд░ рдХреА рд╣реИ)
  • рдпрд╛ рдЖрдк рдлрд╝реНрд░реЗрдорд╣рд╛рдЗрдЯ рдФрд░ рдлрд╝реНрд░реЗрдорд╡рд┐рде рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЖрдХрд╛рд░ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ

рдЪрд▓реЛ CameraManager рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░реЗрдВ! рдЗрд╕рдХреЗ рдЕрдВрджрд░ 2 рдЧреЗрдЯрд░реНрд╕ рдФрд░ 2 рд╕реЗрдЯрд┐рдВрдЧ рд╕реЗрдЯрд░ рд╣реИрдВ:


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рдХреЗ рд╕рд╛рде рд╕рднреА "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИред рдирдП рдЗрдирдХрдорд┐рдВрдЧ рдФрд░ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП, рд╕реНрдерд╛рдиреАрдп рд╡реАрдбрд┐рдпреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдФрд░ рдЕрдм рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдлреЛрдХрд╕:

 console.log('[WebSDK]         .'); await cameraManager.setDefaultVideoSettings({ frameWidth:320, frameHeight:240, frameRate:12 }); await streamManager.showLocalVideo(); cameraManager.setDefaultVideoSettings({ frameWidth:640, frameHeight:480, frameRate:25 }); const newCall = client.call('mySchoolFriendBoris'); 

рдирд╛рдо рдореЗрдВ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝реА рдмрдирд╛рдирд╛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдпреЗ рдлрд╝рдВрдХреНрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рд╡рд░реАрдпрддрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВред рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрджрд▓рддреЗ рд╕рдордп, CallEvents.Updated рдЗрд╡реЗрдВрдЯ рдШрдЯрд┐рдд рд╣реЛрдЧрд╛ред

 console.log('[WebSDK]      .'); cameraManager.setCallVideoSettings(newCall,{ frameWidth:320, frameHeight:240, frameRate:12 }); newCall.on(VoxImplant.CallEvents.Updated,e => { console.log('[WebSDK]    .'); }); 

CameraManager рдХреЗ рджреЛ рдХрд╛рд░реНрдп рдмрдиреЗ рд╣реБрдП рд╣реИрдВред рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд▓реЗрдХрд┐рди рдкрд░рд┐рд╖реНрдХреГрддред Enum VideoQuality рдХреЗ рддреАрди рд░реЛрдЪрдХ рдЕрд░реНрде рд╣реИрдВ:

  • VIDEO_QUALITY_HIGH;
  • VIDEO_QUALITY_MEDIUM;
  • VIDEO_QUALITY_LOWред

рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд╕рд╡рд╛рд▓: тАЬрдЗрдЧреЛрд░! рдЕрдЧрд░ рд╡реЗрдм рдПрд╕рдбреАрдХреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА, рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рдФрд░ рдФрд╕рдд рдЧреБрдгрд╡рддреНрддрд╛ рдЬрд╛рдирддрд╛ рд╣реИ, рддреЛ рд╡реЗрдм рдХреИрдорд░рд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддрд░реАрдХрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ! " Tsimes рдирд╣реАрдВ рдЬрд╛рдирддреЗред

рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреЛ рдореИрдВ рдкрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рд╡рд╣ рд╕рдорд░реНрдерд┐рдд рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдореЗрдВ рдХрдИ рдорд┐рдирдЯ рд▓рдЧрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, WebSDK рдХреЗ рдЖрд░рдВрдн рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рддрд╛рдХрд┐ рдЖрдк рдЗрд╕ рд╕рдордп рдРрд╕рд╛ рдХрд░ рд╕рдХреЗрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рд╣реИ - рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдФрд░ testResolutions рд╣реИ ред рдпрд╣ рд╕реНрдерд╛рдиреАрдп рдХрд╛рд░реНрдп рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЬрдм рдкреГрд╖реНрда рдкреБрдирдГ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ loadResolutionTestResult рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

 console.log('[WebSDK]      ,  WebSDK   .'); const testResults = await cameraManager.testResolutions(); localStorage.setItem('defaultCameraResolutionTestResults',JSON.stringify(testResolutions)); 

рдкрд┐рдЫрд▓реЗ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдХрдо рд╕реЗ рдХрдо, AudioDeviceManager ред рдпрд╣ рд╡рд░реНрдЧ CameraManager рдХреЗ рд╕рдорд╛рди рд╣реИред рдХреЗрд╡рд▓ рдзреНрд╡рдирд┐ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ AudioParams рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддреА рд╣реИрдВ:

  • рд╕рдЦреНрдд - рдЖрдкрдХреА рдЗрдЪреНрдЫрд╛ рдХрд╛ рд╕рдЦреНрддреА рд╕реЗ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЪреНрдЪрд╛ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ;
  • inputId - рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рдЪрдпрдиред рд╕рднреА рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рдХреА рдПрдХ рд╕реВрдЪреА AudioDeviceManager.getInputDevices рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ;
  • outputId - рд╡рдХреНрддрд╛рдУрдВ рдХреА рдкрд╕рдВрджред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдХреЗрд╡рд▓ рдХреНрд░реЛрдо рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВрдЧреЗред рдЖрдк getOutputDevices рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ;
  • рд╢реЛрд░ рд╢рдорди - рд╢реЛрд░ рдореЗрдВ рдХрдореАред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╢реЛрд░ рдореЗрдВ рдХрдореА рд╕рдХреНрд╖рдо рд╣реИ рдФрд░ рдорд╣рд╛рди рдХрд╛рдо рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди рдЖрдВрд╢рд┐рдХ рдЖрд╡рд╛рдЬ рд╣рд╛рдирд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд╕ рдХрдорд░реЗ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╡реЗ рдмрд╣реБрдд рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЙрд▓ рд╕реЗрдВрдЯрд░ рдореЗрдВред рдлрд╝рд┐рд▓реНрдЯрд░ рдмрд╕ рдереЛрдбрд╝реА рд╕реА рдЧрд▓рддреА рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдЯреМрддреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкреНрд░рдХреГрддрд┐ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЭреВрдареЗ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ;
  • echoCancellation - рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рд╕реЗ рдЗрдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рдкрд┐рдЫрд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЕрдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП;
  • AutoGainControl - рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдорд╛рдЗрдХреНрд░реЛрдлреЛрди рд▓рд╛рдн рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдХреЛрдИ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдЕрддреНрдпрдзрд┐рдХ рдирд┐рд░реНрднрд░ рд╣реИред рдХрднреА-рдХрднреА рдпрд╣ рдмрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд▓рд╛рдн рд╕реНрдерд┐рд░ рд╣реЛрдЧрд╛, рдЬреЛ рдЕрдЪреНрдЫрд╛ рднреА рд╣реИред

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


All Articles