GitHub - remotion-dev/remotion: ๐ŸŽฅ      Make videos programmatically with React
Service

GitHub - remotion-dev/remotion: ๐ŸŽฅ Make videos programmatically with React

remotion-dev
2026.01.23
ยทGitHubยทby ๋„ค๋ฃจ
#React#Video#Programming#Web Technologies#Framework

ํ•ต์‹ฌ ํฌ์ธํŠธ

  • 1Remotion์€ React๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋น„๋””์˜ค๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.
  • 2์ด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” CSS, Canvas, SVG, WebGL ๋“ฑ ์›น ๊ธฐ์ˆ ๊ณผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋…์„ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํšจ๊ณผ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ, React์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๊ฐ•๋ ฅํ•œ composition ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • 3์‚ฌ์šฉ์ž๋Š” `npx create-video@latest` ๋ช…๋ น์–ด๋กœ ์‰ฝ๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Remotion์€ ํŠน์ • ๊ฒฝ์šฐ์— ํšŒ์‚ฌ ๋ผ์ด์„ ์Šค๋ฅผ ์š”๊ตฌํ•˜๋Š” ํŠน๋ณ„ํ•œ ๋ผ์ด์„ ์Šค ์ •์ฑ…์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Remotion์€ React๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋™์˜์ƒ์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ œ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ์˜ ํ•ต์‹ฌ ๋ฐฉ๋ฒ•๋ก ์€ ์ „ํ†ต์ ์ธ ๋™์˜์ƒ ํŽธ์ง‘ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํŒจ๋Ÿฌ๋‹ค์ž„์œผ๋กœ ์ „ํ™˜ํ•˜์—ฌ, React์˜ ์„ ์–ธ์ (declarative) ํŠน์„ฑ๊ณผ ์›น ๊ธฐ์ˆ ์˜ ๊ด‘๋ฒ”์œ„ํ•œ ์ƒํƒœ๊ณ„๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๋ฐฉ๋ฒ•๋ก  ๋ฐ ๊ธฐ์ˆ ์  ์„ค๋ช…:

  1. React ๊ธฐ๋ฐ˜์˜ ๋™์˜์ƒ ๊ตฌ์„ฑ: Remotion์€ ๋™์˜์ƒ์˜ ๊ฐ ์žฅ๋ฉด, ์š”์†Œ, ์• ๋‹ˆ๋ฉ”์ด์…˜์„ React ์ปดํฌ๋„ŒํŠธ(component)๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์›น UI๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ, ๋™์˜์ƒ์˜ ์‹œ๊ฐ์  ์š”์†Œ๋ฅผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ  ์กฐํ•ฉ ๊ฐ€๋Šฅํ•œ ๋‹จ์œ„๋กœ ์ถ”์ƒํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” React์˜ JSX ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ฐ„์˜ ํ๋ฆ„์— ๋”ฐ๋ฅธ ์‹œ๊ฐ์  ๋ณ€ํ™”๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ๋ช…์‹œํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋™์˜์ƒ์˜ ๊ตฌ์กฐ์™€ ๋™์ž‘์„ ์ฝ”๋“œ๋กœ์„œ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ์›น ๊ธฐ์ˆ ์„ ํ†ตํ•œ ๋ Œ๋”๋ง(Rendering): Remotion์€ ๋™์˜์ƒ ์ฝ˜ํ…์ธ ๋ฅผ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋…์ ์ ์ธ ์—”์ง„ ๋Œ€์‹  ์›น ํ‘œ์ค€ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • CSS (Cascading Style Sheets): ๋ ˆ์ด์•„์›ƒ, ์Šคํƒ€์ผ๋ง, ๊ทธ๋ฆฌ๊ณ  transform, opacity์™€ ๊ฐ™์€ ๊ธฐ๋ณธ์ ์ธ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์œ„ํ•ด CSS ์†์„ฑ๊ณผ ํŠธ๋žœ์ง€์…˜(transition)์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • HTML Canvas API: 2D ๊ทธ๋ž˜ํ”ฝ, ๋น„ํŠธ๋งต ์กฐ์ž‘, ๊ทธ๋ฆฌ๊ณ  ํ”ฝ์…€ ๋‹จ์œ„์˜ ์ปค์Šคํ…€ ๋“œ๋กœ์ž‰์— ์‚ฌ์šฉ๋˜์–ด ๋ณต์žกํ•œ ์‹œ๊ฐ ํšจ๊ณผ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
    • SVG (Scalable Vector Graphics): ํ•ด์ƒ๋„์— ๋…๋ฆฝ์ ์ธ ๋ฒกํ„ฐ ๊ทธ๋ž˜ํ”ฝ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ํ’ˆ์งˆ์˜ ๋„ํ˜•, ์•„์ด์ฝ˜, ํ…์ŠคํŠธ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
    • WebGL (Web Graphics Library): GPU ๊ฐ€์†์„ ํ™œ์šฉํ•˜์—ฌ ๊ณ ์„ฑ๋Šฅ 3D ๊ทธ๋ž˜ํ”ฝ, ์…ฐ์ด๋”(shader) ๊ธฐ๋ฐ˜์˜ ๋ณต์žกํ•œ ์‹œ๊ฐ ํšจ๊ณผ, ๊ทธ๋ฆฌ๊ณ  ์‹ค์‹œ๊ฐ„ ๋ Œ๋”๋ง์ด ํ•„์š”ํ•œ ๊ณ ๊ธ‰ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  1. ํ”„๋กœ๊ทธ๋ž˜๋ฐ์  ์ œ์–ด ๋ฐ ๋™์  ์ฝ˜ํ…์ธ  ์ƒ์„ฑ: React์˜ ๊ฐ•๋ ฅํ•œ JavaScript ๊ธฐ๋ฐ˜ ํŠน์„ฑ์„ ํ†ตํ•ด, ๋™์˜์ƒ์˜ ๋ชจ๋“  ์ธก๋ฉด์„ ๋ณ€์ˆ˜(variable), ํ•จ์ˆ˜(function), API ํ˜ธ์ถœ์„ ํ†ตํ•ด ๋™์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ์ธํ™”๋œ(personalized) ๋™์˜์ƒ, ์•Œ๊ณ ๋ฆฌ์ฆ˜์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜, ๋˜๋Š” ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ์†Œ์Šค์™€ ์—ฐ๋™ํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ์ œ์ž‘ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์ด๋‚˜ ์™ธ๋ถ€ API ์‘๋‹ต์— ๋”ฐ๋ผ ๋™์˜์ƒ์˜ ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ๊ทธ๋ž˜ํ”„ ๋“ฑ์„ ๋‹ค๋ฅด๊ฒŒ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. React ์ƒํƒœ๊ณ„ ํ™œ์šฉ:
    • ์ปดํฌ๋„ŒํŠธ ์žฌ์‚ฌ์šฉ์„ฑ(Reusability) ๋ฐ ํ•ฉ์„ฑ(Composition): React์˜ ํ•ต์‹ฌ ๊ฐ•์ ์ธ ์ปดํฌ๋„ŒํŠธ ๋ชจ๋ธ์€ ๋™์˜์ƒ ์ œ์ž‘์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ ๋งŒ๋“  ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ปดํฌ๋„ŒํŠธ๋‚˜ ๊ทธ๋ž˜ํ”ฝ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ค๋ฅธ ๋™์˜์ƒ ํ”„๋กœ์ ํŠธ์—์„œ ์‰ฝ๊ฒŒ ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋ณต์žกํ•œ ์žฅ๋ฉด์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋น ๋ฅธ ์ƒˆ๋กœ๊ณ ์นจ(Fast Refresh): ๊ฐœ๋ฐœ ์ค‘ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ฆ‰์‹œ ๋™์˜์ƒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ์— ๋ฐ˜์˜๋˜์–ด, ์ดํ„ฐ๋ ˆ์ด์…˜(iteration) ์†๋„๋ฅผ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
    • Node.js ๋ฐ NPM/Bun ํŒจํ‚ค์ง€ ์ƒํƒœ๊ณ„: JavaScript ๊ธฐ๋ฐ˜์˜ ๋ฐฉ๋Œ€ํ•œ ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋„๊ตฌ๋ฅผ ๋™์˜์ƒ ์ œ์ž‘ ๊ณผ์ •์— ํ†ตํ•ฉํ•˜์—ฌ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์ด๋ฏธ์ง€ ์กฐ์ž‘, ๋„คํŠธ์›Œํฌ ์š”์ฒญ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ: Remotion์€ React ์ปดํฌ๋„ŒํŠธ๋กœ๋ถ€ํ„ฐ ์›น ๊ธฐ์ˆ ์„ ํ†ตํ•ด ์‹œ๊ฐ์  ํ”„๋ ˆ์ž„(frame)์„ ๋ Œ๋”๋งํ•œ ํ›„, ์ด๋ฅผ ์ผ๋ จ์˜ ์ด๋ฏธ์ง€ ์‹œํ€€์Šค๋‚˜ ๋น„๋””์˜ค ์ฝ”๋ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ข… MP4 ํŒŒ์ผ ๋“ฑ์œผ๋กœ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋ Œ๋”๋ง ํŒŒ์ดํ”„๋ผ์ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์€ ์ผ๋ฐ˜์ ์œผ๋กœ Node.js ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์š”์•ฝํ•˜์ž๋ฉด, Remotion์€ ์›น ๊ฐœ๋ฐœ์ž๊ฐ€ ์ต์ˆ™ํ•œ React ๋ฐ ์›น ๊ธฐ์ˆ  ์Šคํƒ์„ ํ™œ์šฉํ•˜์—ฌ ๋™์˜์ƒ์„ ์ฝ”๋“œ๋กœ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•จ์œผ๋กœ์จ, ๋™์˜์ƒ ์ œ์ž‘์„ ๋”์šฑ ์œ ์—ฐํ•˜๊ณ , ์ž๋™ํ™”๋˜๋ฉฐ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€๋Šฅํ•œ ์˜์—ญ์œผ๋กœ ํ™•์žฅํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.