Play from IPFS
Learn how to upload and play back videos on IPFS using Livepeer
This tutorial is based on Livepeer React version 3.9 or earlier, which is now deprecated. Please ensure that you use Livepeer React version 4 or later, with the new Livepeer JavaScript SDK. The integration process may appear different, but the underlying concepts remain same.
IPFS is a decentralized peer-to-peer network that allows anyone to store and share files. Unlike traditional centralized storage systems, IPFS stores data across a network of distributed nodes, making it impossible to tamper with or lose data.
In this tutorial, you will learn how to use Livepeer to upload, transcode, and playback videos on IPFS using Livepeer.
Prerequisites
Before you start with this tutorial, make sure you have the following tools installed on your machine:
- Node.js v16 or later
Setting up Next.js App
First, let’s create a directory for your project and initialize a Next.js app using the following command in your terminal:
This will create a new Next.js app in the current directory and install all the necessary dependencies.
Next, let’s install the @livepeer/react
, library which we will use to
integrate Livepeer:
Adding TailwindCSS
Tailwind CSS is a utility-first CSS framework that enables you to rapidly build
user interfaces. We will use it to style our app. First, we need to install the
tailwindcss
, postcss
, and autoprefixer
dependencies. These dependencies are
necessary for TailwindCSS to work properly in a Next.js app.
Run the following command to install them:
Once the dependencies are installed, we need to initiate the Tailwind CSS. This will create the necessary configuration files and allow you to customize the default Tailwind CSS styles. To do that, run the below code in your terminal.
The above command will generate two files named tailwind.config.js
and postcss.config.js
. These files contain the configuration for Tailwind CSS
and PostCSS, respectively. Next, open the tailwind.config.js
file in code
editor of your choice and replace its contents with the following code:
The above code tells Tailwind CSS which files to process. At last, add the
tailwind directives for each of Tailwind’s layers to the ./styles/globals.css
file.
You can also check if Tailwind CSS is integrated successfully by updating the
code inside of the pages/index.js
file, with below code.
Save the file and run npm run dev
to start the next.js app and you should see
a similar page.
Integrating Livepeer
Livepeer is a decentralized video platform that allows users to upload, transcode, and serve video content. The Livepeer React SDK provides a set of ready-to-use hooks that make it easy to integrate Livepeer into a project.
To get started, navigate to https://livepeer.studio/register and create a new account on Livepeer Studio. This will give you access to your Livepeer dashboard, where you can manage your account and access your API keys.
Once you have created an account, in the dashboard, click on the Developers on the sidebar.
Then, click on Create API Key, give a name to your key and then copy it as we will need it later.
To use Livepeer React in your project, create a new directory named client
in
the root directory, and add the following code to index.js
Make sure to replace the YOUR_API_KEY
with the key which you just copied from
the Livepeer dashboard. And also replace the code inside of _app.js
in the
page directory with the below code.
And that is it, you can now use Livepeer to upload and transcode assets.
Create a components folder named and inside of it create a new file named
Button.js
. Add the below code to it.
Next, in the pages/index.js
file, import the Button component and add it below
the p
tag. This is how your file should look like
Add the file input with class name hidden below the Button component.
Next, create a useState named asset and also a reference for the file input.
I have already commented on each line of the code so you can understand what is going on.
Save the file and now you should be able to select a file from your computer.
Next, import the useCreateAsset
from the @livepeer/react
and add the hook to
the index.js file.
Update the uploadAsset
function and save the files. You can now choose and
upload videos to Livepeer.
You can also add the below code to check the progress of the asset upload/transcode.
Now, let’s also print the asset information once it is uploaded successfully. To do that simply add the below code below the input tag.
Finally this is how your code should look like:
Go ahead choose and upload a video and then navigate to https://livepeer.studio/dashboard/assets you should be able to see the video which you just uploaded.
Uploading Videos To IPFS
By default, the assets which you upload would be saved on Livepeer’ storage. If
you want to upload the videos to IPFS, you can use useUpdateAsset
hook from
Livepeer React or Livepeer Studio’s REST API. In this tutorial we will be using
the Livepeer React hooks.
Import the useUpdateAsset
hook from the livepeer.js and add it after the
useCreateAsset
And also include a Button to call the updateAsset hook in the map function:
If you have saved your videos on other IPFS services like web3.storage, you can easily playback them using Livepeer’s decentralized storage player. This player transcodes your videos to ensure that they playback smoothly and without any issues.
This can be useful for ensuring that your videos are of high quality and that they are accessible to a wide range of viewers, regardless of their device or connection speed.
Was this page helpful?