First, let’s install the library:

npm install react-player 

Next, let’s create our video player component:

import React from 'react'; import ReactPlayer from 'react-player'; const VideoPlayer = ({ url }) => { const isYoutube = url.includes('youtube.com'); const isVimeo = url.includes('vimeo.com'); if (isYoutube) { const videoId = url.split('v=')[1]; return ( <ReactPlayer url={`https://www.youtube.com/watch?v=${videoId}`} width="100%" height="100%" /> ); } if (isVimeo) { const videoId = url.split('vimeo.com/')[1]; return ( <ReactPlayer url={`https://vimeo.com/${videoId}`} width="100%" height="100%" /> ); } return ( <ReactPlayer url={url} controls width="100%" height="100%" /> ); }; export default VideoPlayer; 

Here’s how the component works:

  • We start by checking if the URL contains “youtube.com” or “vimeo.com” to determine the type of video we’re playing.
  • If it’s a YouTube video, we extract the video ID from the URL and pass it to the ReactPlayer component with the correct URL format.
  • If it’s a Vimeo video, we do the same thing but with the Vimeo URL format.
  • If it’s neither a YouTube nor Vimeo video, we just render the ReactPlayer component with the URL.
  • We also add the controls prop to show the video controls and set the width and height props to 100% to make the video player fill its container.

Now let’s use the component in our app:

import React from 'react'; import VideoPlayer from './VideoPlayer'; const App = () => { return ( <div> <VideoPlayer url="https://www.youtube.com/watch?v=dQw4w9WgXcQ" /> <VideoPlayer url="https://vimeo.com/522772021" /> <VideoPlayer url="https://example.com/example.mp4" /> </div>  ); }; export default App; 

In this example, we’re rendering three videos with different URLs: a YouTube video, a Vimeo video, and an MP4 video. The VideoPlayer component will handle playing all of them.

And here’s a demo of the video player in action: https://codesandbox.io/s/reactplayerdemo-mokjcd

Originally published on sanjivsutar.in.