-
#533
c0aa640
Thanks @0xcadams! - Fix: fixed metrics to reportpreloadTime
as the time between connectingaddMediaMetrics
and the firstplay
event. -
Updated dependencies [
c0aa640
]:- @livepeer/core@3.1.16
-
#530
adbd11b
Thanks @0xcadams! - Fix: fix for metrics usingdisableProgressListener
where the metrics does not register aplaying
event. -
Updated dependencies [
adbd11b
]:- @livepeer/core@3.1.15
-
#526
3f0c10a
Thanks @0xcadams! - Fix: addedplaying
event listener toaddMediaMetrics
, in addition to the existingplay
event listener. -
Updated dependencies [
3f0c10a
]:- @livepeer/core@3.1.14
-
#521
6082120
Thanks @0xcadams! - Feature: added audio and video constraints to the Broadcast Root component. -
Updated dependencies [
6082120
]:- @livepeer/core@3.1.13
-
#518
95b9592
Thanks @0xcadams! - Fix: removedelement.load()
side effect from theaddEventListeners
function. -
Updated dependencies [
95b9592
]:- @livepeer/core@3.1.12
-
#515
922ff14
Thanks @0xcadams! - Feature: addeddisableProgressListener
toaddMediaMetrics
so progress events from an HTML5 video element can be ignored when monitoring for playing/paused. -
Updated dependencies [
922ff14
]:- @livepeer/core@3.1.11
-
#511
5da507e
Thanks @0xcadams! - Fix: fixed no-op localstorage when thestorage
prop is null. -
Updated dependencies [
5da507e
]:- @livepeer/core@3.1.10
-
#505
0875372
Thanks @0xcadams! - Feature: addedbackoff
andbackoffMax
to the Player, which defines the time which the Player waits before attempting, as well as the cap for exponential backoff./** * Controls the initial value for exponential backoff, in ms. Defaults to 500ms, which is subsequently multiplied by 2^n power on each error. */ backoff: number; /** * Controls the maximum backoff when an error is encountered, in ms. Defaults to 30s. */ backoffMax: number;
-
Updated dependencies [
0875372
]:- @livepeer/core@3.1.9
-
#498
511ae87
Thanks @0xcadams! - Fix: fixed the mouse interactions to not hide when a Radix Popover is open, and not flash when a user hovers over the video element. -
Updated dependencies [
511ae87
]:- @livepeer/core@3.1.8
-
#496
faf536b
Thanks @0xcadams! - Fix: added FLV mime typing to allow for FLV URLs to be passed intogetMediaMetrics
. -
Updated dependencies [
faf536b
]:- @livepeer/core@3.1.7
-
#494
b8220d9
Thanks @0xcadams! - Fix: changedgetUserMedia
to override to request video when both audio and video are disabled, so that the Broadcast doesn't get stuck in a pending state. -
#494
b8220d9
Thanks @0xcadams! - Fix: fixed issue withmuted
Video prop and volume getting out of sync. -
Updated dependencies [
b8220d9
,b8220d9
]:- @livepeer/core@3.1.6
-
#492
11bf3cc
Thanks @0xcadams! - Fix: addedplaybackId
prop toaddMediaMetrics
. -
Updated dependencies [
11bf3cc
]:- @livepeer/core@3.1.5
-
0b7d85b
Thanks @0xcadams! - Fix: fixes foraddMediaMetrics
to report metrics properly whenblob:...
or nosrc
is set on custom media players. -
Updated dependencies [
0b7d85b
]:- @livepeer/core@3.1.4
-
#489
d012808
Thanks @0xcadams! - Fix: fixed issue with JWT not being included headers for static assets. -
#487
8c066f1
Thanks @0xcadams! - Types: small fix for type usability foruseMediaContext
anduseBroadcastContext
. -
Updated dependencies [
d012808
,8c066f1
]:- @livepeer/core@3.1.3
-
#485
8ff0b19
Thanks @0xcadams! - Fix: usability fixes for muted state. -
Updated dependencies [
8ff0b19
]:- @livepeer/core@3.1.2
-
#483
5406f98
Thanks @0xcadams! - Fix: usability fixes for muted state. -
Updated dependencies [
5406f98
]:- @livepeer/core@3.1.1
- #481
44420a5
Thanks @0xcadams! - Fix: moved back totsup
frombunchee
for the build system, due to import issues across various projects.
-
#481
44420a5
Thanks @0xcadams! - Fix: fixed type entrypoints fornode
resolution. -
#481
44420a5
Thanks @0xcadams! - Fix: added backtypesVersions
for node module resolution. -
#481
44420a5
Thanks @0xcadams! - Fix: removedbrowser
entrypoint for web and react packages for maximummoduleResolution
compatibility. -
Updated dependencies [
44420a5
,44420a5
,44420a5
,44420a5
]:- @livepeer/core@3.1.0
-
4f0303c
Thanks @0xcadams! - Fix: added backtypesVersions
for node module resolution. -
Updated dependencies [
4f0303c
]:- @livepeer/core@3.1.0-next.3
-
bddfbdc
Thanks @0xcadams! - Fix: fixed type entrypoints fornode
resolution. -
Updated dependencies [
bddfbdc
]:- @livepeer/core@3.1.0-next.2
-
b618eb6
Thanks @0xcadams! - Fix: removedbrowser
entrypoint for web and react packages for maximummoduleResolution
compatibility. -
Updated dependencies [
b618eb6
]:- @livepeer/core@3.1.0-next.1
- #477
1e670ae
Thanks @github-actions! - Fix: moved back totsup
frombunchee
for the build system, due to import issues across various projects.
- Updated dependencies [
1e670ae
]:- @livepeer/core@3.1.0-next.0
-
#475
a922f9b
Thanks @0xcadams! - Feature: addedBroadcast.StatusIndicator
and movedLiveIndicator
as a Player-only primitive.The
LiveIndicator
was not providing an accurate representation of the stream state, andBroadcast.StatusIndicator
was added to represent the third possible state,pending
, which is when the stream is pending negotiation with the WebRTC WHIP endpoint.LiveIndicator
is nowPlayer.LiveIndicator
since this only applies to live/not-live playback. -
Updated dependencies [
a922f9b
]:- @livepeer/core@3.0.3
-
#472
89aec9c
Thanks @0xcadams! - Fix: addedhlsConfig
to<Player.Video />
,autohide
to<Controls />
, and miscellaneous fixes for player and broadcast. -
Updated dependencies [
89aec9c
]:- @livepeer/core@3.0.2
- #470
81ead35
Thanks @0xcadams! - Fix: fixed the interface for broadcasting (and player) to be vendor agnostic. This now usesgetIngest
similar to thegetSrc
for Player, which attempts to parse out a WHIP ingest URL. This has been tested against Cloudflare's WHIP/WHEP offering. - Updated dependencies [
81ead35
]:- @livepeer/core@3.0.1
- #459
8463de1
Thanks @0xcadams! - Major release: first preview release of the unstyled, composable<Player />
and<Broadcast />
primitives based on Radix UI.
This is a ground-up rewrite of most of the @livepeer/react
library. In this release, we had some problems we wanted to solve:
- The
<Player />
/<Broadcast />
components are not very composable. They essentially break with any type of customization. - They encapsulate a lot of application logic (fetching data from the backend, auto-upload, etc) and the Player pushes CORS API keys, which are not a good security practice and cause a lot of developer confusion.
- The styling is difficult and hard to rework as a developer (and not compatible with Server Components).
- The react native package is under-maintained and far behind the web player in terms of features/support.
- Break out the logic of the components to be more composable. Instead of a single
<Player />
, there is now a<Player.Root />
,<Player.Container />
,<Player.Video />
,<Player.LoadingIndicator />
,<Player.FullscreenTrigger />
,<Player.FullscreenIndicator />
, etc. Very similar to Radix, which we use under the hood.- This means that instead of one giant component with a lot of logic baked into it, we have a bunch of composable primitives which you can build your apps on top of. We hope you like it!
- This also brings us much closer to web standards - we don't want to hide the internals from you. You can pass props directly to the video element, like
poster
, and it will "just work" as expected. - We still provide a lot of auto-wiring for the components and event listeners - very similar to the previous versions.
- We removed all API data fetching on the Player (e.g. all of the hooks like
useCreateAsset
), and now provide helpers to use the newlivepeer
SDK with the React components.getSrc
takes in the response from the playback info endpoint and parses it into something the Player can understand.- The only web requests are for pure playback or broadcasting (WHEP/WHIP and metrics reporting) - there are no more API requests to Livepeer Studio from any components.
- This means that you do not need to configure a
LivepeerProvider
with an API key. Keep those keys on the backend.
- The components are now completely unstyled, and the docs will provide examples of how to style them similarly to how they were in the previous releases. You can copy-pasta and then tweak from there.
- We deprecated the React Native package, for now. It would have been a huge lift to bring it up to feature parity with the React package, and is less straightforward than web to do the WebRTC/HLS fallback and all of the advanced features in the React web package.
- We want to have first-class support for React Native in the future, but for now, we want to only ship software that we're 100% confident our users will benefit from.
- Composable components - all components are extremely narrow in their scope, and support the
asChild
pattern popularized by Radix UI. WhenasChild
is set to true, we will not render a default DOM element, instead cloning the part's child and passing it the props and behavior required to make it functional. - Automatic poster images - if you pass in the playback info response directly into
getSrc
, it will automatically parse the thumbnail image and pass it into theposter
for the video. - Resume progress on fallback - now, when an error happens during playback for any reason, we resume playback where it left off.
- BYOC - bring your own components.
useMediaContext
is now much easier to use - since the<Player.Root />
is now just a simple React Context provider, you can build out your own components inside of it which consume the video controller. We have some examples to help avoid the footgunning.
- We are dropping support for
autoUrlUpload
and the fallback to playing directly from IPFS. We understand some users rely on that, and we will work with them to provide docs for how to implement that outside of the player. - We moved to a new build system which includes
use client
anduse server
directives in the output. If you don't use React Server Components, this doesn't affect you. But this means that you can directly import the client components into a RSC and you don't need to wrap them.
-
#459
8463de1
Thanks @0xcadams! - Fix: fixed the broadcast experience to handle display media and included a settings popover in the demo Next.js app. -
#459
8463de1
Thanks @0xcadams! - Fix: small fixes for ARIA keyboard shortcuts, resizing CSS variables, permissions errors in broadcasting, and usability fixes. -
#459
8463de1
Thanks @0xcadams! - Fix: fixed syncing of MediaStream with audio/video enabled, UI tweaks, CSS variables for media width/height, and more. -
Updated dependencies [
8463de1
,8463de1
,8463de1
,8463de1
]:- @livepeer/core@3.0.0
-
#465
158f13f
Thanks @0xcadams! - Fix: small fixes for ARIA keyboard shortcuts, resizing CSS variables, permissions errors in broadcasting, and usability fixes. -
#463
cea94f5
Thanks @0xcadams! - Fix: fixed syncing of MediaStream with audio/video enabled, UI tweaks, CSS variables for media width/height, and more. -
Updated dependencies [
158f13f
,cea94f5
]:- @livepeer/core@3.0.0-next.2
-
#460
4847132
Thanks @0xcadams! - Fix: fixed the broadcast experience to handle display media and included a settings popover in the demo Next.js app. -
Updated dependencies [
4847132
]:- @livepeer/core@3.0.0-next.1
- #456
4669aaf
Thanks @0xcadams! - Major release: first preview release of the unstyled, composable<Player />
and<Broadcast />
primitives based on Radix UI.
This is a ground-up rewrite of most of the @livepeer/react
library. In this release, we had some problems we wanted to solve:
- The
<Player />
/<Broadcast />
components are not very composable. They essentially break with any type of customization. - They encapsulate a lot of application logic (fetching data from the backend, auto-upload, etc) and the Player pushes CORS API keys, which are not a good security practice and cause a lot of developer confusion.
- The styling is difficult and hard to rework as a developer (and not compatible with Server Components).
- The react native package is under-maintained and far behind the web player in terms of features/support.
- Break out the logic of the components to be more composable. Instead of a single
<Player />
, there is now a<Player.Root />
,<Player.Container />
,<Player.Video />
,<Player.LoadingIndicator />
,<Player.FullscreenTrigger />
,<Player.FullscreenIndicator />
, etc. Very similar to Radix, which we use under the hood.- This means that instead of one giant component with a lot of logic baked into it, we have a bunch of composable primitives which you can build your apps on top of. We hope you like it!
- This also brings us much closer to web standards - we don't want to hide the internals from you. You can pass props directly to the video element, like
poster
, and it will "just work" as expected. - We still provide a lot of auto-wiring for the components and event listeners - very similar to the previous versions.
- We removed all API data fetching on the Player (e.g. all of the hooks like
useCreateAsset
), and now provide helpers to use the newlivepeer
SDK with the React components.getSrc
takes in the response from the playback info endpoint and parses it into something the Player can understand.- The only web requests are for pure playback or broadcasting (WHEP/WHIP and metrics reporting) - there are no more API requests to Livepeer Studio from any components.
- This means that you do not need to configure a
LivepeerProvider
with an API key. Keep those keys on the backend.
- The components are now completely unstyled, and the docs will provide examples of how to style them similarly to how they were in the previous releases. You can copy-pasta and then tweak from there.
- We deprecated the React Native package, for now. It would have been a huge lift to bring it up to feature parity with the React package, and is less straightforward than web to do the WebRTC/HLS fallback and all of the advanced features in the React web package.
- We want to have first-class support for React Native in the future, but for now, we want to only ship software that we're 100% confident our users will benefit from.
- Composable components - all components are extremely narrow in their scope, and support the
asChild
pattern popularized by Radix UI. WhenasChild
is set to true, we will not render a default DOM element, instead cloning the part's child and passing it the props and behavior required to make it functional. - Automatic poster images - if you pass in the playback info response directly into
getSrc
, it will automatically parse the thumbnail image and pass it into theposter
for the video. - Resume progress on fallback - now, when an error happens during playback for any reason, we resume playback where it left off.
- BYOC - bring your own components.
useMediaContext
is now much easier to use - since the<Player.Root />
is now just a simple React Context provider, you can build out your own components inside of it which consume the video controller. We have some examples to help avoid the footgunning.
- We are dropping support for
autoUrlUpload
and the fallback to playing directly from IPFS. We understand some users rely on that, and we will work with them to provide docs for how to implement that outside of the player. - We moved to a new build system which includes
use client
anduse server
directives in the output. If you don't use React Server Components, this doesn't affect you. But this means that you can directly import the client components into a RSC and you don't need to wrap them.
- Updated dependencies [
4669aaf
]:- @livepeer/core@3.0.0-next.0
-
#448
26204f4
Thanks @suhailkakar! - Added .quicktime extension to mime.ts and src.ts to allow .quicktime video playback -
Updated dependencies [
26204f4
]:- @livepeer/core@2.1.9
-
#446
373e3ac
Thanks @0xcadams! - Fix: added access control headers to every request for HLS VOD. -
Updated dependencies [
373e3ac
]:- @livepeer/core@2.1.8
-
#444
6057932
Thanks @0xcadams! - Fix: fixed an issue where all HLS requests with JWT headers will time out. -
Updated dependencies [
6057932
]:- @livepeer/core@2.1.7
-
#442
f6ddf09
Thanks @0xcadams! - Fix: resolves issue with VPNs transparently blocking WebRTC playback and failing to start.The timeout for playback can be customized with
webrtcConfig.canPlayTimeout
:import { Player, WebRTCVideoConfig } from "@livepeer/react"; const webrtcConfig: WebRTCVideoConfig = { canPlayTimeout: 8000, }; const Page = () => { return <Player playbackId={playbackId} webrtcConfig={webrtcConfig} />; };
-
Updated dependencies [
f6ddf09
]:- @livepeer/core@2.1.6
-
#439
d9104a3
Thanks @0xcadams! - Fix: fixed playback on iOS for JWT-protected HLS playback. -
Updated dependencies [
d9104a3
]:- @livepeer/core@2.1.5
-
#437
714f354
Thanks @0xcadams! - Fix: added backwebrtcConfig
to the dependencies for WebRTC negotiation useEffect. -
Updated dependencies [
714f354
]:- @livepeer/core@2.1.4
-
#434
ad3009c
Thanks @0xcadams! - Fix: removed?recordings=true
parameter on playback info endpoint and fixed HLS CORS issues with JWT headers. -
#432
b3081f3
Thanks @0xcadams! - Fix: changed to useHEAD
instead ofGET
and removed listener for changes towebrtcConfig
to reduce developer confusion. -
#435
b83480c
Thanks @0xcadams! - Fix: fix for metrics reporting when switching quickly between streams. -
Updated dependencies [
ad3009c
,b3081f3
,b83480c
]:- @livepeer/core@2.1.3
-
#430
82fbbd6
Thanks @0xcadams! - Revert: revert VPN playback hanging. -
Updated dependencies [
82fbbd6
]:- @livepeer/core@2.1.2
-
#423
2743a30
Thanks @0xcadams! - Feature: added header-based access control for webrtc and hls. -
Updated dependencies [
2743a30
]:- @livepeer/core@2.1.1
-
#426
ab4da5f
Thanks @0xcadams! - Feature: added track selectors to WebRTC so developers can override video and audio tracks.<Player webrtcConfig={{ videoTrackSelector: "~1280x720", }} />
See here for more documentation.
-
#424
c1a871a
Thanks @0xcadams! - Fix: added timeout for VPN playback blocking ICE candidates and stalling indefinitely. The default is 5000ms with an override with:<Player webrtcConfig={{ iceCandidateTimeout: 2000, }} />
-
#427
d453ebc
Thanks @0xcadams! - Fix: fixed a rare bug where coturn could be located in a different region from playback, resulting in playback failing. -
Updated dependencies [
c1a871a
,d453ebc
,ab4da5f
]:- @livepeer/core@2.1.0
-
#418
7b6b1d7
Thanks @0xcadams! - Fix: fixed WebRTC negotiation endpoint to reduce hops to assigned node. -
Updated dependencies [
7b6b1d7
]:- @livepeer/core@2.0.10
-
#416
d4f9abe
Thanks @0xcadams! - Feature: added redirect URL caching for faster WebRTC playback switching times. -
Updated dependencies [
d4f9abe
]:- @livepeer/core@2.0.9
-
#413
b8ba1f3
Thanks @0xcadams! - Fix: fixed randomStream is offline
errors occurring on live stream playback, and reporting to websocket metrics. -
Updated dependencies [
b8ba1f3
]:- @livepeer/core@2.0.7
-
#411
c627b39
Thanks @0xcadams! - Fix: fixed properly closing the playback websocket when a new playback ID is passed into the Player. -
Updated dependencies [
c627b39
]:- @livepeer/core@2.0.6
-
#408
f396e37
Thanks @0xcadams! - Fix: fixed parsing of playback IDs from a pinned playback URL. -
Updated dependencies [
f396e37
]:- @livepeer/core@2.0.5
-
#406
570342f
Thanks @victorges! - Fix: fixed metrics to only send values when they are defined, to avoid filtering on the backend. -
Updated dependencies [
570342f
]:- @livepeer/core@2.0.4
-
#403
2d29716
Thanks @0xcadams! - Fix: fixed a race condition when b-frames are present in a stream, and fallback happens to HLS while SDP negotiation is still pending. -
Updated dependencies [
2d29716
]:- @livepeer/core@2.0.3
-
#401
06095b6
Thanks @0xcadams! - Fix: resolved issues with WebRTC not playing back correctly on Firefox. -
Updated dependencies [
06095b6
]:- @livepeer/core@2.0.2
-
#398
8ce5d5c
Thanks @0xcadams! - Fix: added loading states to the clipping button in the Player, with better callbacks for users to implement UIs on top of clipping. -
Updated dependencies [
8ce5d5c
]:- @livepeer/core@2.0.1
- #395
119c28b
Thanks @0xcadams! - Breaking: movedlivepeer
to@livepeer/core-web
, which will be aligned with ourlivepeer
packages that are 1-1 with the backend API.
- Updated dependencies [
119c28b
]:- @livepeer/core@2.0.0
-
#394
5d5048d
Thanks @0xcadams! - Fix: updated clipping to include an optional session ID. -
Updated dependencies [
5d5048d
]:- @livepeer/core@1.9.2
-
#392
b8e2831
Thanks @0xcadams! - Fix: added better error handling for HLS.js buffer append errors. -
Updated dependencies [
b8e2831
]:- @livepeer/core@1.9.1
- #390
961772d
Thanks @0xcadams! - Breaking: removedplaybackUrl
from stream responses. Developers should migrate to usingplaybackId
to query stream playback URLs.
- Updated dependencies [
961772d
]:- @livepeer/core@1.9.0
-
#388
6095d73
Thanks @0xcadams! - Feature: addedonClipStarted
and ensured overriddenliveSyncDurationCount
in HLS config does not throw errors in HLS.js. -
Updated dependencies [
6095d73
]:- @livepeer/core@1.8.8
-
#386
1dc5657
Thanks @0xcadams! - Feature: added constant to WebRTCConfig to allow constant playback speed in the Player, and prevent audio distortion. -
#383
9264eee
Thanks @iameli-streams! - Fix: added single SDP negotiation when performing WHEP. -
Updated dependencies [
1dc5657
,9264eee
]:- @livepeer/core@1.8.7
-
#379
b29684d
Thanks @0xcadams! - Feature: added custom components to render in place of the default error components, for when a stream is offline:streamOfflineErrorComponent
, when an access control error occurs (like an invalid JWT is passed):accessControlErrorComponent
, and when playback fails another unknown error:playbackFailedErrorComponent
.Also added a callback for when these errors occur:
onPlaybackError
. This can be used like:onPlaybackError={(e) => { if (e === null) { doSomethingWithErrorResolved(); } else if (e?.type === 'offline') { doSomethingWithOfflineError(); } }}
-
Updated dependencies [
b29684d
]:- @livepeer/core@1.8.6
-
17f84fd
Thanks @0xcadams! - Fix: bumping version due to intermittent release error. -
Updated dependencies [
17f84fd
]:- @livepeer/core@1.8.5
-
#376
3301827
Thanks @0xcadams! - Fix: fixed to have a cleaner fallback for 406 response from WebRTC negotiation. -
Updated dependencies [
3301827
]:- @livepeer/core@1.8.4
-
#374
5cbf402
Thanks @0xcadams! - Fix: fixed the fallback when b-frames exist to not show a playback error until HLS has been attempted. -
Updated dependencies [
5cbf402
]:- @livepeer/core@1.8.3
-
d809f28
Thanks @0xcadams! - Fix: added changes to strip a non-standard port number from the WebRTC redirect host, if present. -
Updated dependencies [
d809f28
]:- @livepeer/core@1.8.2
-
#370
269d3a3
Thanks @0xcadams! - Fix: fix for TTFF reporting, to measure the difference between theplay
event and the first progress update. -
Updated dependencies [
269d3a3
]:- @livepeer/core@1.8.1
-
#364
37c97e7
Thanks @0xcadams! - Feature: addedlowLatency
option offorce
- this requires WebRTC to be used, if a WebRTC playback source exists (which is only for livestreams). It disables the automatic fallback to HLS.Fixed issue when
lowLatency
istrue
where it would immediately fall back to HLS - it should now retry if the stream is offline, and fall back to HLS only when there is an unknown error (this could be a variety of causes - intermittent network issues, browser failure, etc).The default
lowLatency
option is nowtrue
- to opt out of low latency, passlowLatency=false
to the Player or the lvpr.tv search params.
- Updated dependencies [
37c97e7
]:- @livepeer/core@1.8.0
-
#362
5c905ce
Thanks @0xcadams! - Chore: update downstream packages and changed the default icon for microphone mute/unmute in<Broadcast />
.Package updates include:
hls.js
upgraded from "^1.4.0" to "^1.4.9", to include a fix from Livepeer's @Thulinma for missing AUD unitscore-js
upgraded from "^3.27.2" to "^3.31.1".cross-fetch
upgraded from "^3.1.5" to "^4.0.0".tus-js-client
upgraded from "^3.0.1" to "^3.1.0".zustand
upgraded from "^4.3.2" to "^4.3.9".@tanstack/query-async-storage-persister
,@tanstack/query-core
,@tanstack/react-query
,@tanstack/react-query-persist-client
all upgraded from "4.22.4" to "4.29.23".
- Updated dependencies [
5c905ce
]:- @livepeer/core@1.7.0
-
a89e71c
Thanks @0xcadams! - Fix: small styling fix for the video/audio source dropdowns. -
Updated dependencies [
a89e71c
]:- @livepeer/core@1.6.1
-
#358
50551ce
Thanks @0xcadams! - Feature: added basic<Broadcast />
component to kick off WebRTC broadcasting testing. -
#358
50551ce
Thanks @0xcadams! - Feature: added controls for<Broadcast />
-<BroadcastSettings />
,<AudioToggle />
, and<VideoToggle />
. -
#358
50551ce
Thanks @0xcadams! - Feature: added<Screenshare />
component for Broadcast, which allows a user to share a screen with their WebRTC broadcast.
-
#358
50551ce
Thanks @0xcadams! - Feature: addedrenderChildrenOutsideContainer
to both Broadcast and Player, which determines whether the children should be rendered outside of the aspect ratio container. This is used for custom controls, so children of the Player/Broadcast can useuseMediaController
without any parent elements.Also added
onPlaybackStatusUpdate
, which is a callback that is called when the broadcast status updates. This should be used withplaybackStatusSelector
to limit state updates. -
Updated dependencies [
50551ce
,50551ce
,50551ce
,50551ce
]:- @livepeer/core@1.6.0
- #356
ac886fb
Thanks @0xcadams! - Feature: added<Screenshare />
component for Broadcast, which allows a user to share a screen with their WebRTC broadcast.
-
#356
ac886fb
Thanks @0xcadams! - Feature: addedrenderChildrenOutsideContainer
to both Broadcast and Player, which determines whether the children should be rendered outside of the aspect ratio container. This is used for custom controls, so children of the Player/Broadcast can useuseMediaController
without any parent elements.Also added
onPlaybackStatusUpdate
, which is a callback that is called when the broadcast status updates. This should be used withplaybackStatusSelector
to limit state updates. -
Updated dependencies [
ac886fb
,ac886fb
]:- @livepeer/core@1.6.0-next.2
60b46ad
Thanks @0xcadams! - Feature: added controls for<Broadcast />
-<BroadcastSettings />
,<AudioToggle />
, and<VideoToggle />
.
- Updated dependencies [
60b46ad
]:- @livepeer/core@1.6.0-next.1
- #349
82429d8
Thanks @0xcadams! - Feature: added basic<Broadcast />
component to kick off WebRTC broadcasting testing.
- Updated dependencies [
82429d8
]:- @livepeer/core@1.6.0-next.0
-
4811b3e
Thanks @0xcadams! - Feature: thanks @martincik - addedassetId
to the asset upload progress. -
7dcda99
Thanks @0xcadams! - Fix: fixed bug withnavigator.mediaDevices.getUserMedia
throwing an undefined error in a secure context. -
Updated dependencies [
4811b3e
,7dcda99
]:- @livepeer/core@1.5.8
-
9811490
Thanks @0xcadams! - Fix: hotfix to improve handling of player version. -
Updated dependencies [
9811490
]:- @livepeer/core@1.5.7
-
#345
af16f6d
Thanks @0xcadams! - Chore: added version identifiers to the playback websocket to help narrow issues related to specific Livepeer UI Kit releases. -
Updated dependencies [
af16f6d
]:- @livepeer/core@1.5.6
-
#342
e36b570
Thanks @0xcadams! - Fix: fixed Safari not emittingcanplay
event with autoplay disabled, and replaced this event withloadedmetadata
to know when the video is ready for playback. -
Updated dependencies [
e36b570
]:- @livepeer/core@1.5.5
-
#340
99321fb
Thanks @0xcadams! - Fix: fixed WebRTC playback on Safari and removed redundantHEAD
request in SDP negotiation. -
Updated dependencies [
99321fb
]:- @livepeer/core@1.5.4
-
#338
8efce52
Thanks @0xcadams! - Feature: addedcreatorId
to useCreateStream, useUpdateStream, and useUpdateAsset. -
Updated dependencies [
8efce52
]:- @livepeer/core@1.5.3
-
#336
effc06b
Thanks @0xcadams! - Fix: fixed TTFF bug with the Player reporting an inaccurate TTFF whenpriority
was used with a Player which is below the fold. This was happening on the lvpr.tv player, since it is always set topriority
even though the Player can be below the fold. -
Updated dependencies [
effc06b
]:- @livepeer/core@1.5.2
-
#334
8cd5537
Thanks @0xcadams! - Fix: added a prop,lowLatency
, to the Player, to allow for opting-in to low latency WebRTC. -
Updated dependencies [
8cd5537
]:- @livepeer/core@1.5.1
- #314
49c4c99
Thanks @0xcadams! - Feature: Added WebRTC playback for the web Player, which uses the new endpoint from the Studio provider to play back WebRTC livestreams, if they are available. If these do not succeed in playing back, the Player will automatically fall back to HLS playback. Also, if the stream contains "bframes" (which are common for users streaming with OBS or other streaming providers), the Player will automatically fall back.
-
#332
7924cb5
Thanks @0xcadams! - Fix: changed default track selector tofirst
and loosened video track selector type defs to allow any string. -
#320
c49706d
Thanks @0xcadams! - Fix: fixed error reporting for metrics websocket with MP4 playback. -
#329
be5a1cc
Thanks @0xcadams! - Fix: fixed bugs on iOS - use native playback for HLS (instead of HLS.js) and fixed single touch not seeking on Progress. -
#324
4c6e1c7
Thanks @0xcadams! - Fix: resolved continuous restart on playback errors and reworked player to only create a single websocket across playbacks. -
#330
24111d4
Thanks @0xcadams! - Chore: enable prioritization of WebRTC playback over HLS. -
#333
ad1781c
Thanks @0xcadams! - Fix: removed the video track selector due to an upstream bug, and added configurable timeout for SDP negotiation. -
#325
d2c76a6
Thanks @0xcadams! - Fix: added debouncing to the error handler to increment the source index with exponential backoff, to prevent any fast reloads. -
#327
bbb2727
Thanks @0xcadams! - Fix: resolve tus upload issue with large uploads (>1GB) going over nginx limit. -
#322
e15a399
Thanks @0xcadams! - Fix: fixed issue with release not using the latest changes to MP4 restart. -
Updated dependencies [
7924cb5
,c49706d
,be5a1cc
,4c6e1c7
,24111d4
,ad1781c
,d2c76a6
,bbb2727
,e15a399
,49c4c99
]:- @livepeer/core@1.5.0
-
#329
be5a1cc
Thanks @0xcadams! - Fix: fixed bugs on iOS - use native playback for HLS (instead of HLS.js) and fixed single touch not seeking on Progress. -
#327
bbb2727
Thanks @0xcadams! - Fix: resolve tus upload issue with large uploads (>1GB) going over nginx limit. -
Updated dependencies [
be5a1cc
,bbb2727
]:- @livepeer/core@1.5.0-next.4
-
#325
d2c76a6
Thanks @0xcadams! - Fix: added debouncing to the error handler to increment the source index with exponential backoff, to prevent any fast reloads. -
Updated dependencies [
d2c76a6
]:- @livepeer/core@1.5.0-next.3
-
#324
4c6e1c7
Thanks @0xcadams! - Fix: resolved continuous restart on playback errors and reworked player to only create a single websocket across playbacks. -
#322
e15a399
Thanks @0xcadams! - Fix: fixed issue with release not using the latest changes to MP4 restart. -
Updated dependencies [
4c6e1c7
,e15a399
]:- @livepeer/core@1.5.0-next.2
-
#320
c49706d
Thanks @0xcadams! - Fix: fixed error reporting for metrics websocket with MP4 playback. -
Updated dependencies [
c49706d
]:- @livepeer/core@1.5.0-next.1
- #314
49c4c99
Thanks @0xcadams! - Feature: Added WebRTC playback for the web Player, which uses the new endpoint from the Studio provider to play back WebRTC livestreams, if they are available. If these do not succeed in playing back, the Player will automatically fall back to HLS playback. Also, if the stream contains "bframes" (which are common for users streaming with OBS or other streaming providers), the Player will automatically fall back.
- Updated dependencies [
49c4c99
]:- @livepeer/core@1.5.0-next.0
-
#315
f7246ca
Thanks @0xcadams! - Feature: added creator ID to create asset, so users can provide either a string (which is an unverified address) or an object with atype
. We currently only supportunverified
types, which means that passing a verified signature to verify the address is not yet possible.type CreateAssetCreatorId = | { /** * The `type` of the identifier - unverified means that the value is not signed, and is an address * that is blindly trusted. */ type: "unverified"; /** * Developer-managed ID of the user who created the asset. */ value: string; } | string;
-
Updated dependencies [
f7246ca
]:- @livepeer/core@1.4.4
-
#310
f840c70
Thanks @0xcadams! - Fix: fixed blank source URLs on lvpr.tv. -
c8050be
Thanks @0xcadams! - Feature:: added the ability to pass in aviewerId
to the Player to pass along to the metrics endpoint, for application builders to be able to query viewership by wallet. -
Updated dependencies [
f840c70
,c8050be
,c8050be
]:- @livepeer/core@1.4.3
-
#306
07f4a6e
Thanks @0xcadams! - Fix: fixed access control error not resetting when livestream starts. -
Updated dependencies [
07f4a6e
]:- @livepeer/core@1.4.2
-
#304
d2522dd
Thanks @spreadzp! - Feature: added support for base64 video sources - this allows for a video source likedata:video/webm;base64,GkX...AUL3
to be passed into thesrc
prop and the Player will handle it properly. -
Updated dependencies [
d2522dd
]:- @livepeer/core@1.4.1
- #299
ec96b12
Thanks @0xcadams! - Feature: addedaccessKey
andonAccessKeyRequest
props to the Player, to support thewebhook
playback policy which allows users to play back streams/assets with webhook authentication. The access key is appended to the query string in the source URL of the video, and this access key is passed along to a user-defined webhook which validates the payload to make sure the user has access to the content.
-
#303
8f65da8
Thanks @0xcadams! - Fix: updated the metrics to send thepageUrl
as thedocument.referrer
when used in an iFrame context, to be able to attribute metrics to a page which uses an iFrame. -
#302
4ebec15
Thanks @0xcadams! - Fix: added anonError
callback to the Player to allow users to catch and handle miscellaneous errors which occur in the Player, which are not already handled. -
Updated dependencies [
ec96b12
,8f65da8
,4ebec15
]:- @livepeer/core@1.4.0
-
#298
b79c11b
Thanks @0xcadams! - Feature: added the ability to autoplay videos without forcing mute. This works only in certain conditions where the site is considered "trusted" and the user has interacted with the site - see Chrome and Safari docs for further details on when this is allowed. We recommend testing on your site to ensure that the media will autoplay under the conditions that you expect the user to engage with your content. -
#295
3f653f7
Thanks @0xcadams! - Fix: fixed the user agent string to be sanitized before passing to the metrics websocket. -
#297
1d34ea4
Thanks @0xcadams! - Feature: added IPFS upload on creation of an asset, so no subsequent calls need to be made to upload to IPFS. -
#298
b79c11b
Thanks @0xcadams! - Fix: changed the default Player volume level to 1.0, from 0.2. To continue with the previous behavior, usedefaultVolume
in the controls prop. -
Updated dependencies [
b79c11b
,3f653f7
,1d34ea4
,b79c11b
]:- @livepeer/core@1.3.2
-
#293
8e28a01
Thanks @0xcadams! - Fix: addedsourceUrl
reporting to the Player. -
Updated dependencies [
8e28a01
]:- @livepeer/core@1.3.1
- #289
20879a4
Thanks @0xcadams! - Feature: changed the Player on React and React Native to hide the progress bar when viewing a livestream. Also improved the live stream experience with better HLS.js defaults for lower latency.
-
#291
2c9bb91
Thanks @0xcadams! - Fix: fixed the styling of the stream error image on small displays (<400px). -
#289
20879a4
Thanks @0xcadams! - Fix: fixed an error where HLS errors would not provide detail and the Player would throw anobject undefined
error. -
Updated dependencies [
2c9bb91
,20879a4
,20879a4
]:- @livepeer/core@1.3.0
-
#286
cd502da
Thanks @0xcadams! - Fix: renamed theprotocol
field tosourceType
to align with the backend metrics websocket. -
Updated dependencies [
cd502da
]:- @livepeer/core@1.2.3
-
#279
1db99c7
Thanks @0xcadams! - Fix: tuned the button APIs to be easier to customize for custom controls. -
#276
25c1bb6
Thanks @0xcadams! - Fix: fix for re-render bug in the Player, which caused a forced re-render on every refresh of a video. -
#284
620751e
Thanks @0xcadams! - Fix: added better logs for failure oncreate
in Studio provider. -
Updated dependencies [
620751e
]:- @livepeer/core@1.2.2
- #279
1db99c7
Thanks @0xcadams! - Fix: tuned the button APIs to be easier to customize for custom controls.
- #276
25c1bb6
Thanks @0xcadams! - Fix: fix for re-render bug in the Player, which caused a forced re-render on every refresh of a video.
- #274
aac6a02
Thanks @0xcadams! - Fix: added further props for theViewabilityConfig
for maximum compatibility with existing FlatList implementations.
99ceff1
Thanks @0xcadams! - Fix: fixed sorting of sources to use the width generated from the playback info endpoint.
-
#270
68f2e64
Thanks @0xcadams! - Fix: fixedusePlayerList
to use a React ref to avoid dynamic runtimeonViewableItemsChanged
errors. -
#270
68f2e64
Thanks @0xcadams! - Fix: fixed uploads in React Native environments by removing chunk size for tus. -
#272
b11ea90
Thanks @0xcadams! - Feature: addedallowCrossOriginCredentials
to the React Player to allow cookies to be sent with playback requests. -
#270
68f2e64
Thanks @0xcadams! - Fix: fixedgetIsVolumeChangeSupported
check to not fail for negative volume values. -
Updated dependencies [
68f2e64
,68f2e64
,b11ea90
,68f2e64
]:- @livepeer/core@1.2.1
-
#267
85e4c05
Thanks @0xcadams! - Feature: added MP4 rendition prioritization to the React and React Native Player.This is for support of MP4 renditions returned from
playbackInfo
from the Studio provider. If an MP4 rendition exists for an Asset, it will be prioritized over HLS, since this has been introduced as a performance improvement over HLS for short-form video.
The MP4 renditions will be chosen with the following algorithm: the device screen width and multiplied by a static multiplier (currently set to x2.5). This value is then compared to the rendition widths, and the renditions are prioritized based on the distance between these values. This results in a choice of a rendition which is close to the screen size without visual quality issues. For instance, a device with a 1280 pixel width would compute 1280px * 2.5 = 3200px
, and then sort the MP4 renditions by which are closest to this value.
-
#267
85e4c05
Thanks @0xcadams! - Fix: addedpageUrl
,protocol
,preloadTime
, andautoplay
to metrics to track performance of video load under specific conditions. -
Updated dependencies [
85e4c05
,85e4c05
]:- @livepeer/core@1.2.0
-
#265
318c082
Thanks @0xcadams! - Fix: change the metrics reporting port for staging to use 443. -
Updated dependencies [
318c082
]:- @livepeer/core@1.1.5
-
#259
9568500
Thanks @0xcadams! - Feature: added Time to First Frame, Autoplay, and User Agent to metrics reporting. Fixed bugs with play time metrics reporting. -
Updated dependencies [
9568500
]:- @livepeer/core@1.1.4
-
#255
0e5cbc9
Thanks @0xcadams! - Fix: fixed Node.js issue withFile
not being defined globally. -
Updated dependencies [
0e5cbc9
]:- @livepeer/core@1.1.3
-
a8a2c58
Thanks @0xcadams! - Chore: downgraded packages due to versioning conflicts and upgradedzustand
. -
Updated dependencies [
a8a2c58
]:- @livepeer/core@1.1.2
-
#248
5a1c060
Thanks @0xcadams! - Fix: fixed version headers to reference the correct package names. -
#243
89de148
Thanks @0xcadams! - Fix: moved to using HLS.js on Safari (when supported) instead of the native video player. -
#251
686fb51
Thanks @0xcadams! - Chore: updated dependencies to latest versions. -
Updated dependencies [
5a1c060
,686fb51
]:- @livepeer/core@1.1.1
- #243
89de148
Thanks @0xcadams! - Fix: moved to using HLS.js on Safari (when supported) instead of the native video player.
- #240
c4cb597
Thanks @clacladev! - Fix: added clearer Player error handling instead of an infinite loading spinner. The Player now shows error states for gated streams which do not have a proper JWT and streams which are currently offline.
- Updated dependencies [
c4cb597
]:- @livepeer/core@1.1.0
- #204
9ce1fa4
Thanks @0xcadams! - Breaking: removed the default API key in the SDK for Studio with sunset plan of Jan 6th, 2023, to discourage spam use.
-
#204
9ce1fa4
Thanks @0xcadams! - Refactor: moved the web logic out oflivepeer
into@livepeer/core
to prevent polyfills from conflicting with React Native. -
#204
9ce1fa4
Thanks @0xcadams! - Breaking: removed the peer dependency onethers
andtypechain
in favor of exporting const ABIs which can be used with tools like abitype. -
#204
9ce1fa4
Thanks @0xcadams! - Refactor: added@livepeer/core-react
package which includes all cross-environment hooks, utilities, and types. These are exported asusePlayer
,useControlsContainer
, etc.
-
#204
9ce1fa4
Thanks @0xcadams! - Chore: updated@livepeer/core-react
package. -
#204
9ce1fa4
Thanks @0xcadams! - Fix: publish@livepeer/core-react
package. -
85dc1f7
Thanks @0xcadams! - Fix: fixedpriority
boolean to not reset when video is not shown on screen. -
#204
9ce1fa4
Thanks @0xcadams! - Fix: fixed dStorage fallback to only use IPFS whenplaybackId
does not exist. -
#204
9ce1fa4
Thanks @0xcadams! - Fix: changed the defaultobjectFit
for the Player to becontain
instead ofcover
. -
#204
9ce1fa4
Thanks @0xcadams! - Fix: fixed IPFS auto-playback withsrc
. -
#218
07ef48e
Thanks @0xcadams! - Fix: fixed regression with slider thumb not showing in correct position, add React Native video customization props, and fixed Player getting stuck in "play" after exit of fullscreen. -
#218
07ef48e
Thanks @0xcadams! - Feature: addedpriority
boolean to Player to enable lazy loading for content. -
#204
9ce1fa4
Thanks @0xcadams! - Feature: addedloading
color override to ThemeConfig. -
#204
9ce1fa4
Thanks @0xcadams! - Feature: added further theming overrides to progress and volume sliders. -
#213
7f5202d
Thanks @0xcadams! - Fix: fixed player to display hours correctly and added version headers to API requests for debugging errors. -
#204
9ce1fa4
Thanks @0xcadams! - Feature: added native file URI uploading for React Native, default volume config for the Player, and fixed the slider thumb to not extend past the left boundary. -
#204
9ce1fa4
Thanks @0xcadams! - Feature: addedshowUploadingIndicator
for displaying the uploading text whenautoUrlUpload
is enabled, and renamedshouldShowLoadingSpinner
toshowLoadingSpinner
. -
#204
9ce1fa4
Thanks @0xcadams! - Fix: fixed regression with IPFS auto-playback and mime type checking in browser. -
#204
9ce1fa4
Thanks @0xcadams! - Fix: fixed core-react to use callback refs to ensure that the consuming code gets the updated ref on mount. -
#223
451d304
Thanks @Ahmed-Aghadi! - Fix: added missingusePlaybackInfo
export to React/React Native. -
Updated dependencies [
9ce1fa4
,9ce1fa4
,07ef48e
,07ef48e
,9ce1fa4
,9ce1fa4
,7f5202d
,9ce1fa4
]:- @livepeer/core@1.0.0
- #212
da28e70
Thanks @clacladev! - Fix: added clearer Player error handling instead of an infinite loading spinner. The Player now shows error states for gated streams which do not have a proper JWT and streams which are currently offline.
-
#223
451d304
Thanks @Ahmed-Aghadi! - Fix: added missingusePlaybackInfo
export to React/React Native. -
Updated dependencies [
da28e70
]:- @livepeer/core@1.0.0-next.6
85dc1f7
Thanks @0xcadams! - Fix: fixedpriority
boolean to not reset when video is not shown on screen.
-
#218
07ef48e
Thanks @0xcadams! - Fix: fixed regression with slider thumb not showing in correct position, add React Native video customization props, and fixed Player getting stuck in "play" after exit of fullscreen. -
#218
07ef48e
Thanks @0xcadams! - Feature: addedpriority
boolean to Player to enable lazy loading for content. -
Updated dependencies [
07ef48e
,07ef48e
]:- @livepeer/core@1.0.0-next.5
-
#213
7f5202d
Thanks @0xcadams! - Fix: fixed player to display hours correctly and added version headers to API requests for debugging errors. -
Updated dependencies [
7f5202d
]:- @livepeer/core@1.0.0-next.4
-
#204
9ce1fa4
Thanks @0xcadams! - Feature: added native file URI uploading for React Native, default volume config for the Player, and fixed the slider thumb to not extend past the left boundary. -
Updated dependencies [
9ce1fa4
]:- @livepeer/core@1.0.0-next.3
- #197
748ddfa
Thanks @0xcadams! - Fix: changed the defaultobjectFit
for the Player to becontain
instead ofcover
.
-
#195
e866579
Thanks @0xcadams! - Feature: addedloading
color override to ThemeConfig. -
Updated dependencies [
e866579
]:- @livepeer/core@1.0.0-next.2
- #193
fa5d2c6
Thanks @0xcadams! - Feature: addedshowUploadingIndicator
for displaying the uploading text whenautoUrlUpload
is enabled, and renamedshouldShowLoadingSpinner
toshowLoadingSpinner
.
3cada35
Thanks @0xcadams! - Fix: fixed dStorage fallback to only use IPFS whenplaybackId
does not exist.
- #189
0f6bb63
Thanks @0xcadams! - Fix: fixed regression with IPFS auto-playback and mime type checking in browser.
-
#187
44adf29
Thanks @0xcadams! - Feature: added further theming overrides to progress and volume sliders. -
Updated dependencies [
44adf29
]:- @livepeer/core@1.0.0-next.1
-
#182
16b1307
Thanks @0xcadams! - Refactor: moved the web logic out oflivepeer
into@livepeer/core
to prevent polyfills from conflicting with React Native. -
#182
16b1307
Thanks @0xcadams! - Breaking: removed the peer dependency onethers
andtypechain
in favor of exporting const ABIs which can be used with tools like abitype.
e656367
Thanks @0xcadams! - Fix: fixed core-react to use callback refs to ensure that the consuming code gets the updated ref on mount.
- #179
a04136e
Thanks @github-actions! - Chore: updated@livepeer/core-react
package.
- #172
f2b5ed2
Thanks @0xcadams! - Breaking: removed the default API key in the SDK for Studio with sunset plan of Jan 6th, 2023, to discourage spam use.
- Updated dependencies [
f2b5ed2
]:- livepeer@2.0.0-next.1