azosi · 2026.7.29 01:45 · 조회 1

Remotion Player

Remotion Player는 React 컴포넌트로, Remotion 영상을 React 앱 어디든 임베드할 수 있게 해준다. 미리보기·웹 SaaS·쇼케이스 등에 사용.


📦 설치

npm i @remotion/player

🚀 기본 사용법

import { Player } from "@remotion/player";
import { MyComposition } from "./MyComposition";

export const App = () => {
  return (
    <Player
      component={MyComposition}
      durationInFrames={300}     // 10초 @ 30fps
      compositionWidth={1920}
      compositionHeight={1080}
      fps={30}
      controls                  // 자체 컨트롤 UI 표시
    />
  );
};

🎛️ 주요 Props

prop설명
component렌더링할 React 컴포넌트
durationInFrames총 프레임 수
compositionWidth / compositionHeight컴포지션 크기
fps프레임레이트
controlstrue면 자체 컨트롤 표시
looptrue면 끝나면 처음으로
autoplay자동 재생
muted음소거
playbackRate배속 (1=원본)
inputProps컴포지션에 주입할 props
style컨테이너 스타일 (크기, 위치)
showVolumeControls음량 컨트롤 표시

🔄 Ref로 제어

PlayerRef로 외부에서 재생·일시정지·탐색 제어:

import { Player, PlayerRef } from "@remotion/player";
import { useRef } from "react";

const App = () => {
  const playerRef = useRef<PlayerRef>(null);

  return (
    <>
      <button onClick={() => playerRef.current?.play()}>Play</button>
      <button onClick={() => playerRef.current?.pause()}>Pause</button>
      <button onClick={() => playerRef.current?.seekTo(60)}>1초로 이동</button>

      <Player
        ref={playerRef}
        component={MyComposition}
        durationInFrames={300}
        compositionWidth={1920}
        compositionHeight={1080}
        fps={30}
      />
    </>
  );
};

PlayerRef 메서드

메서드설명
play()재생
pause()일시정지
seekTo(frame)특정 프레임으로 이동
seekTo(time)특정 시간(초)으로 이동
getCurrentFrame()현재 프레임 반환
isPlaying()재생 중 여부
mute() / unmute()음소거/해제
setVolume(volume)음량 설정 (0~1)

🖼️ 컨테이너 크기 맞추기

컴포지션은 1920×1080이지만 화면에 맞게 스케일 다운:

<Player
  component={MyComposition}
  durationInFrames={300}
  compositionWidth={1920}
  compositionHeight={1080}
  fps={30}
  style={{ width: "100%", maxWidth: 800, aspectRatio: "16/9" }}
/>

📌 Player는 컴포지션 비율 유지하며 컨테이너에 맞춰 자동 스케일


🔁 이벤트 핸들러

<Player
  component={MyComposition}
  durationInFrames={300}
  compositionWidth={1920}
  compositionHeight={1080}
  fps={30}
  onPlay={() => console.log("Play")}
  onPause={() => console.log("Pause")}
  onEnded={() => console.log("Ended")}
  onError={(e) => console.error("Error", e)}
  onTimeUpdate={(frame) => console.log("Frame", frame)}
  onClick={() => console.log("Clicked")}
/>

🎨 커스텀 컨트롤

controls={false}로 숨기고 직접 UI 만들기:

<Player
  ref={playerRef}
  component={MyComposition}
  durationInFrames={300}
  compositionWidth={1920}
  compositionHeight={1080}
  fps={30}
  controls={false}
  // ...
/>
<div>
  <button onClick={() => playerRef.current?.play()}>▶</button>
  <button onClick={() => playerRef.current?.pause()}>⏸</button>
</div>

⚠️ 알아둘 점

  • 렌더링 ≠ 미리보기 — Player는 실시간 미리보기일 뿐, mp4로 저장되지 않음. mp4로 만들려면 Client-side Rendering 사용
  • Props 동적 변경inputProps 변경 시 자동 리렌더 (useEffect 의존성 처리 필요할 수 있음)
  • 메모리 — 큰 컴포지션 + 여러 인스턴스는 메모리 많이 사용

📚 영역 구분

상위 문서: ← Remotion Studio & Player 출처: Remotion 공식 문서 — Player 한글화 (2026-07-29) 공급사: Remotion AG

변경 이력

날짜변경
2026-07-29초판 작성 (공식 Player 가이드 한글화)
2026-07-29메타데이터 블록을 본문 하단으로 이동

댓글

아직 댓글이 없습니다.

댓글을 작성하려면 로그인이 필요합니다.