Skip to content

Commit 45bb0a8

Browse files
authored
Merge pull request #9 from red5pro/sdk/15.0.0
sdk: v15.0.0
2 parents 33d6144 + b1913de commit 45bb0a8

File tree

90 files changed

+9826
-2377
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+9826
-2377
lines changed

CHANGES.md

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
# Changes
22

3+
## 15.0.0
4+
5+
**ALERT: Breaking Changes**
6+
7+
- feat: Removal of WebSocket based clients, `RTCPublisher`, `RTCSubscriber` and `RTCConferenceParticipant`
8+
- feat: WHIP/WHEP clients become main players: `WHIPClient` and `WHEPClient`
9+
- feat: Complete rewrite of SDK in `TypeScript` - allowing for types available in module installation.
10+
311
## 14.3.0
412

513
- fix: viewless subscriber/whep response to metadata (Todd Anderson)
@@ -38,12 +46,13 @@
3846
- Fix for connectionParams tacked on WHIP/WHEP calls. (Todd Anderson)
3947
- Fix for Firefox issue with Bundle order (Todd Anderson)
4048

41-
> The issue was that the offer provided by the server has a BUNDLE order of 0 1 2. When the WHEP client set that as their remote SDP and generated an offer,
42-
> the BUNDLE order changed to 2 1 0 in the answer SDP. This would cause
43-
> subscription issues and non-existant candidates.
49+
> The issue was that the offer provided by the server has a BUNDLE order of 0 1
50+
> 2. When the WHEP client set that as their remote SDP and generated an offer,
51+
> the BUNDLE order changed to 2 1 0 in the answer SDP. This would cause
52+
> subscription issues and non-existant candidates.
4453
45-
> Solution was the munge in the incoming offer BUNDLE line order to that of the
46-
> answer.
54+
> Solution was the munge in the incoming offer BUNDLE line order to that of the
55+
> answer.
4756
4857
- Using host query param when Location provided to WHIP/WHEP clients. (Todd Anderson)
4958
- Fix for live seek fullURL switching. (Todd Anderson)
@@ -63,7 +72,7 @@
6372
- using Hls.js fallback for Safari and seek feature. (bustardcelly)
6473
- Allow playback on scrub when unpublish (bustardcelly)
6574

66-
> If the live stream becomes unpublished, but the video has been scrubbed to VOD time segment, then we want to allow for playback until the end of the live stream termination.
75+
> If the live stream becomes unpublished, but the video has been scrubbed to VOD time segment, then we want to allow for playback until the end of the live stream termination.
6776
6877
## 10.6.0
6978

@@ -116,16 +125,16 @@
116125
- Fix for flash stalled playback. (bustardcelly)
117126
- Added notifications for RTCPeerConnection open event. (bustardcelly)
118127

119-
> This will allow for clients to recognize when they can start using peer connection APIs such as mute/unmute.
128+
> This will allow for clients to recognize when they can start using peer connection APIs such as mute/unmute.
120129
121130
- fix for HLS socket authentication failure capture. (bustardcelly)
122131
- Fix for Safari Publisher issue. (bustardcelly)
123132

124-
> When `gUM` returns with `video` track listed before `audio`, there is an issue on delivering the media to the server. Most likely due to mismatched candidates.
133+
> When `gUM` returns with `video` track listed before `audio`, there is an issue on delivering the media to the server. Most likely due to mismatched candidates.
125134
126135
- Fixed improper spelling of `productInstallUrl` config option. (bustardcelly)
127136

128-
> Is now `productInstallURL` for both rtmp publisher and subscriber.
137+
> Is now `productInstallURL` for both rtmp publisher and subscriber.
129138
130139
- fix for unpublish not resolving if not currently publishing. (bustardcelly)
131140
- API update to allow for providing MediaStream for publish to bypass gUM in SDK internally. (bustardcelly)
@@ -145,9 +154,9 @@
145154
- fix for bandwidth inject in latest chrome browser. (bustardcelly)
146155
- adding notification and retry support for autoplay restriction of subscribers. (bustardcelly)
147156

148-
> - WebRTC, RTMP and HLS Subscriber support
149-
> - muteOnAutoplayRestriction configuration property added
150-
> - Additional subscriber events for client-side notifications of autoplay restrictions
157+
> * WebRTC, RTMP and HLS Subscriber support
158+
> * muteOnAutoplayRestriction configuration property added
159+
> * Additional subscriber events for client-side notifications of autoplay restrictions
151160
152161
- allowing for decoupled socket for sharedobject connections. (bustardcelly)
153162

@@ -168,10 +177,10 @@
168177
- fix for DOM cleanup on unsubscribe. (bustardcelly)
169178
- Adding `rtcConfiguration` support (bustardcelly)
170179

