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.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-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
|
||||
|
|
|
@ -62,6 +62,9 @@ function SrsRtcPublisherAsync() {
|
|||
// @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 +97,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 +107,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 +256,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 +332,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 +481,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);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -73,15 +73,14 @@
|
|||
if (sdk) {
|
||||
sdk.close();
|
||||
}
|
||||
|
||||
sdk = new SrsRtcPlayerAsync();
|
||||
sdk.onaddstream = function (event) {
|
||||
console.log('Start play, event: ', event);
|
||||
$('#rtc_media_player').prop('srcObject', event.stream);
|
||||
};
|
||||
|
||||
// For example:
|
||||
// webrtc://r.ossrs.net/live/livestream
|
||||
// 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); };
|
||||
|
||||
// For example: webrtc://r.ossrs.net/live/livestream
|
||||
var url = $("#txt_url").val();
|
||||
sdk.play(url).then(function(session){
|
||||
$('#sessionid').html(session.sessionid);
|
||||
|
|
|
@ -78,12 +78,13 @@
|
|||
if (sdk) {
|
||||
sdk.close();
|
||||
}
|
||||
|
||||
sdk = new SrsRtcPublisherAsync();
|
||||
sdk.onaddstream = function (event) {
|
||||
console.log('Start publish, event: ', event);
|
||||
$('#rtc_media_player').prop('srcObject', event.stream);
|
||||
};
|
||||
|
||||
// User should set the stream when publish is done, @see https://webrtc.org/getting-started/media-devices
|
||||
// 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
|
||||
sdk.pc.onicegatheringstatechange = function (event) {
|
||||
|
@ -93,8 +94,7 @@
|
|||
}
|
||||
};
|
||||
|
||||
// For example:
|
||||
// webrtc://r.ossrs.net/live/livestream
|
||||
// For example: webrtc://r.ossrs.net/live/livestream
|
||||
var url = $("#txt_url").val();
|
||||
sdk.publish(url).then(function(session){
|
||||
$('#sessionid').html(session.sessionid);
|
||||
|
|
|
@ -26,6 +26,6 @@
|
|||
|
||||
#define VERSION_MAJOR 4
|
||||
#define VERSION_MINOR 0
|
||||
#define VERSION_REVISION 119
|
||||
#define VERSION_REVISION 120
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue