react-player/lazy 라이브러리 사용하여 연속 재생 및 옵션들 추가한 비디오 플레이어를 생성했다.
매우 간단 간결한 코드로 구현 가능하다.
😎구현 화면
😎구현 코드
npm i react-player/lazy
import React, {useEffect, useState} from "react";
import ReactPlayer from 'react-player/lazy';
const Video = ({title, vodPlaylistId}) => {
const [playIndex, setPlayIndex] = useState(0);
const playList = [
{index:1, url: 'https://https://www.youtube.com/watch?v=UVRUKtHuZh0'},
{index:2, url: 'http://sample.vodobox.net/skate_phantom_flex_4k/skate_phantom_flex_4k.m3u8'},
{index:3, url: 'http://playertest.longtailvideo.com/adaptive/wowzaid3/playlist.m3u8'}
];
const handleNextVideo = (video, playIndex) => {
if(playIndex === video.length - 1){
setPlayIndex(0);
}else{
setPlayIndex(playIndex + 1);
}
}
const selectVideo = (index) => {
setPlayIndex(index);
}
if(playList === null) return <p>Loading...</p>;
return (
<>
<h2>Player Test</h2>
<div className='player-wrapper'>
<ReactPlayer
url={playList[playIndex].url}
playing
controls
muted
progressInterval={1000}
pip={true}
onEnded={() => {handleNextVideo(playList, playIndex)}}
width={'800px'}
height={'500px'}
/>
</div>
</>
);
};
export default Video;
728x90
반응형
'Front-end > React' 카테고리의 다른 글
Ref - React Hooks 언제 사용해야할까? (0) | 2024.03.15 |
---|---|
React를 자바스크립트, 타입스크립트 중 무엇으로 사용하는게 좋을까? (0) | 2023.12.22 |
[PIP 모드 키기] 리액트로 Picture In Picture 창 켜보기 라이브러리 사용 (0) | 2023.10.31 |
[대시보드] amcharts 라이브러리 사용 리액트 누적 막대 그래프 만들기 (0) | 2023.10.17 |
React PC/Mobile 접속 기기별 라우팅 react-device-detect (0) | 2023.09.20 |
댓글