171-
> - WebRTC Publisher
172-
> - WebRTC Subscriber
173-
> - defaults to `iceServers` if rtcConfiguration is undefined
174-
> - Provides a default rtcConfiguration
180+
> * WebRTC Publisher
181+
> * WebRTC Subscriber
182+
> * defaults to `iceServers` if rtcConfiguration is undefined
183+
> * Provides a default rtcConfiguration
175184
176185
## 5.2.0
177186

@@ -183,8 +192,8 @@
183192
- remove of duplicate event handler. (bustardcelly)
184193
- Adding check for empty candidate from server (bustardcelly)
185194

186-
> - Server at times (depending on client) will send a `candidate` object as empty during the negotiation process.
187-
> - A new event type has been added to notify listeners of this empty candidate
195+
> * Server at times (depending on client) will send a `candidate` object as empty during the negotiation process.
196+
> * A new event type has been added to notify listeners of this empty candidate
188197
189198
- Pub/Sub support for mobile device orientation recognition. (bustardcelly)
190199

@@ -193,7 +202,7 @@
193202
- removing onbeforeunload hook to dismantle sockets. (bustardcelly)
194203
- Allowing for auth/validation on HLS Subscribers (bustardcelly)
195204

196-
> Enabling auth/validation using connectionParam options on HLS Subscribers. This will internally attempt to make a connection on a WebSocket using the connection parameters. If the socket is opened, it is considered successful validation. If rejected, the client is shutdown.
205+
> Enabling auth/validation using connectionParam options on HLS Subscribers. This will internally attempt to make a connection on a WebSocket using the connection parameters. If the socket is opened, it is considered successful validation. If rejected, the client is shutdown.
197206
198207
- fix for mutiple property updates on shared object integration. (bustardcelly)
199208
- offload translation logic for orientation to focus on dynamic layout updates. (bustardcelly)
@@ -202,8 +211,8 @@
202211
- removal of unnecessary bandwidth config prop on subscribers. (bustardcelly)
203212
- Exposing autoLayoutOrientation (bustardcelly)
204213

205-
> Defaulted to true.
206-
> When set to false, it is up to the developer to assign transitions as related to orientation of broadcasts.
214+
> Defaulted to true.
215+
> When set to false, it is up to the developer to assign transitions as related to orientation of broadcasts.
207216
208217
## 4.5.0
209218

@@ -264,6 +273,7 @@
264273

265274
## 3.4.3
266275

276+
267277
- fix for test of `srcObject` in video element. (bustardcelly)
268278
- fix for subscriber.stop event dispatch. (bustardcelly)
269279

@@ -273,10 +283,12 @@
273283
- offloading subscriber start event to websocket notification. (bustardcelly)
274284
- Update for API change in browsers. (bustardcelly)
275285

276-
Though latest adapter.js should handle, adding for legacy and new browsers.
286+
Though latest adapter.js should handle, adding for legacy and new browsers.
287+
277288

278289
## 3.4.0
279290

291+
280292
## 3.3.0
281293

282294
- using std camera sizes for RPRO-3787 (bustardcelly)
@@ -291,3 +303,4 @@
291303

292304
- proper removal of child in flash embed. (bustardcelly)
293305
- support for IE and remove element on flash fallback. (bustardcelly)
306+

CONFERENCE_PARTICIPANT_README.md

Lines changed: 0 additions & 109 deletions
This file was deleted.

MIGRATION_GUIDE.md

Lines changed: 57 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<h3 align="center">
2-
<img src="assets/red5pro_logo.png" alt="Red5 Pro Logo" />
2+
<img src="assets/Red5_Truetime_black.png" alt="Red5 Pro Logo" height="65" />
33
</h3>
44
<p align="center">
5-
<a href="WHIP_WHEP_README.md">WHIP/WHEP</a> &bull;
6-
<a href="PUBLISHER_README.md">publisher</a> &bull;
7-
<a href="SUBSCRIBER_README.md">subscriber</a> &bull;
5+
<a href="README.md">Quick Start</a> &bull;
6+
<a href="docs/whip-client.md">Publishing</a> &bull;
7+
<a href="docs/whep-client.md">Subscribing</a>
88
</p>
99

1010
---
@@ -13,6 +13,8 @@
1313

1414
This documentation serves as a guide in migrating client-side code where a breaking change to the API has been made in a distribution.
1515

