1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-15 04:42:04 +00:00

RTC: Refine sdk, migrate from onaddstream to ontrack. 4.0.120

This commit is contained in:
winlin 2021-05-21 16:57:32 +08:00
parent c5c0a3e1b0
commit 37c9066636
5 changed files with 41 additions and 24 deletions

View file

@ -174,6 +174,7 @@ The ports used by SRS:
## V4 changes ## V4 changes
* v4.0, 2021-05-21, RTC: Refine sdk, migrate from onaddstream to ontrack. 4.0.120
* v4.0, 2021-05-21, Tools: Refine configure options. 4.0.119 * v4.0, 2021-05-21, Tools: Refine configure options. 4.0.119
* v4.0, 2021-05-20, Fix build fail when disable RTC by --rtc=off. 4.0.118 * v4.0, 2021-05-20, Fix build fail when disable RTC by --rtc=off. 4.0.118
* v4.0, 2021-05-19, Fix [#2362][bug #2362]: Allow WebRTC to play before publishing, for GB28181 as such. 4.0.117 * v4.0, 2021-05-19, Fix [#2362][bug #2362]: Allow WebRTC to play before publishing, for GB28181 as such. 4.0.117

View file

@ -62,6 +62,9 @@ function SrsRtcPublisherAsync() {
// @see https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/addStream#Migrating_to_addTrack // @see https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/addStream#Migrating_to_addTrack
stream.getTracks().forEach(function (track) { stream.getTracks().forEach(function (track) {
self.pc.addTrack(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(); var offer = await self.pc.createOffer();
@ -94,9 +97,6 @@ function SrsRtcPublisherAsync() {
); );
session.simulator = conf.schema + '//' + conf.urlObject.server + ':' + conf.port + '/rtc/v1/nack/'; 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; return session;
}; };
@ -107,7 +107,10 @@ function SrsRtcPublisherAsync() {
}; };
// The callback when got local stream. // 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. // Internal APIs.
@ -253,6 +256,11 @@ function SrsRtcPublisherAsync() {
self.pc = new RTCPeerConnection(null); 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; return self;
} }
@ -324,8 +332,12 @@ function SrsRtcPlayerAsync() {
self.pc = null; self.pc = null;
}; };
// The callback when got remote stream. // The callback when got remote track.
self.onaddstream = function (event) {}; // 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. // Internal APIs.
self.__internal = { self.__internal = {
@ -469,9 +481,14 @@ function SrsRtcPlayerAsync() {
}; };
self.pc = new RTCPeerConnection(null); self.pc = new RTCPeerConnection(null);
self.pc.onaddstream = function (event) {
if (self.onaddstream) { // Create a stream to add track to the stream, @see https://webrtc.org/getting-started/remote-streams
self.onaddstream(event); 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);
} }
}; };

View file

@ -73,15 +73,14 @@
if (sdk) { if (sdk) {
sdk.close(); sdk.close();
} }
sdk = new SrsRtcPlayerAsync(); sdk = new SrsRtcPlayerAsync();
sdk.onaddstream = function (event) {
console.log('Start play, event: ', event);
$('#rtc_media_player').prop('srcObject', event.stream);
};
// For example: // https://webrtc.org/getting-started/remote-streams
// webrtc://r.ossrs.net/live/livestream $('#rtc_media_player').prop('srcObject', sdk.stream);
// Optional callback, SDK will add track to stream.
// sdk.ontrack = function (event) { console.log('Got track', event); sdk.stream.addTrack(event.track); };
// For example: webrtc://r.ossrs.net/live/livestream
var url = $("#txt_url").val(); var url = $("#txt_url").val();
sdk.play(url).then(function(session){ sdk.play(url).then(function(session){
$('#sessionid').html(session.sessionid); $('#sessionid').html(session.sessionid);

View file

@ -78,12 +78,13 @@
if (sdk) { if (sdk) {
sdk.close(); sdk.close();
} }
sdk = new SrsRtcPublisherAsync(); sdk = new SrsRtcPublisherAsync();
sdk.onaddstream = function (event) {
console.log('Start publish, event: ', event); // User should set the stream when publish is done, @see https://webrtc.org/getting-started/media-devices
$('#rtc_media_player').prop('srcObject', event.stream); // However SRS SDK provides a consist API like https://webrtc.org/getting-started/remote-streams
}; $('#rtc_media_player').prop('srcObject', sdk.stream);
// Optional callback, SDK will add track to stream.
// sdk.ontrack = function (event) { console.log('Got track', event); sdk.stream.addTrack(event.track); };
// https://developer.mozilla.org/en-US/docs/Web/Media/Formats/WebRTC_codecs#getting_the_supported_codecs // https://developer.mozilla.org/en-US/docs/Web/Media/Formats/WebRTC_codecs#getting_the_supported_codecs
sdk.pc.onicegatheringstatechange = function (event) { sdk.pc.onicegatheringstatechange = function (event) {
@ -93,8 +94,7 @@
} }
}; };
// For example: // For example: webrtc://r.ossrs.net/live/livestream
// webrtc://r.ossrs.net/live/livestream
var url = $("#txt_url").val(); var url = $("#txt_url").val();
sdk.publish(url).then(function(session){ sdk.publish(url).then(function(session){
$('#sessionid').html(session.sessionid); $('#sessionid').html(session.sessionid);

View file

@ -26,6 +26,6 @@
#define VERSION_MAJOR 4 #define VERSION_MAJOR 4
#define VERSION_MINOR 0 #define VERSION_MINOR 0
#define VERSION_REVISION 119 #define VERSION_REVISION 120
#endif #endif