@vindral/web-sdk 4.7.1-1-g9d41bb8aa → 4.7.1-10-g16084e8a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.7.1-1-g9d41bb8aa",
2
+ "version": "4.7.1-10-g16084e8a",
3
3
  "name": "@vindral/web-sdk",
4
4
  "main": "./legacy.umd.js",
5
5
  "module": "./legacy.es.js",
package/player.d.ts CHANGED
@@ -402,6 +402,17 @@ interface Options {
402
402
  logShippingEnabled?: boolean;
403
403
  statsShippingEnabled?: boolean;
404
404
  webtransportEnabled?: boolean;
405
+ /**
406
+ * Use WebTransport for MoQ on browsers where it is unstable. When false, these connect MoQ over
407
+ * WebSocket directly. Unstable browsers:
408
+ * - Safari and every iOS/iPadOS browser (all WebKit): far more buffering than over WebSocket.
409
+ * - Samsung Internet on Tizen Smart TVs: WebTransport connects fail and fall back to WebSocket.
410
+ *
411
+ * Has no effect when webtransportEnabled is false.
412
+ *
413
+ * Default is false.
414
+ */
415
+ unstableWebtransportEnabled?: boolean;
405
416
  /**
406
417
  * Enable wake lock for iOS devices.
407
418
  * The wake lock requires that the audio has been activated at least once for the instance, othwerwise it will not work.
@@ -741,7 +752,7 @@ declare class ApiClient {
741
752
  private toChannels;
742
753
  private toChannel;
743
754
  }
744
- type TransportSelectionReason = "unsupported" | "disabled" | "unavailable" | "fallback";
755
+ type TransportSelectionReason = "unsupported" | "disabled" | "disabled_unstable_browser" | "unavailable" | "fallback";
745
756
  interface AdaptivityStatistics {
746
757
  /**
747
758
  * True if adaptive bitrate (ABR) is enabled.
@@ -1623,6 +1634,7 @@ interface ConnectionStatistics {
1623
1634
  * When connectionProtocol is "moq_ws", indicates why WebSocket was used instead of WebTransport.
1624
1635
  * - "unsupported": browser doesn't support WebTransport
1625
1636
  * - "disabled": webtransportEnabled option is false
1637
+ * - "disabled_unstable_browser": browser with unstable WebTransport, and unstableWebtransportEnabled option is false
1626
1638
  * - "unavailable": edge did not offer a WebTransport endpoint
1627
1639
  * - "fallback": WebTransport was attempted but failed or timed out
1628
1640
  * Unset while reconnecting; once disconnected, the last connection's.
@@ -2052,6 +2064,7 @@ export declare class Controller extends HTMLElement {
2052
2064
  "drm-playready-video-robustness",
2053
2065
  "drm-playready-audio-robustness",
2054
2066
  "webtransport-enabled",
2067
+ "unstable-webtransport-enabled",
2055
2068
  "webcodecs-hardware-acceleration",
2056
2069
  "decoders",
2057
2070
  "offscreen-canvas-enabled",
@@ -2153,7 +2166,7 @@ export declare class PlayButton extends VindralButton {
2153
2166
  */
2154
2167
  export declare class Player extends HTMLElement {
2155
2168
  #private;
2156
- static observedAttributes: readonly ("title" | "offline" | "advanced" | "poster" | "language" | "channels" | "buffering" | "paused" | "volume" | "muted" | "duration" | "user-interacting" | "is-casting" | "cast-available" | "cast-receiver-name" | "ui-locked" | "hide-ui-on-pause" | "is-fullscreen" | "is-fullscreen-fallback" | "rendition-levels" | "rendition-level" | "max-video-bit-rate" | "max-initial-bit-rate" | "abr-enabled" | "size-based-resolution-cap-enabled" | "channel-id" | "channel-group-id" | "pip-available" | "is-pip" | "airplay-available" | "is-airplaying" | "media" | "languages" | "text-tracks" | "text-track" | "needs-user-input-video" | "needs-user-input-audio" | "authentication-token" | "volume-level" | "cast" | "airplay" | "pip" | "fullscreen" | "double-click-fullscreen" | "vu-meter" | "timeshift" | "timeshift-position" | "timeline-markers" | "poster-src" | "debug-panel-open" | "target-buffer-time" | "drift" | "playback-latency" | "connection-state" | "url" | "decoders" | "min-buffer-time" | "max-buffer-time" | "edge-url" | "cast-receiver-id" | "cast-background" | "log-level" | "max-size" | "max-audio-bit-rate" | "burst-enabled" | "mse-enabled" | "mse-opus-enabled" | "background-play-enabled" | "ios-background-play-enabled" | "media-session-enabled" | "ios-wake-lock-enabled" | "stream-to-media-element-enabled" | "ios-media-element-enabled" | "telemetry-enabled" | "video-codecs" | "drm-headers" | "drm-queryparams" | "drm-widevine-video-robustness" | "drm-widevine-audio-robustness" | "drm-playready-video-robustness" | "drm-playready-audio-robustness" | "webtransport-enabled" | "webcodecs-hardware-acceleration" | "offscreen-canvas-enabled" | "reconnect-retries" | "auto-instance-enabled" | "advanced-rendition-menu-enabled" | "refresh-poster-enabled" | "stream-poll-enabled")[];
2169
+ static observedAttributes: readonly ("title" | "offline" | "advanced" | "poster" | "language" | "channels" | "buffering" | "paused" | "volume" | "muted" | "duration" | "user-interacting" | "is-casting" | "cast-available" | "cast-receiver-name" | "ui-locked" | "hide-ui-on-pause" | "is-fullscreen" | "is-fullscreen-fallback" | "rendition-levels" | "rendition-level" | "max-video-bit-rate" | "max-initial-bit-rate" | "abr-enabled" | "size-based-resolution-cap-enabled" | "channel-id" | "channel-group-id" | "pip-available" | "is-pip" | "airplay-available" | "is-airplaying" | "media" | "languages" | "text-tracks" | "text-track" | "needs-user-input-video" | "needs-user-input-audio" | "authentication-token" | "volume-level" | "cast" | "airplay" | "pip" | "fullscreen" | "double-click-fullscreen" | "vu-meter" | "timeshift" | "timeshift-position" | "timeline-markers" | "poster-src" | "debug-panel-open" | "target-buffer-time" | "drift" | "playback-latency" | "connection-state" | "url" | "decoders" | "min-buffer-time" | "max-buffer-time" | "edge-url" | "cast-receiver-id" | "cast-background" | "log-level" | "max-size" | "max-audio-bit-rate" | "burst-enabled" | "mse-enabled" | "mse-opus-enabled" | "background-play-enabled" | "ios-background-play-enabled" | "media-session-enabled" | "ios-wake-lock-enabled" | "stream-to-media-element-enabled" | "ios-media-element-enabled" | "telemetry-enabled" | "video-codecs" | "drm-headers" | "drm-queryparams" | "drm-widevine-video-robustness" | "drm-widevine-audio-robustness" | "drm-playready-video-robustness" | "drm-playready-audio-robustness" | "webtransport-enabled" | "unstable-webtransport-enabled" | "webcodecs-hardware-acceleration" | "offscreen-canvas-enabled" | "reconnect-retries" | "auto-instance-enabled" | "advanced-rendition-menu-enabled" | "refresh-poster-enabled" | "stream-poll-enabled")[];
2157
2170
  constructor();
2158
2171
  connectedCallback(): void;
2159
2172
  disconnectedCallback(): void;
package/player.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import { t as e } from "./XEQIIc9P.js";
2
- import "./DKr8WNnY.js";
3
- import { t } from "./DIsNeRuI.js";
2
+ import "./BVBH0VM9.js";
3
+ import { t } from "./DjZxyh_V.js";
4
4
  export { t as registerComponents, e as registerDebugComponents };
package/react.d.ts CHANGED
@@ -404,6 +404,17 @@ interface Options {
404
404
  logShippingEnabled?: boolean;
405
405
  statsShippingEnabled?: boolean;
406
406
  webtransportEnabled?: boolean;
407
+ /**
408
+ * Use WebTransport for MoQ on browsers where it is unstable. When false, these connect MoQ over
409
+ * WebSocket directly. Unstable browsers:
410
+ * - Safari and every iOS/iPadOS browser (all WebKit): far more buffering than over WebSocket.
411
+ * - Samsung Internet on Tizen Smart TVs: WebTransport connects fail and fall back to WebSocket.
412
+ *
413
+ * Has no effect when webtransportEnabled is false.
414
+ *
415
+ * Default is false.
416
+ */
417
+ unstableWebtransportEnabled?: boolean;
407
418
  /**
408
419
  * Enable wake lock for iOS devices.
409
420
  * The wake lock requires that the audio has been activated at least once for the instance, othwerwise it will not work.
@@ -743,7 +754,7 @@ declare class ApiClient {
743
754
  private toChannels;
744
755
  private toChannel;
745
756
  }
746
- type TransportSelectionReason = "unsupported" | "disabled" | "unavailable" | "fallback";
757
+ type TransportSelectionReason = "unsupported" | "disabled" | "disabled_unstable_browser" | "unavailable" | "fallback";
747
758
  interface AdaptivityStatistics {
748
759
  /**
749
760
  * True if adaptive bitrate (ABR) is enabled.
@@ -1625,6 +1636,7 @@ interface ConnectionStatistics {
1625
1636
  * When connectionProtocol is "moq_ws", indicates why WebSocket was used instead of WebTransport.
1626
1637
  * - "unsupported": browser doesn't support WebTransport
1627
1638
  * - "disabled": webtransportEnabled option is false
1639
+ * - "disabled_unstable_browser": browser with unstable WebTransport, and unstableWebtransportEnabled option is false
1628
1640
  * - "unavailable": edge did not offer a WebTransport endpoint
1629
1641
  * - "fallback": WebTransport was attempted but failed or timed out
1630
1642
  * Unset while reconnecting; once disconnected, the last connection's.
@@ -2061,6 +2073,7 @@ declare class Controller extends HTMLElement {
2061
2073
  "drm-playready-video-robustness",
2062
2074
  "drm-playready-audio-robustness",
2063
2075
  "webtransport-enabled",
2076
+ "unstable-webtransport-enabled",
2064
2077
  "webcodecs-hardware-acceleration",
2065
2078
  "decoders",
2066
2079
  "offscreen-canvas-enabled",
@@ -2162,7 +2175,7 @@ declare class PlayButton extends VindralButton {
2162
2175
  type PlayerAttributes = (typeof Player.observedAttributes)[number];
2163
2176
  declare class Player extends HTMLElement {
2164
2177
  #private;
2165
- static observedAttributes: readonly ("title" | "offline" | "advanced" | "poster" | "language" | "channels" | "buffering" | "paused" | "volume" | "muted" | "duration" | "user-interacting" | "is-casting" | "cast-available" | "cast-receiver-name" | "ui-locked" | "hide-ui-on-pause" | "is-fullscreen" | "is-fullscreen-fallback" | "rendition-levels" | "rendition-level" | "max-video-bit-rate" | "max-initial-bit-rate" | "abr-enabled" | "size-based-resolution-cap-enabled" | "channel-id" | "channel-group-id" | "pip-available" | "is-pip" | "airplay-available" | "is-airplaying" | "media" | "languages" | "text-tracks" | "text-track" | "needs-user-input-video" | "needs-user-input-audio" | "authentication-token" | "volume-level" | "cast" | "airplay" | "pip" | "fullscreen" | "double-click-fullscreen" | "vu-meter" | "timeshift" | "timeshift-position" | "timeline-markers" | "poster-src" | "debug-panel-open" | "target-buffer-time" | "drift" | "playback-latency" | "connection-state" | "url" | "decoders" | "min-buffer-time" | "max-buffer-time" | "edge-url" | "cast-receiver-id" | "cast-background" | "log-level" | "max-size" | "max-audio-bit-rate" | "burst-enabled" | "mse-enabled" | "mse-opus-enabled" | "background-play-enabled" | "ios-background-play-enabled" | "media-session-enabled" | "ios-wake-lock-enabled" | "stream-to-media-element-enabled" | "ios-media-element-enabled" | "telemetry-enabled" | "video-codecs" | "drm-headers" | "drm-queryparams" | "drm-widevine-video-robustness" | "drm-widevine-audio-robustness" | "drm-playready-video-robustness" | "drm-playready-audio-robustness" | "webtransport-enabled" | "webcodecs-hardware-acceleration" | "offscreen-canvas-enabled" | "reconnect-retries" | "auto-instance-enabled" | "advanced-rendition-menu-enabled" | "refresh-poster-enabled" | "stream-poll-enabled")[];
2178
+ static observedAttributes: readonly ("title" | "offline" | "advanced" | "poster" | "language" | "channels" | "buffering" | "paused" | "volume" | "muted" | "duration" | "user-interacting" | "is-casting" | "cast-available" | "cast-receiver-name" | "ui-locked" | "hide-ui-on-pause" | "is-fullscreen" | "is-fullscreen-fallback" | "rendition-levels" | "rendition-level" | "max-video-bit-rate" | "max-initial-bit-rate" | "abr-enabled" | "size-based-resolution-cap-enabled" | "channel-id" | "channel-group-id" | "pip-available" | "is-pip" | "airplay-available" | "is-airplaying" | "media" | "languages" | "text-tracks" | "text-track" | "needs-user-input-video" | "needs-user-input-audio" | "authentication-token" | "volume-level" | "cast" | "airplay" | "pip" | "fullscreen" | "double-click-fullscreen" | "vu-meter" | "timeshift" | "timeshift-position" | "timeline-markers" | "poster-src" | "debug-panel-open" | "target-buffer-time" | "drift" | "playback-latency" | "connection-state" | "url" | "decoders" | "min-buffer-time" | "max-buffer-time" | "edge-url" | "cast-receiver-id" | "cast-background" | "log-level" | "max-size" | "max-audio-bit-rate" | "burst-enabled" | "mse-enabled" | "mse-opus-enabled" | "background-play-enabled" | "ios-background-play-enabled" | "media-session-enabled" | "ios-wake-lock-enabled" | "stream-to-media-element-enabled" | "ios-media-element-enabled" | "telemetry-enabled" | "video-codecs" | "drm-headers" | "drm-queryparams" | "drm-widevine-video-robustness" | "drm-widevine-audio-robustness" | "drm-playready-video-robustness" | "drm-playready-audio-robustness" | "webtransport-enabled" | "unstable-webtransport-enabled" | "webcodecs-hardware-acceleration" | "offscreen-canvas-enabled" | "reconnect-retries" | "auto-instance-enabled" | "advanced-rendition-menu-enabled" | "refresh-poster-enabled" | "stream-poll-enabled")[];
2166
2179
  constructor();
2167
2180
  connectedCallback(): void;
2168
2181
  disconnectedCallback(): void;
@@ -1,5 +1,5 @@
1
- import "./DKr8WNnY.js";
2
- import { t as e } from "./DIsNeRuI.js";
1
+ import "./BVBH0VM9.js";
2
+ import { t as e } from "./DjZxyh_V.js";
3
3
  //#region src/vindral-player-component.ts
4
4
  e();
5
5
  //#endregion