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:
parent
c5c0a3e1b0
commit
37c9066636
5 changed files with 41 additions and 24 deletions
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue