somehow เปเบ เบเบฒเบเบเบปเบเบเบงเบฒเบกเปเบเบปเปเบฒเปเบฅเบฐเบเบทเบเบเบฐเบเบดเปเบกเปเบงเปเปเบฅเปเบง, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฝเบเบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบญเบญเบเบญเบฒเบเบฒเบเบงเบดเบเบตเปเบญเบเบฒเบเบเปเบฒเปเบเบเปเบฒเบ websockets เปเบเปเบเปเบฒเบเปเบฅเบฐเปเบเบฑเบเบเปเบฒเบกเบฐเบเบฒเบ. เปเบเบเบปเบเบเบฝเบเบเบฑเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบงเบปเปเบฒเบชเบฑเปเบเปเบเปเบฝเบงเบเบฑเบเบงเบดเบเบตเบเบฒเบเบเบฑเบเบเบถเบเบงเบดเบเบตเปเบญเบเบฒเบเบเปเบญเบเบเปเบฒเบเบฎเบนเบเปเบฅเบฐเบชเบฝเบเบเบฒเบเปเบกเปเบเปเบเบเปเบเบเปเบเป , เบงเบดเบเบตเบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบเปเปเบฒเบเบตเปเปเบเปเบฎเบฑเบเปเบฅเบฐเบชเบปเปเบเบเปเบฒเบ websockets เบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, เบเบงเบเปเบเบปเบฒเบเปเปเปเบเปเปเบฎเบฑเบเปเบเบงเบเบตเป, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบญเบญเบเบญเบฒเบเบฒเบเบเบงเบเปเบเบปเบฒเปเบเปเบเบญเบเปเบงเบเบดเปเบชเบเบเบตเปเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบดเบเบเบฑเปเบเปเบฅเบฐเบเบฑเปเบเบเปเบฒ: offhand, เบเบตเปเบชเบฒเบกเบฒเบเปเบเบฑเบ. , เบซเบผเบทเบเบงเบเปเบเบปเบฒเปเบเป WebRTC, เปเบเบดเปเบเปเบฎเบฑเบเบงเบฝเบเบญเบญเบเบเบฒเบเบเปเบญเบ, เบเบฑเปเบเปเบกเปเบ, เบกเบฑเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบกเบตเบเบฒเบเบเบดเบเบเบฑเปเบ plugins a la flash player, เปเบเบดเปเบเบเบฐเบเบทเบเบเบฑเบเบญเบญเบเบเบฒเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบ Chromium เปเบฅเปเบงเปเบเปเบเบทเบญเบเบเบฑเบเบงเบฒ.
เบกเบทเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบชเบปเบเบเบฐเบเบฒเบเปเบฝเบงเบเบฑเบ WebRTC.
เบเบฒเบเบชเบทเปเบชเบฒเบเปเบงเบฅเบฒเบเบดเบเบเบญเบเปเบงเบฑเบ (WebRTC) เบเปเปเปเบกเปเบเปเบเบฃเปเบเบเปเบเบฝเบง, เบกเบฑเบเปเบเบฑเบเบเบฒเบเบฅเบงเบเบฅเบงเบกเบกเบฒเบเบเบฐเบเบฒเบ, เปเบเบฃเปเบเบเป เปเบฅเบฐ JavaScript APIs เบเบฑเบเปเบปเบเบเบตเปเบฎเปเบงเบกเบเบฑเบเบชเบฐเปเบญเบเบเบฒเบเบชเบทเปเบชเบฒเบเบงเบดเบเบตเปเบญ-เบชเบฝเบเปเบเบเบชเบปเบเปเปเบเบ peer-to-peer, เปเบฅเบฐเบเบฑเบเบชเบฒเบกเบฒเบเปเบเปเปเบเบทเปเบญเปเบญเบเบเปเปเบกเบนเบเบเปเบฒเบเป. เบเปเปโเบกเบนเบโเบเบฒเบโเบชเบญเบโ. เบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเบปเบงเบเปเบญเบเปเบงเบฑเบเปเบฎเบฑเบเบซเบเปเบฒเบเบตเปเปเบเบฑเบเปเบเบทเปเบญเบเบกเบดเบ, เปเบเปเบกเบฑเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบกเบทเบเบท, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ. เปเบเบทเปเบญเบเบฑเบเบเบฑเปเบเบเบฒเบเบชเบทเปเบชเบฒเบ p2p เบฅเบฐเบซเบงเปเบฒเบเบฅเบนเบเบเปเบฒ, เบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฐเปเบเบเบเปเบฒเบเปเบเบญเบเบงเบดเบเบตเปเบญเปเบฅเบฐเบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบชเบฝเบเปเบกเปเบเบเปเบฒเปเบเบฑเบ, เบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบงเบฒเบกเบซเบฅเบฒเบเบซเบฅเบฒเบเบเบญเบเปเบเปเบเบเบญเบเปเบเบทเบญเบเปเบฒเบ, เบฎเบฑเบเบเบฐเบเบฑเบเบเบฒเบเปเบเปเบเบญเบเบเบญเบเบฎเบฒเบเปเบงเบเบฑเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบ (เบเปเบฒเบเบเบฑเปเบ OS): webcams, sound cards. เปเบเบเปเบเปเบฅเบเบต hodgepodge เบเบฑเบเบซเบกเบปเบเบเบตเปเบเบทเบเปเบเบทเปเบญเบเปเบงเปเบเบฒเบเบซเบฅเบฑเบเบเบญเบ JavaScript API abstraction เปเบเบทเปเบญเบเบงเบฒเบกเบชเบฐเบเบงเบเบเบญเบเบเบนเปเบเบฑเบเบเบฐเบเบฒ.
เบกเบฑเบเบเบฑเบเบซเบกเบปเบเบเบปเปเบกเบฅเบปเบเปเบเบดเบเบชเบฒเบก APIs:
โ เปเบเป dismantled เบเบฑเปเบ เบชเบธเบ เบเปเบฒเบ, เบกเบทเป เบเบตเป เบเปเบฒ เบเบฐ เปเบเบปเปเบฒ เบเบฐ เบเบฝเบ เปเบเบตเปเบก เปเบเบตเบก เบเปเบฝเบง เบเบฑเบ เบเบฃเบฐ เบญเบปเบ. เปเบซเปเบเปเบฅเบดเบเบฒเบเปเบเบทเปเบญเบฎเบฑเบเบชเบฒเบเบงเบดเบเบตเปเบญ / เบชเบฝเบเบเบฒเบเบฎเบฒเบเปเบง
- เปเบซเปโเบเบฒเบโเบชเบทเปโเบชเบฒเบโเบฅเบฐโเบซเบงเปเบฒเบโเบฅเบนเบโเบเปเบฒโเบชเบญเบโเบเบปเบ (p2pโ)
- เบฎเบฑเบโเบเบดเบโเบเบญเบโเปเบโเบเบฒเบโเปเบญเบโเบเปเปโเบกเบนเบโเบเบตเปโเบเบปเบโเปเบญเบโเบฅเบฐโเบซเบงเปเบฒเบโเบชเบญเบโเบฅเบนเบโเบเปเบฒโ
เบเปเบฒเบฅเบฑเบเบเบฐเบเบฝเบกเบเบฒเบเบเปเบฒเบเบเบญเบเบชเบฝเบ เปเบฅเบฐเบงเบดเบเบตเปเบญเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเบเบเบญเบ
เบกเบฑเบเบเบฑเบเบซเบกเบปเบเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ "เบเบฒเบเบเบฑเบเบเบฒเบ" webcam เปเบฅเบฐ microphone streams เบชเบทเปเบกเบงเบเบเบปเบ. เปเบเปเบเบญเบ, เบชเบฒเบเบเปเปเบฒเบเบดเบเบเปเปเปเบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบญเบเบเบฐเบเบธเบกเปเบเบฅเบฐเบเบปเบก, เปเบเปเบฅเบฐเบชเบฒเบเบเปเปเบฒเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบธเบเปเบเปเบ: เบเบฑเบเบเบธเบเบเบธเบเบเบฐเบเบฒเบ, synchronize เบชเบฝเบเบเบฑเบเบงเบดเบเบตเปเบญ, เบงเบฒเบเปเบเบทเปเบญเบเบซเบกเบฒเบ synchronization เปเบเบเปเปเบฒเบงเบดเบเบตเปเบญ, เปเบฅเบฐเบฎเบฑเบเบเบฐเบเบฑเบ bitrate เบเบตเปเบชเบญเบเบเปเบญเบเบเบฑเบเปเบเบเบงเบดเบเบเบตเปเบกเบตเบเบฒเบเบเปเบฝเบเปเบเบเบขเปเบฒเบเบเปเปเปเบเบทเปเบญเบเบเบญเบเบเปเบญเบ. . เบเบปเบงเบเปเบญเบเปเบงเบฑเบเบเบนเปเบฅเบชเบดเปเบเบเบฑเบเบซเบกเบปเบเบเบตเป, เบเบฑเบเบเบฑเบเบเบฐเบเบฒเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฑเบเบงเบปเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบชเบฐเบซเบเบญเบเบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเบเบเบญเบเบชเบทเป. เบเบฒเบเปเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบเบเบตเปเบเบฑเบเบชเบฐเปเบซเบก, เบกเบตเบเบฑเปเบเบเบญเบเปเบงเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบฒเบ, เบเบฑเบเบเบธเบเบเบธเบเบเบฐเบเบฒเบ (เปเบญเบปเบฒเบชเบฝเบเบชเบฐเบเปเบญเบเปเบฅเบฐเบชเบฝเบเบญเบญเบเบเบฒเบเบชเบฝเบ, เบเบฑเบเบเบธเบเบฎเบนเบเบเบฒเบ), เบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบงเบดเบเบตเปเบญเปเบฅเบฐเบชเบฝเบ. เปเบเบเบฎเปเบฒเบเบเบฒเบเบเบญเบเบเบฑเปเบเปเบกเปเบเบชเบฐเปเบเบเบขเบนเปเปเบเบฎเบนเบ. 1:
เปเบเบปเปเบฒ. 1. เบเบฑเปเบเบเบญเบเบเบฒเบเบเบฐเบกเบงเบเบเบปเบเบชเบฝเบเปเบฅเบฐเบงเบดเบเบตเปเบญเปเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบ
เบเบฒเบเบเบธเบเปเบเปเบเบเบฑเบเบซเบกเบปเบเปเบเบตเบเบเบถเปเบเปเบเบเบเบปเบเปเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบเบเบญเบเบกเบฑเบเปเบญเบ, เบเปเปเบกเบตเบเบฒเบเปเบเบตเปเบกเปเบเบตเบก. เบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบกเบต plugins. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบชเบดเปเบเบเปเบฒเบเปเบเบฑเบเบเปเปเปเบเบฑเบเบเบตเปเบชเบปเบเปเบชเบชเปเบฒเบฅเบฑเบเบเบต 2020. เบกเบตเบเบปเบงเบเปเบญเบเปเบงเบฑเบเบเบตเปเบเบฑเบเบเปเปเบเบฑเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบขเปเบฒเบเปเบเบฑเบกเบชเปเบงเบ , เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบกเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบฅเบฐเปเบเบดเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบงเบฒเบกเปเบเบปเปเบฒเบเบฑเบเปเบเปเบขเบนเปเบฅเบธเปเบกเบชเบธเบ. IE เปเบเบเบชเบฐเปเบเบฒเบฐเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบเปเบกเปเบเบเบงเบฒเบกเบเบดเบเบซเบงเบฑเบ.
เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเปเบฎเบฑเบโเบชเบดเปเบโเบเบตเปโเบซเบเปเบฒโเบชเบปเบโเปเบโเบซเบผเบฒเบโเบเบฑเบโเบเบฒเบโเบชเบฐโเบโเบฃเบตเบกโเบเบตเปโเปเบเปโเบฎเบฑเบโ: เบเปเบฒเบโเบชเบฒโเบกเบฒเบ cloneโ, เบเบฒเบโเบเปเบฝเบโเปเบเบโเบเบงเบฒเบกโเบฅเบฐโเบญเบฝเบโเบงเบดโเบเบตโเปเบญโ, เบเบฒเบโเบเบฑเบโเบเบฒเบโเบเบธเบโเบเบฐโเบเบฒเบโเบชเบฝเบโ, เบเปเบฒเบโเบชเบฒโเบกเบฒเบโเปเบญเบปเบฒโเปเบฅเบฐ "เบเบดเบโ" stream Media Stream เบเบฑเบ tag เปเบฅเบฐเปเบเบดเปเบเบเบปเบงเบเปเบฒเบเปเบญเบเบขเบนเปเปเบเบซเบเปเบฒ html. เบซเบผเบทเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเปเบก stream เปเบเบดเบ canvas, เปเบฅเบฐเบเบฑเปเบ WebGL เบซเบผเบท CSS3, เปเบฅเบฐเบเปเบฒเปเบเปเบเบปเบงเบเบญเบเบเปเบฒเบเปเปเบชเปเบงเบดเบเบตเปเบญ, เบเบฑเบเบเบถเบเบงเบดเบเบตเปเบญเบเบตเปเบเบธเบเปเบเปเบเบเบฒเบ canvas เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบชเบปเปเบเบเปเบฒเบเปเบเบทเบญเบเปเบฒเบเปเบเบซเบฒเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, transcode เปเบฅเบฐเปเบเบตเบเปเบเปเปเบซเปเบเบธเบเบเบปเบ (เบชเบฐเบเบฒเบเบเบต bigo live, twitch เปเบฅเบฐโเบญเบทเปเบเป). เปเบเบเบตเปเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเปเปเปเบเปเบงเบดเปเบเบฒเบฐเบงเบดเบเบตเบเบฒเบเบเบฑเปเบเบเปเบฒเบงเปเบฎเบฑเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเปเบซเปเบชเบญเบเบชเบฒเบกเบเบปเบงเบขเปเบฒเบเบเบตเปเบเบปเบเปเบซเบฑเบเบขเบนเปเปเบเปเบงเบฑเบ:
- เบเบนเปเบเบฒเบเบเปเบฒเบฅเบฑเบเปเบฎเบฑเบ CV เปเบเปเบงเบฅเบฒเบเบดเบเปเบ Javascript. เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเบกเบตเบเบฑเบเบซเบกเบปเบ เบซเปเบญเบเบชเบฐเบซเบกเบธเบ js เบเปเบฒเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบฒเบเบเปเบฒเบเบเบญเบเบงเบดเบเบตเปเบญเปเบเบเปเบฒเปเบ: เบเบฒเบเบเบงเบเบชเบญเบเปเบเบซเบเปเบฒ, เบงเบฑเบเบเบธ, เบเปเบฒเปเบเปเบเบฒเบเบเบฑเปเบเบเบญเบ (เบซเบเปเบฒเบเบฒเบ, เปเบเบฑเปเบเปเบ Instagram), เปเบฅเบฐเบญเบทเปเบเป. เบเบปเบงเบขเปเบฒเบเบเบตเปเบเบตเปเบฅเบตเบเบเบญเบเบงเบดเบเบตเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบกเบงเบเบเบปเบเบงเบดเบเบตเปเบญเปเบเปเบงเบฅเบฒเบเบตเปเปเบเปเบเบดเบเปเบเปเปเบเบเบเบปเบเปเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบเปเบเบเบเปเปเบกเบตเบเบฒเบ plugins เปเบเบตเปเบกเปเบเบตเบก.
- เปเบญโเบเบฐโเบชเบฒเบ API เบชเปเบฒโเบฅเบฑเบโเบเบฒเบโเบเบฑเบโเบชเบฐโเบโเบฃเบตเบกโเบงเบดโเบเบตโเปเบญโเบเบฒเบ canvasโ. เบฎเบญเบเบฎเบฑเบเปเบ Chrome, Opera เปเบฅเบฐ Firefox เปเบฅเปเบง
RTCPeerConnection
เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบกเบฒเบฎเบญเบเบเบธเบ, เปเบเปเบเบปเบงเบเบดเบเปเบฅเปเบงเบงเบดเบเบตเบเบฒเบเปเบญเบเบงเบดเบเบตเปเบญเปเบซเปเบเบฑเบเบเบนเปเปเบเปเบญเบทเปเบเปเบเปเปเบเบงเปเบ? เบกเบฒเบเปเบญเบ . เปเบเบชเบฑเปเบ, เปเบเปเบเบทเบญเบเบเบฑเปเบเบเบญเบเบเบตเป, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเบงเบฑเบเบเบธ RTCPeerConnection:
const peerConnection = new RTCPeerConnection({
iceServers: [{
urls: 'stun:stun.l.google.com:19302'
}]
});เบเบงเบเปเบฎเบปเบฒเบฅเบฐเบเบธ iceServers เปเบเบฑเบเบซเบเบถเปเบเปเบเบเบฒเบเปเบฅเบทเบญเบ - เบเบตเปเปเบกเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบตเปเบเปเบงเบเบชเบฐเบซเบเบญเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบฅเบฐเบซเบงเปเบฒเบเบชเบญเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบเบเบตเปเบขเบนเปเปเบเบทเปเบญเบเบซเบผเบฑเบ NAT'om. เบเบฑเปเบเปเบกเปเบ, เบเบฑเบเบซเบฒเปเบเปเบเบทเบเปเบเปเปเบเบขเบนเปเบเบตเปเบเบตเป: เบงเบดเบเบตเบเบฒเบเบเบญเบเบซเบฒ ip เบเบญเบ interlocutor เบเปเบฒเบฅเบฒเบงเบขเบนเปเปเบเบทเปเบญเบเบซเบผเบฑเบ NAT เบเบญเบเบเบนเปเปเบซเปเบเปเบฅเบดเบเบฒเบเบเบญเบเบฅเบฒเบง? เบญเบฐเบเบธเบชเบฑเบเบเบฒ ICE เบกเบฒเบเปเบงเบ, เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, ICE เบเปเปเปเบเปเบเปเบฒเปเบเปเบเบฑเบ WebRTC เบเบฑเบเบซเบกเบปเบ, เปเบเปเบกเบตเบซเบผเบฒเบเบเบงเปเบฒเบเบฑเปเบเบเปเปเบกเบฒ.
เบเปเบญเบเบซเบเปเบฒเบเบตเป, เบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฑเบ Usermedia streams:
navigator.mediaDevices.getUserMedia({ video: true, audio: true }).then(stream => {
// Usermedia-ะฟะพัะพะบะธ, ะพะฑััะฝะพ ััะพ ะฒะธะดะตะพ ะธ ะฐัะดะธะพ
const tracks = stream.getTracks();
for (const track of tracks) {
// ะบะฐะถะดัะน ััะตะบ ะฟัะธัะพะตะดะธะฝัะตะผ ะบ peerConnection
peerConnection.addTrack(track);
}
}).catch(console.error);เบเปเปเปเบ, เปเบซเบเบเบฒเบเบเบตเปเบเปเบญเบเปเบเบฅเบฐเบเบฒเบเปเปเบฅเบญเบเปเบเปเบฅเบธเบเบเบถเปเบเปเบเบดเบ peerConnection, เปเบเบเบปเบงเบเบฑเบเบเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบชเปเบฒเบเบเบฒเบเบชเบฐเปเบซเบเบต (เปเบเปเบเบทเปเบญเบเปเบเบเบญเบ SDP - Session Description Protocol) เปเบฅเบฐเบกเบญเบเบซเบกเบฒเบเปเบซเป peerConnection เบเปเบฒเบเบงเบดเบเบตเบเบฒเบ setLocalDescription. เบเปเบฝเบงเบเบฑเบ SDP - เบกเบฑเบเปเบกเปเบเบซเบเบฑเบเปเบฅเบฐเบเปเบฝเบงเบเบฑเบเบเบฒเบเบชเบฐเปเบซเบเบตเปเบฅเบฐเบฎเบนเบเปเบเบเบเปเบฒเบเบญเบ - เบเบงเบเปเบฎเบปเบฒเบเบฐเบชเบปเบเบเบฐเบเบฒเบเบทเปเบกเบญเบตเบ.
เบซเบผเบฑเบเบเบฒเบเบกเบญเบเบซเบกเบฒเบ LocalDescription peerConnection, เบเบปเบงเบเปเบญเบเปเบงเบฑเบ "เบเบฐเบเบญเบ" เบเบนเปเบชเบฐเบซเบกเบฑเบเบเปเบญเบ, เบเบฑเปเบเปเบกเปเบ, เบเบญเบเบซเบฒเบงเบดเบเบตเบเปเบฒเบเปเปเบเบเบฒเบเบชเบทเปเบชเบฒเบเบเปเบฒเบ NAT. เปเบซเบเบเบฒเบ onicegatheringstatechange เปเบเปเบซเบกเป. เปเบ onicegatheringstatechange handler, เบเบงเบเปเบฎเบปเบฒเบญเบฐเบเบธเบเบฒเบเปเบซเปเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ webrtc-signaling-server stream เปเบเบทเปเบญเปเบฅเบเบเปเบฝเบ Session Description เบฅเบฐเบซเบงเปเบฒเบเปเบเบทเปเบญเบเบกเบดเบ:
peerConnection.oniceconnectionstatechange = (event) => {
console.log('Connection state: ', peerConnection.iceConnectionState);
if (peerConnection.iceConnectionState === 'connected') {
// ะะพะถะตะผ ะฐะบัะธะฒะธัะพะฒะฐัั ะบะฝะพะฟะบั Start broadcast
setBroadcasting(true);
setBroadcastingBtnActive(true);
}
};
// ะกะพะฑััะธะต ััะฐะฑะฐััะฒะฐะตั ััะฐะทั, ะบะฐะบ ัะพะปัะบะพ ะดะพะฑะฐะฒะธะปัั ะผะตะดะฐะธะฐะฟะพัะพะบ ะฒ peerConnection
peerConnection.onnegotiationneeded = (event) => {
// ะกะพะทะดะฐะตะผ ะธ ะฝะฐะทะฝะฐัะฐะตะผ SDP offer
peerConnection.createOffer().
then((offer) => peerConnection.setLocalDescription(offer)).
catch(console.error);
};
// ะกะพะฑััะธะต ััะฐะฑะฐััะฒะฐะตั ะบะฐะถะดัะน ัะฐะท, ะบะฐะบ ะฟะพัะฒะปัะตััั ICE ะบะฐะฝะดะธะดะฐั
peerConnection.onicegatheringstatechange = (ev) => {
let connection = ev.target;
// Now we can activate broadcast button
if (connection.iceGatheringState === 'complete') {
let delay = 50;
let tries = 0;
let maxTries = 3;
let timerId = setTimeout(function allowStreaming() {
if (isOnline) {
setBroadcastingBtnActive(true);
return;
}
if (tries < maxTries) {
tries += 1;
delay *= 2;
timerId = setTimeout(allowStreaming, delay);
} else {
// TODO: show user notification
console.error("Can't connect to server");
alert("Can't connect to server");
}
}, delay);
}
};webrtc-signaling-server เปเบกเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบเบตเปเบเปเบญเบเบเบฒเบเปเบเบทเปเบญเปเบฅเบเบเปเบฝเบเบเปเบฒเบญเบฐเบเบดเบเบฒเบเบเบญเบเบเบฐเบเบธเบกเบฅเบฐเบซเบงเปเบฒเบเบชเบญเบเบเบปเบ, เบกเบฑเบเบชเบฒเบกเบฒเบเปเบเบฑเบ websocket เบเบตเปเบเปเบฒเบเบเบตเปเบชเบธเบเบซเบผเบท xhr-server เปเบ PL เปเบ. เบงเบฝเบโเบเบฒเบโเบเบญเบโเบกเบฑเบโเปเบกเปเบโเบเปเบฒเบโเบเบฒเบโ: เปเบเบทเปเบญโเบฎเบฑเบโเปเบญเบปเบฒโเบเปเบฒโเบญเบฐโเบเบดโเบเบฒเบโเบเบญเบโเบเบญเบโเบเบฐโเบเบธเบกโเบเบฒเบโเปเบเบทเปเบญเบโเบฎเปเบงเบกโเบเบฒเบโเบซเบเบถเปเบโเปเบฅเบฐโเปเบญเบโเบกเบฑเบโเบเบฑเบโเบเบปเบโเบญเบทเปเบโ.
เบซเบผเบฑเบเบเบฒเบเบเบฒเบเปเบฅเบเบเปเบฝเบเบเปเบฒเบญเบฐเบเบดเบเบฒเบ Session, เบเบฑเบเบชเบญเบเบเปเบฒเบเบเปเบญเบกเบเบตเปเบเบฐเบญเบญเบเบญเบฒเบเบฒเบเปเบฅเบฐเบฎเบฑเบเบชเบฒเบเบงเบดเบเบตเปเบญ, เปเบเบเปเบฒเบเบเบตเปเบฎเบฑเบเบชเบฒเบเบงเบดเบเบตเปเบญ, เปเบซเบเบเบฒเบ ontrack เปเบเปเบเบทเบเบเบฐเบเบธเปเบเบขเบนเปเปเบ peerConnection, เปเบ handler เบเบญเบเบเบตเป, เบเบดเบเบเบฒเบกเบเบตเปเปเบเปเบฎเบฑเบเบชเบฒเบกเบฒเบเปเบเปเบฎเบฑเบเบเบฒเบเบกเบญเบเบซเบกเบฒเบเปเบซเป. เปเบฅเบฐเปเบเบดเปเบ interlocutor เบเบตเปเบเปเบฒเบเบกเบฑเบ. เบเบดเบเบชเบฐเบเบต เปเบฅเบฐเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบเบตเปเบกเปเบเบตเบก.
เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบฅเบฐเบงเบฑเบเบเบฐเบเบฐเบเบต:
- เปเบญเบเบฐเบชเบฒเบ
- เบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบญเบโเบญเบฐโเบเบธโเบชเบฑเบโเบเบฒ WebRTC เปเบโ
- เบซเบเบฑเบเบชเบทเบเบฒเบเบเบนเปเบชเปเบฒเบ pion เปเบเป
- เบเบทเปเบกเบเบฑเบเบเบถเบเปเบเบทเบญเบเปเบฒเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบเบเบตเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบชเบนเบ. เบเบฑเบเบซเบฒเบเบฒเบเบฎเบฑเบเบเบฐเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบชเบนเบเบเบญเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเปเบงเบฑเบเปเบเบเปเปเบเปเบเบทเบเบเบถเบเบชเบฒเบซเบฒเบฅเบทเปเบเบฅเบฒเบเบฅเบฐเบญเบฝเบ. เปเบเบเบตเปเบชเบธเบ, WebRTC เปเบเปเบเบทเบเบญเบฐเบเบดเบเบฒเบ. เบซเบเบฑเบเบชเบทเปเบกเปเบเปเบเปเบเบญเบเปเบเบปเปเบฒ (2013), เปเบเปเบเปเปเปเบเปเบชเบนเบเปเบชเบเบเบงเบฒเบกเบเปเบฝเบงเบเปเบญเบเบเบญเบเบกเบฑเบ.
เปเบเบชเปเบงเบเบเปเปเปเบ, เบเปเบญเบเบเปเบญเบเบเบฒเบเปเบซเปเบเบฒเบเบชเปเบงเบเปเบเบตเปเบกเปเบเบตเบกเบเบญเบเบเบดเบเบชเบฐเบเบตเปเบฅเบฐเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเบทเปเบญเบงเบดเปเบเบฒเบฐเบเบฒเบเบฎเบฑเบเปเบฅเบฐเบเบฒเบเบเบธเบเปเบเปเบเบงเบดเบเบตเปเบญเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบเบเปเบเป pion, transcoding เบเบฑเบ HLS เบเปเบฒเบ ffmpeg เบชเปเบฒเบฅเบฑเบเบเบฒเบเบญเบญเบเบญเบฒเบเบฒเบเบเปเปเปเบเปเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบ.
เบชเบณเบฅเบฑเบเบเบปเบเบญเบปเบเบเบปเบ: (เบเบตเปโเปเบเบฑเบโเบเบฝเบโเปเบเปโเบเบฒเบโเบเบปเบโเบฅเบญเบโ)โ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com
