Using the Livepeer React Player
The example below show to use the Livepeer ReactPlayer to view a video asset, with some custom
styles to demonstrate what’s possible.
Configuring Providers
We create a new React client and wrap the app withLivepeerConfig.
Play Video
Now that our providers are set up, we use thePlayer with an IPFS CID as our playbackId, which
we created previously when uploading a video asset and storing to IPFS. We use
Next.js Image as
our optimized poster image, but this could also be a simple image URL.
We also override some of the custom styling to match the flow of our app!
DemoPlayer.tsx
Using your own player
Using Livepeer React is the recommended way to play back a video or a livestream - it handles MP4 renditions, errors from the API, and is a true web3-native media player. However, if you want to use an alternative, you can do so by following the instructions below.To ensure consistent viewer experience, we strongly recommend using a player
(like the Livepeer Player) that handles choosing the correct MP4 rendition and
gracefully recovers from routine RTMP reconnects through custom polling logic.
In the absence of this capability, reconnects may severely degrade viewer
experience and require a hard refresh to resolve, and an incorrect MP4
rendition for the screen size may be chosen.
Fetch the playback URL
To play back a livestream in other players, you’ll need to fetch the playback URL(s). By default, all content has an HLS endpoint. HLS is a protocol that allows you to stream video and audio content over HTTP. Much of the video you watch on the web is delivered using HLS. Livepeer uses HLS to deliver video and audio content. You can get the playback url by using the below format and replacing thePLAYBACK_ID with your stream or asset’s playbackId.
Please note that to play back livestreams inside your application you’ll need
to use a video player component that supports HLS.
url field can be used as the playback URL.
Handling various playback sources
The playback info endpoint can return multiple sources in the response, as outlined above. These may include short form MP4 playback URLs, which allow you to obtain alternative URLs for your video asset to enable applications (and CDNs) to cache short videos for instant playback of subsequent videos. This means that viewers can experience instant time-to-first-frame (TTFF) when watching short videos. It is important to note that short form playback URLs are only available for video assets that are less than 2 minutes in duration. These may also include WebRTC URLs for low latency livestream playback. These must be played back with our ICE servers, which are used to route traffic in restricted networking environments. The WebRTC WHEP negotiation should send back these STUN/TURN servers in the SDP response, so there should not be any customization necessary to use the ICE servers with a custom player. You can get the playback URLs by retrieving the playback info, replacingPLAYBACK_ID with your asset’s playbackId:
When you make a request for playback URLs, in the response MP4 URLs are always
listed before HLS URLs. Additionally, each MP4 URL includes additional
metadata about the video, such as its width, height, bitrate, and size. This
metadata can be useful for mobile applications that want to optimize playback
quality and size based on the viewer’s device and network conditions. The
Livepeer React Player automatically handles this. See the Player
docs for more information.
Use the playback URL in a player
You can use the playback URL with any video player that supports HLS. Here is a list of popular players that support HLS:- Video.js
- Plyr.io
- JW Player
- Bitmovin Player
- HLS.js (requires custom logic to wire to a video element)