From 463105c012055b4167f56ccd239595bf309ab0f9 Mon Sep 17 00:00:00 2001 From: winlin Date: Tue, 25 May 2021 14:39:47 +0800 Subject: [PATCH 1/8] Refine README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7a9dffeb7..6afbf63b1 100755 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ SRS/4.0,[Leo][release4],是一个简单高效的实时视频服务器,支 SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181. -> Note: SRS is licenced under [MIT][LICENSE], but some depended libraries are distributed using their [own licenses][LicenseMixing]. +SRS is licenced under [MIT][LICENSE], but some depended libraries are distributed using their [own licenses][LicenseMixing]. ## Usage From bd1ec99d5b5462b55370dc4df47e5580ccaa1c03 Mon Sep 17 00:00:00 2001 From: winlin Date: Tue, 25 May 2021 16:04:44 +0800 Subject: [PATCH 2/8] Demo: Update srs.sdk.js --- trunk/3rdparty/signaling/www/demos/index.html | 11 +++- .../signaling/www/demos/js/srs.sdk.js | 51 ++++++++++++++----- .../3rdparty/signaling/www/demos/one2one.html | 14 ++--- trunk/3rdparty/signaling/www/demos/room.html | 14 ++--- 4 files changed, 56 insertions(+), 34 deletions(-) diff --git a/trunk/3rdparty/signaling/www/demos/index.html b/trunk/3rdparty/signaling/www/demos/index.html index c2b617daa..20f2f9a00 100644 --- a/trunk/3rdparty/signaling/www/demos/index.html +++ b/trunk/3rdparty/signaling/www/demos/index.html @@ -19,7 +19,16 @@ let elems = document.getElementsByClassName('srs_demo'); for (var i = 0; i < elems.length; i++) { let elem = elems.item(i); - elem.setAttribute('href', elem.getAttribute('href') + '&room=' + roomName); + + // Use random room. + let href = elem.getAttribute('href') + '&room=' + roomName; + + // For run demos on SRS http server. + if (window.location.port === '8080') { + href += '&wsp=1989'; + } + + elem.setAttribute('href', href); } diff --git a/trunk/3rdparty/signaling/www/demos/js/srs.sdk.js b/trunk/3rdparty/signaling/www/demos/js/srs.sdk.js index 4b030542d..2e3cd87d1 100644 --- a/trunk/3rdparty/signaling/www/demos/js/srs.sdk.js +++ b/trunk/3rdparty/signaling/www/demos/js/srs.sdk.js @@ -29,6 +29,14 @@ function SrsRtcPublisherAsync() { var self = {}; + // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia + self.constraints = { + audio: true, + video: { + width: {ideal: 320, max: 576} + } + }; + // @see https://github.com/rtcdn/rtcdn-draft // @url The WebRTC url to play with, for example: // webrtc://r.ossrs.net/live/livestream @@ -56,12 +64,14 @@ function SrsRtcPublisherAsync() { self.pc.addTransceiver("audio", {direction: "sendonly"}); self.pc.addTransceiver("video", {direction: "sendonly"}); - var stream = await navigator.mediaDevices.getUserMedia( - {audio: true, video: {width: {max: 320}}} - ); + var stream = await navigator.mediaDevices.getUserMedia(self.constraints); + // @see https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/addStream#Migrating_to_addTrack stream.getTracks().forEach(function (track) { self.pc.addTrack(track); + + // Notify about local track when stream is ok. + self.ontrack && self.ontrack({track: track}); }); var offer = await self.pc.createOffer(); @@ -94,9 +104,6 @@ function SrsRtcPublisherAsync() { ); session.simulator = conf.schema + '//' + conf.urlObject.server + ':' + conf.port + '/rtc/v1/nack/'; - // Notify about local stream when success. - self.onaddstream && self.onaddstream({stream: stream}); - return session; }; @@ -107,7 +114,10 @@ function SrsRtcPublisherAsync() { }; // The callback when got local stream. - self.onaddstream = function (event) { + // @see https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/addStream#Migrating_to_addTrack + self.ontrack = function (event) { + // Add track to stream of SDK. + self.stream.addTrack(event.track); }; // Internal APIs. @@ -253,6 +263,11 @@ function SrsRtcPublisherAsync() { self.pc = new RTCPeerConnection(null); + // To keep api consistent between player and publisher. + // @see https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/addStream#Migrating_to_addTrack + // @see https://webrtc.org/getting-started/media-devices + self.stream = new MediaStream(); + return self; } @@ -324,8 +339,12 @@ function SrsRtcPlayerAsync() { self.pc = null; }; - // The callback when got remote stream. - self.onaddstream = function (event) {}; + // The callback when got remote track. + // Note that the onaddstream is deprecated, @see https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/onaddstream + self.ontrack = function (event) { + // https://webrtc.org/getting-started/remote-streams + self.stream.addTrack(event.track); + }; // Internal APIs. self.__internal = { @@ -469,9 +488,14 @@ function SrsRtcPlayerAsync() { }; self.pc = new RTCPeerConnection(null); - self.pc.onaddstream = function (event) { - if (self.onaddstream) { - self.onaddstream(event); + + // Create a stream to add track to the stream, @see https://webrtc.org/getting-started/remote-streams + self.stream = new MediaStream(); + + // https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/ontrack + self.pc.ontrack = function(event) { + if (self.ontrack) { + self.ontrack(event); } }; @@ -483,7 +507,8 @@ function SrsRtcPlayerAsync() { function SrsRtcFormatSenders(senders, kind) { var codecs = []; senders.forEach(function (sender) { - sender.getParameters().codecs.forEach(function(c) { + var params = sender.getParameters(); + params && params.codecs && params.codecs.forEach(function(c) { if (kind && sender.track.kind !== kind) { return; } diff --git a/trunk/3rdparty/signaling/www/demos/one2one.html b/trunk/3rdparty/signaling/www/demos/one2one.html index 6271e0511..5bef9a4ba 100644 --- a/trunk/3rdparty/signaling/www/demos/one2one.html +++ b/trunk/3rdparty/signaling/www/demos/one2one.html @@ -22,7 +22,7 @@ SRS