RTMP рд╡реАрдбрд┐рдпреЛ рдХреЙрд▓ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ


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

рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирдП Voxengine рдореЙрдбреНрдпреВрд▓ - StreamingAgent рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╡ рд╣реИред рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рдЖрдк рдЗрд╕ рдПрдХреАрдХрд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 5 рдЪрд░рдгреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

рдпреЛрдЬрдирд╛



рдореЛрдмрд╛рдЗрд▓ / рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ рдПрд╕рдЖрдИрдкреА рд╕реЗ рдПрдХ рд╡реАрдбрд┐рдпреЛ рдХреЙрд▓ рд╣рдорд╛рд░реЗ рдХреНрд▓рд╛рдЙрдб рдкрд░ рдЖрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдПрдХ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╕реАрдбреАрдПрди рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдмрджрд▓реЗ рдореЗрдВ, рд╕реАрдбреАрдПрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдСрдбрд┐рдпреЛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рднреЗрдЬрддрд╛ рд╣реИ - рдЬреИрд╕рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ RTMP рдХреЗрд╡рд▓ H.264 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рдХреЛрдбреЗрдХ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА


  • рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╕реЗрд╡рд╛ рдкрд░ рдПрдХ рдЦрд╛рддрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪрд┐рдХреЛрдЯреА рдпрд╛ Youtube ;
  • Voximplant рдЦрд╛рддрд╛ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкрдВрдЬреАрдХрд░рдг рдпрд╣рд╛рдВ рд░рд╣рддрд╛ рд╣реИ ;
  • Voximplant рдЖрд╡реЗрджрди, рд╕рд╛рде рд╣реА рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдПрдХ рдирд┐рдпрдо рдФрд░ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ред рд╣рдо рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдпрд╣ рд╕рдм рдмрдирд╛рдПрдВрдЧреЗ;
  • рд╡реАрдбрд┐рдпреЛ рдФрд░ рдСрдбрд┐рдпреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ - рд╣рдо рдЕрдкрдиреЗ рдбреЗрдореЛ рд╡реАрдбрд┐рдпреЛрдЪреИрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ

1. рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдХреНрд▓рд╛рдЙрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рд╕реНрдЯреНрд░реАрдо рдирд╛рдо / рдХреБрдВрдЬреА рдФрд░ рд╕рд░реНрд╡рд░ URL ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреНрд╡рд┐рдЪ рдФрд░ рдпреВрдЯреНрдпреВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

рдРрдВрдарди


рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВ, рдКрдкрд░реА рджрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЪрд┐рддреНрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╡реАрдбрд┐рдпреЛ рдирд┐рд░реНрдорд╛рддрд╛ рдЪреБрдиреЗрдВред



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

рд╕рд░реНрд╡рд░ url рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, stream.twitch.tv/ingests рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдВ, рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╕рд░реНрд╡рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рд╕реНрд▓реИрд╢ рдХреЗ рдмрд┐рдирд╛ рдХреЙрдкреА рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: rtmp: //live-sfo.twitch.tv/app

рдпреВрдЯреНрдпреВрдм


рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдВ, рдКрдкрд░реА рджрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рдЕрд╡рддрд╛рд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ YouTube рд╕реНрдЯреВрдбрд┐рдпреЛ (рдмреАрдЯрд╛) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред



рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ YouTube рдЪреИрдирд▓ рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХ рдЪреИрдирд▓ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрд╡рд╛рдж рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдХреНрд░рд┐рдПрдЯ рдЪреИрдирд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдЖрдкрдХреЛ рдПрдХ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рдЧрдП рдЪреИрдирд▓ рдХрд╛ рдПрдХ рдбреИрд╢рдмреЛрд░реНрдб рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдЬрд┐рд╕реЗ 24 рдШрдВрдЯреЗ рдХреЗ рднреАрддрд░ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред



YouTube рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд░рд╣рддреЗ рд╣реБрдП, рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдЬрд╛рдПрдВ -> рдмрд╛рдИрдВ рдУрд░ рдореЗрдиреВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЗрд╡ рд╕реНрдЯреНрд░реАрдо рдХрд░реЗрдВред рдПрдХ рдирдпрд╛ рдкреЗрдЬ рдЦреБрд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдиреАрдЪреЗ рдПрдирдХреЛрдбрд░ рд╕реЗрдЯрдЕрдк рдмреНрд▓реЙрдХ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╕реЗ, рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ URL рдФрд░ рд╕реНрдЯреНрд░реАрдо рдирд╛рдо / рдХреБрдВрдЬреА рдорд╛рди (рдпрд╛ рдкреГрд╖реНрда рдХреЛ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝рдирд╛) рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