16+
- [14.x to 15.0.0](#migrating-from-14x-to-1500)
17+
- [13.x to 14.0.0](#migrating-from-13x-to-1400)
1618
- [12.x to 13.0.0](#migrating-from-12x-to-1300)
1719
- [10.x to 11.0.0](#migrating-from-10x-to-1100)
1820
- [8.0.0 to 9.1.0](#migrating-from-800-to-910)
@@ -22,6 +24,54 @@ This documentation serves as a guide in migrating client-side code where a break
2224
- [4.0.0 to 5.0.0](#migrating-from-400-to-500)
2325
- [3.5.0 to 4.0.0](#migrating-from-350-to-400)
2426

27+
# Migrating from `14.x` to `15.0.0`
28+
29+
**ALERT: Breaking Changes**
30+
31+
The `15.0.0` release of the Red5 Pro WebRTC SDK is a complete rewrite of the SDK! Developed in TypeScript from the ground-up, we eliminated a lot of cruft and APIs that had become obsolete and deprecated over the years.
32+
33+
With the slimming-down approach to the SDK also came the major breaking change of removing the WebSocket based clients: `RTCPublisher` and `RTCSubscriber`. As such, the clients introduced in the `11.0.0` release of the SDK are now the main actors and should be exclusively used: `WHIPClient` and `WHEPClient`.
34+
35+
The [WebRTC-HTTP ingestion](https://www.ietf.org/archive/id/draft-ietf-wish-whip-01.html)(WHIP) and [WebRTC-HTTP egress](https://www.ietf.org/archive/id/draft-murillo-whep-00.html)(WHEP) protocols provide the ability to negotation and establish a connection using HTTP/S requests. This removes the requirement for a WebSocket, which historically has been used for the role of negotiation and connection.
36+
37+
> Not only that, but their connection times are blazingly fast!
38+
39+
If you have already been using the `WHIPClient` and `WHEPClient` from the Red5 Pro WebRTC SDK, you shouldn't find any hiccups and will not need to update anything - simply enjoy the benefits of a slimmer SDK and the inclusion of types!
40+
41+
If you have been using the WebSocket-based `RTCPublisher` and `RTCSubscriber` clients, we have hopefully made it painless enough to simply swap out that instantiation with their corresponding WHIP/WHEP client - the initialization and API is all the same.
42+
43+
For example, if you were previously establishing a publisher as such:
44+
45+
```js
46+
const config = {
47+
host: 'myred5.cloud',
48+
streamName: 'mystream'
49+
}
50+
const publisher = new RTCPublisher()
51+
publisher.on('*', event => console.log(event))
52+
await publisher.init(config)
53+
await publisher.publish()
54+
```
55+
56+
You can simply swap over to using the `WHEPClient` like so:
57+
58+
```js
59+
const config = {
60+
host: 'myred5.cloud',
61+
streamName: 'mystream'
62+
}
63+
const publisher = new WHIPClient()
64+
publisher.on('*', event => console.log(event))
65+
await publisher.init(config)
66+
await publisher.publish()
67+
```
68+
69+
> The same is true for moving from `RTCSubscriber` to `WHEPClient`!
70+
71+
# Migrating from `13.x` to `14.0.0`
72+
73+
Though the version number shows a major change, it was more to be in line with the semver of the Red5 Pro Server release. _No breaking changes._
74+
2575
# Migrating from `12.x` to `13.0.0`
2676

2777
The SDK release of `13.0.0` has additional configuration requirements when integrating with Stream Manager 2.0 deployments. This release sees the introduction of the `endpoint` initialization configuration on which you provide the full URL path to the Stream Manager 2.0 proxy. The proxy will handle directing the clients to the target Origin and Edge nodes.
@@ -30,9 +80,8 @@ The `endpoint` init config param is to be used in tandem with a `nodeGroup` conn
3080

3181
More Information related to this configuration is detailed in the following documents:
3282

33-
* [WHIP/WHEP] (./WHIP_WHEP_README.md#stream-manager-20)
34-
* [RTCPublisher] (./SUBSCRIBER_README.md#stream-manager-20)
35-
* [RTCSubscriber] (./PUBLISHER_README.md#stream-manager-20)
83+
* [WHIPClient](docs/whip-client.md#stream-manager-20)
84+
* [WHEPClient](docs/whep-client.md#stream-manager-20)
3685

3786
> [NOTE] SharedObject support has been removed in 13.0.0
3887
@@ -42,7 +91,7 @@ The SDK release of `11.0.0` provides the capability of utilizing the [WHIP](http
4291

4392
The [WebRTC-HTTP ingestion](https://www.ietf.org/archive/id/draft-ietf-wish-whip-01.html)(WHIP) and [WebRTC-HTTP egress](https://www.ietf.org/archive/id/draft-murillo-whep-00.html)(WHEP) protocols provide the ability to negotation and establish a connection using HTTP/S requests. This removes the requirement for a WebSocket, which historically has been used for the role of negotiation and connection.
4493

45-
> Read more [in the WHIP/WHEP documentation](WHIP_WHEP_README.md)!
94+
> Read more about [WHIPClient](docs/whip-client.md) and [WHEPClient](docs/whep-client.md).
4695
4796
# Migrating from `8.0.0` to `9.1.0`
4897

0 commit comments

Comments
 (0)