Intro
์ค๋์ ํ๋ก์ ํธ์ ํ์ํ ๋น๋์ค ํ๋ ์ด์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ video-react์ ๋ํด ์์๋ณด๊ณ ์ ์ฉํ์๋ค.
์ผ์์ผ์๋ ์ด์ฌํ ๋์์ผํด์ ํ ์์ผ์ ํ๋ก์ ํธ์ ์ ๊ฒฝ์ ๋ง์ด ์ผ๋ค. ใ ใ

ํ๋ก์ ํธ ์งํ์ฌํญ
video-react
Video-React - React Video Component
Installation NPM Install video-react and peer dependencies via NPM npm install --save video-react react react-dom redux Basic example The basic player Play Video PlayNon-Fullscreen import css in your app or add video-react styles in your page import "node_
video-react.js.org
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
npm install --save video-react
video-react์ ๋ฃจํธ ์ปดํฌ๋ํธ์ธ Player๋ฅผ ๊ฐ์ ธ์ ๊ทธ ์ธ ํ์ํ ์ปดํฌ๋ํธ BigPlayButton, LoadingSpinner, ControlBar ๋ฑ์ ์์ ์ปดํฌ๋ํธ๋ก ๊ตฌํํ๋ค.
- Player: video-react ๋ฃจํธ ์ปดํฌ๋ํธ
- BigPlayButton: ๋น๋์ค ์ด๊ธฐ ์ฌ์ ๋ฒํผ
- LoadingSpinner: ๋น๋์ค๊ฐ ๋ก๋ฉ๋๊ธฐ ์ ์คํผ๋
- ControlBar: ๋ณผ๋ฅจ, ํ์, ์ฌ์ ์ผ์ ์ค์ง/์ฌ๊ฐ ๋ฑ ๋น๋์ค ์ ์ด ์ปดํฌ๋ํธ
Player๋ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํด Redux๋ฅผ ์ฌ์ฉํ๊ณ ์์ด subscribeToStateChange ํจ์๋ก ํ๋ ์ด์ด ์ํ๋ฅผ ๊ตฌ๋ ํ ์ ์๋ค.
- VideoPlayer.js
import React, { useContext, useEffect, useState } from 'react';
import { Player, BigPlayButton, LoadingSpinner, ControlBar } from 'video-react';
import { VideoFileContext } from '../App';
const VideoPlayer = ({ onPlayerChange, onPlayerStateChange }) => {
const videoFile = useContext(VideoFileContext);
const [player, setPlayer] = useState();
const [playerState, setPlayerState] = useState();
const [source, setSource] = useState();
useEffect(() => {
setSource(URL.createObjectURL(videoFile));
}, [videoFile]);
useEffect(() => {
if (playerState) onPlayerStateChange(playerState);
}, [playerState]);
useEffect(() => {
onPlayerChange(player);
if (player) {
// ํ๋ ์ด์ด ์ํ ๋ณ๊ฒฝ ๊ตฌ๋
player.subscribeToStateChange(setPlayerState);
}
}, [player]);
return (
<div className={'video-player'}>
<Player ref={player => setPlayer(player)} src={source} startTime={0}>
<source src={source} />
<BigPlayButton position="center" />
<LoadingSpinner />
<ControlBar disableCompletely></ControlBar>
</Player>
</div>
);
};
export default VideoPlayer;
๋น๋์ค ํธ์ง ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ player๊ณผ playerState์ ๊ฐ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ์์ ์ปดํฌ๋ํธ์๊ฒ ๊ฐ์ ์ ๋ฌํ๋ ํจ์๋ฅผ props๋ก ๋ฐ์์๋ค.
๋ง๋ฌด๋ฆฌ
๋๋ฌด ์ฝ๊ฒ ๋น๋์ค๋ฅผ ์ ์ดํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๊ฒ ๋์ด ์ข์๋ค.
์์ผ๋ก๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ๊ฒ ๊ฐ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฌธ์๋ฅผ ์ฝ๊ณ ํ๋ก์ ํธ์ ์ ์ฉํ๋ ๋ฅ๋ ฅ๋ ์ฌ๋ผ๊ฐ ๊ฒ ๊ฐ์ ๋ฟ๋ฏํ๋ค.