2. VOXIMPLANT рд╕реЗрдЯрд┐рдВрдЧреНрд╕


рдЕрдм рдЖрдкрдХреЛ рд╡реЛрдХреНрд╕рд┐рдордкреНрд▓рд╛рдВрдЯ рдХреА рддрд░рдл рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ: https://manage.voximplant.com/auth рдмрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд рдореЗрдиреВ рдореЗрдВ, "рдПрдкреНрд▓рд┐рдХреЗрд╢рди", рдлрд┐рд░ "рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдирд╛рдордХ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред рдирдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЬрд╛рдПрдВ, рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯрд╕реНрдЯреНрд░реАрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП "рд▓рд┐рдкрд┐рдпреЛрдВ" рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ (8 рдФрд░ 9 рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рд╕реЗ рдорд╛рдиреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рди рднреВрд▓реЗрдВ):

require(Modules.StreamingAgent); VoxEngine.setVideoCodec("H264"); VoxEngine.addEventListener(AppEvents.CallAlerting, function (e) { const streaming = VoxImplant.createStreamingAgent({ protocol: "RTMP", url: "rtmp://live-sfo.twitch.tv/app", streamName: "live_********************", keyframeInterval: 4 }); e.call.sendMediaTo(streaming); streaming.addEventListener(StreamingAgentEvents.Connected, function (e) { Logger.write("LOG: StreamingAgentEvents.Connected: " + e.reason); }); streaming.addEventListener(StreamingAgentEvents.Disconnected, function (e) { Logger.write("LOG: StreamingAgentEvents.Disconnected: " + e.reason); }); streaming.addEventListener(StreamingAgentEvents.ConnectionFailed, function (e) { Logger.write("LOG: StreamingAgentEvents.ConnectionFailed: " + e.reason); }); streaming.addEventListener(StreamingAgentEvents.Error, function (e) { Logger.write("LOG: StreamingAgentEvents.Error: " + e.reason); }); streaming.addEventListener(StreamingAgentEvents.StreamStarted, function (e) { Logger.write("LOG: StreamingAgentEvents.StreamStarted: " + e.reason); }); streaming.addEventListener(StreamingAgentEvents.StreamError, function (e) { Logger.write("LOG: StreamingAgentEvents.StreamError: " + e.reason); }); streaming.addEventListener(StreamingAgentEvents.StreamStopped, function (e) { Logger.write("LOG: StreamingAgentEvents.StreamStopped: " + e.reason); }); e.call.answer(); e.call.addEventListener(CallEvents.Disconnected, function (e) { Logger.write("LOG: terminating in 6 secs"); setTimeout(VoxEngine.terminate, 6000); }); }); 

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


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


Voximplant рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдореИрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ StreamingAgent рдореЙрдбреНрдпреВрд▓ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

3. рдкрд░рд┐рджреГрд╢реНрдп


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

 require(Modules.StreamingAgent); 

рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрд╕ рдХреЛрдбреЗрдХ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐ рдХрдИ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо (рдЯреНрд╡рд┐рдЪ рдФрд░ рдпреВрдЯреНрдпреВрдм рд╕рд╣рд┐рдд) RTMP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, H.264 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдпрд╣реА рд╡рд╣ рд╣реИ рдЬреЛ рд╣рдо рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВрдЧреЗ:

 VoxEngine.setVideoCodec("H264"); 

рдпрджрд┐ рдХреЛрдбреЗрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ StreamingAgentEvents.StreamError рдИрд╡реЗрдВрдЯ рдХреЛ рдЙрдард╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рддреНрд░реБрдЯрд┐ рдкрд╛рда рд╣реИ:
 "Video codec mismatch. " + codecName + " granted, but should be H.264" 

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

  • рдкреНрд░реЛрдЯреЛрдХреЙрд▓ - рдЕрднреА рддрдХ рдХреЗрд╡рд▓ RTMP рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
  • url - рд╕рд░реНрд╡рд░ URL, рдЪрд░рдг 1 рджреЗрдЦреЗрдВ;
  • рд╕реНрдЯреНрд░реАрдордирд╛рдо - рд╕реНрдЯреНрд░реАрдо рдирд╛рдо / рдХреБрдВрдЬреА, рдЪрд░рдг 1 рджреЗрдЦреЗрдВ;
  • ApplicationName (рд╡реИрдХрд▓реНрдкрд┐рдХ) - streamName рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛, рдЬреИрд╕реЗ live2ред рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрджрд┐ рдЪрдпрдирд┐рдд рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ;
  • keyframeInterval (рд╡реИрдХрд▓реНрдкрд┐рдХ, рд╕реЗрдХрдВрдб) - рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдХрд┐рддрдиреА рдмрд╛рд░ рдХреБрдВрдЬреА рдлрд╝реНрд░реЗрдо рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛ред рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди 2 рд╣реИред

рдКрдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ, createStreamingAgent рдкрджреНрдзрддрд┐ рдХрд╛ рдХреЙрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 VoxEngine.addEventListener(AppEvents.CallAlerting, function (e) { const streaming = VoxImplant.createStreamingAgent({ protocol: "RTMP", url: "rtmp://live-sfo.twitch.tv/app", streamName: "live_********************", keyframeInterval: 4 }); 

рд▓реЗрдХрд┐рди рд╣рдо keyframeInterval рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:

 VoxEngine.addEventListener(AppEvents.CallAlerting, function (e) { const streaming = VoxImplant.createStreamingAgent({ protocol: "RTMP", url: "rtmp://a.rtmp.youtube.com/", applicationName: "live2", streamName: "somename" }); 

рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирдиреЗ рдХреЗ рдмрд╛рдж, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЕрдВрджрд░ рдХреЙрд▓ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреА рд╣реИред рдЕрдЧрд▓рд╛ рдХрджрдо рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдмрдирд╛рдП рдЧрдП рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИ:

 e.call.sendMediaTo(streaming); 

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

рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдиреЗ рд╡рд╛рд▓реА рдХреЙрд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддреА рд╣реИ:

 e.call.answer(); 

рдЕрдВрдд рдореЗрдВ, рдЬрдм рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рд╡реАрдбрд┐рдпреЛ рднреЗрдЬрдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХреЗ рдЕрдВрдд рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдо рдЗрд╕ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реАрдбрд┐рдпреЛ рднреЗрдЬрдиреЗ рдХреЗ 60 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╣реА рд╕рддреНрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдЕрдкреЗрдХреНрд╖рд╛ рдореЗрдВ рдХреЛрдИ рджрдо рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рддреНрд░ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдЬреЛ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХреА рдЧрдИ рдШрдЯрдирд╛рдУрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:

 e.call.addEventListener(CallEvents.Disconnected, function (e) { Logger.write("LOG: terminating in 6 secs"); setTimeout(VoxEngine.terminate, 6000); }); 

рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рддрд░реНрдХ рдХреЛ рд╕рдордЭрддреЗ рд╣реБрдП, рд╣рдо рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдЕрдВрддрд┐рдо - рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо - рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред

4. рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ


рдХреНрд▓реЛрди рдпрд╛ рд╣рдорд╛рд░реЗ рд╡реАрдбрд┐рдпреЛрдХреЛрдЪ рдбреЗрдореЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдлрд┐рд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ / рдЖрдИрдбреАрдИ рдореЗрдВ WebApp / JS / app.js рдлрд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ ред рд▓рд╛рдЗрди 5 рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реЗрдЬреЗрдВ:


рджрд░рдЕрд╕рд▓, рдмрд╕ рдЗрддрдирд╛ рд╣реАред

5. рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╢реБрд░реВ рдХрд░реЗрдВ


рдЖрдкрдХреЛ WebApp рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдпрд╛ рдЕрдкрдиреЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд▓рд╛рдЗрд╡-рд╕рд░реНрд╡рд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдпрд╛ рдХреНрд░реЛрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдкрдиреЗ Voximplant рдЦрд╛рддреЗ рдХрд╛ рдирд╛рдо рджреЗрдирд╛ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
  http://127.0.0.1:8080/index.html#accname=johngalt 


рдХреНрд▓рд╛рдЗрдВрдЯ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЪрд░рдг 2 рд╕реЗ рд▓реЙрдЧрд┐рди-рдкрд╛рд╕рд╡рд░реНрдб рдЬреЛрдбрд╝реА рджрд░реНрдЬ рдХрд░реЗрдВ:


@ рдЪрд┐рд╣реНрди рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рдХреЛрдИ рднреА рд╡рд░реНрдг рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рдХреЙрд▓ рджрдмрд╛рдПрдВред рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЖрдкрдХреА рд╕реНрдЯреНрд░реАрдо рдЬрд▓реНрдж рд╣реА рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧреА :) рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рдлрд▓ рдзрд╛рд░рд╛рдПрдВ рдФрд░ рдЙрддреНрдкрд╛рджрдХ рд╡рд┐рдХрд╛рд╕!

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


All Articles