smilish67/rodumani
3.3
If you are the rightful owner of rodumani and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Remotion video editing platform utilizes a Model Context Protocol (MCP) server to provide direct editing capabilities.
Remotion ์์ํธ์ง MCP ์๋ฒ
Remotion ๊ธฐ๋ฐ์ ์น ์์ํธ์ง ํ๋ซํผ์ผ๋ก, MCP (Model Context Protocol) ์๋ฒ๋ฅผ ํตํด ์ง์ ์ ์ธ ํธ์ง ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๐ฏ ์ฃผ์ ๊ธฐ๋ฅ
1. ๋ฏธ๋์ด ํ์ผ ๊ด๋ฆฌ
- ํ์ผ ์ ๋ก๋: ๋น๋์ค, ์ค๋์ค, ์ด๋ฏธ์ง ํ์ผ ์ง์
- ๋ฉํ๋ฐ์ดํฐ ์ถ์ถ: ํด์๋, ์ง์์๊ฐ, ํ์ผํฌ๊ธฐ ๋ฑ ์๋ ์ถ์ถ
- ์ธ๋ค์ผ ์์ฑ: ๋น๋์ค ๋ฐ ์ด๋ฏธ์ง ํ์ผ์ ์ธ๋ค์ผ ์๋ ์์ฑ
- ํ์ผ ํ์ ์ง์: MP4, MOV, AVI, MP3, WAV, JPG, PNG ๋ฑ
2. ํ์๋ผ์ธ ํธ์ง
- ๋ฉํฐํธ๋ ์ง์: ๋น๋์ค, ์ค๋์ค, ์๋ง ํธ๋ ๋ ๋ฆฝ ๊ด๋ฆฌ
- ์ ๋ฐํ ์๊ฐ ์กฐ์ : ํ๋ ์ ๋จ์ ํธ์ง ๊ฐ๋ฅ
- ๋๋๊ทธ ์ค ๋๋กญ: ์ง๊ด์ ์ธ ๋ฏธ๋์ด ๋ฐฐ์น
- ์ค์๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ: ํธ์ง ์ค ์ฆ์ ๊ฒฐ๊ณผ ํ์ธ
3. ํธ์ง ์์
- ํธ๋ฆผ: ์์/๋์ ์กฐ์ ์ผ๋ก ํด๋ฆฝ ๊ธธ์ด ํธ์ง
- ๋ถํ : ํน์ ์ง์ ์์ ํด๋ฆฝ์ ๋๋ก ๋๋๊ธฐ
- ์ด๋: ํ์๋ผ์ธ ์์์ ํด๋ฆฝ ์์น ์ด๋
- ๊ฒน์นจ ํด๊ฒฐ: ์๋์ผ๋ก ์ถฉ๋ํ๋ ํด๋ฆฝ ์ ๋ฆฌ
- ์คํ ์ทจ์/๋ค์ ์คํ: ๋ชจ๋ ํธ์ง ์์ ๋๋๋ฆฌ๊ธฐ ๊ฐ๋ฅ
4. ๋ ์ด์์ ๋ฐ ๋ฐฐ์น
- 2D ๋ณํ: ์์น, ํฌ๊ธฐ, ํ์ , ํฌ๋ช ๋ ์กฐ์
- ๋ ์ด์ด ๊ด๋ฆฌ: ์ฌ๋ฌ ๋ฏธ๋์ด์ ์ธต๋ณ ๋ฐฐ์น
- ํคํ๋ ์ ์ ๋๋ฉ์ด์ : ์๊ฐ์ ๋ฐ๋ฅธ ์์ฑ ๋ณํ
- ํธ๋์ง์ ํจ๊ณผ: fadeIn, fadeOut, slide ๋ฑ
๐๏ธ ์ํคํ ์ฒ
ํต์ฌ ์ปดํฌ๋ํธ
1. MediaFileManager (src/utils/mediaUtils.ts
)
// ๋ฏธ๋์ด ํ์ผ ์
๋ก๋ ๋ฐ ๊ด๋ฆฌ
const mediaManager = new MediaFileManager();
const mediaFile = await mediaManager.uploadFile(file);
2. TimelineManager (src/utils/timelineUtils.ts
)
// ํ์๋ผ์ธ ๋ฐ ํธ์ง ์์
๊ด๋ฆฌ
const timeline = new TimelineManager(30); // 30fps
const track = timeline.createTrack('Video Track', 'video');
timeline.addItemToTrack(trackId, mediaItem);
3. MCPVideoEditingServer (src/api/mcpInterface.ts
)
// MCP ์๋ฒ ์ธํฐํ์ด์ค
const server = new MCPVideoEditingServer();
const sessionId = server.createSession();
const response = await server.handleRequest(mcpRequest);
MCP API ์๋ํฌ์ธํธ
์ธ์ ๊ด๋ฆฌ
session.create
: ์ ํธ์ง ์ธ์ ์์ฑsession.delete
: ์ธ์ ์ญ์ session.list
: ํ์ฑ ์ธ์ ๋ชฉ๋ก
๋ฏธ๋์ด ๊ด๋ฆฌ
media.upload
: ํ์ผ ์ ๋ก๋media.list
: ๋ฏธ๋์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์กฐํmedia.delete
: ํ์ผ ์ญ์ media.get_info
: ํ์ผ ์ ๋ณด ์กฐํ
ํ์๋ผ์ธ ํธ์ง
timeline.create_track
: ์ ํธ๋ ์์ฑtimeline.add_item
: ๋ฏธ๋์ด๋ฅผ ํธ๋์ ์ถ๊ฐtimeline.move_item
: ํด๋ฆฝ ์ด๋timeline.trim_item
: ํด๋ฆฝ ํธ๋ฆผtimeline.split_item
: ํด๋ฆฝ ๋ถํtimeline.get_state
: ํ์ฌ ํ์๋ผ์ธ ์ํ
ํธ์ง ์์
edit.undo
: ์คํ ์ทจ์edit.redo
: ๋ค์ ์คํrender.export
: ๋น๋์ค ๋ด๋ณด๋ด๊ธฐ
๐ ์์ํ๊ธฐ
์ค์น
npm install
๊ฐ๋ฐ ์๋ฒ ์คํ
npm run dev
๋น๋
npm run build
๐ป ์ฌ์ฉ ์์
๊ธฐ๋ณธ ํธ์ง ์ํฌํ๋ก์ฐ
// 1. MCP ํด๋ผ์ด์ธํธ ์ด๊ธฐํ
const client = new MCPClient('http://localhost:3000/mcp');
await client.startSession();
// 2. ๋ฏธ๋์ด ํ์ผ ์
๋ก๋
const mediaFile = await client.uploadMedia(fileData, 'video.mp4', 'video/mp4');
// 3. ํธ๋ ์์ฑ ๋ฐ ๋ฏธ๋์ด ์ถ๊ฐ
const track = await client.createTrack('Main Video', 'video');
const mediaItem = await client.addToTimeline(track.id, mediaFile.id, 0);
// 4. ํธ์ง ์์
await client.trimItem(track.id, mediaItem.id, 30, 180); // 30-180ํ๋ ์ ๊ตฌ๊ฐ๋ง ์ฌ์ฉ
// 5. ๋ด๋ณด๋ด๊ธฐ
const exportId = await client.exportVideo('mp4', 'high');
๊ณ ๊ธ ํธ์ง ๊ธฐ๋ฅ
// ํคํ๋ ์ ์ ๋๋ฉ์ด์
const keyframeManager = new KeyframeManager();
keyframeManager.addKeyframe(itemId, {
frame: 0,
property: 'opacity',
value: 0,
easing: 'ease-in'
});
keyframeManager.addKeyframe(itemId, {
frame: 30,
property: 'opacity',
value: 1,
easing: 'ease-in'
});
// ํ์ฌ ํ๋ ์์์ ๊ฐ ๊ณ์ฐ
const currentOpacity = keyframeManager.getValue(itemId, 15, 'opacity'); // 0.5
๐จ ์ปดํฌ๋ํธ ๊ตฌ์กฐ
MyComposition
๋ฉ์ธ ๋น๋์ค ์ปดํฌ์ง์ ์ผ๋ก, ๋ชจ๋ ๋ฏธ๋์ด ์์๋ค์ ๋ ๋๋งํฉ๋๋ค.
<MyComposition
mediaItems={mediaItems}
timelineControls={timelineControls}
/>
EditorDemo
ํธ์ง ์ธํฐํ์ด์ค ๋ฐ๋ชจ ์ปดํฌ๋ํธ์ ๋๋ค.
<EditorDemo
width={1280}
height={720}
fps={30}
/>
๐ ํ๋ก์ ํธ ๊ตฌ์กฐ
src/
โโโ Composition.tsx # ๋ฉ์ธ ๋น๋์ค ์ปดํฌ์ง์
โโโ Root.tsx # Remotion ๋ฃจํธ ์ปดํฌ๋ํธ
โโโ utils/
โ โโโ mediaUtils.ts # ๋ฏธ๋์ด ํ์ผ ๊ด๋ฆฌ ์ ํธ๋ฆฌํฐ
โ โโโ timelineUtils.ts # ํ์๋ผ์ธ ํธ์ง ์ ํธ๋ฆฌํฐ
โโโ api/
โ โโโ mcpInterface.ts # MCP ์๋ฒ ์ธํฐํ์ด์ค
โโโ demo/
โโโ EditorDemo.tsx # ํธ์ง ๋ฐ๋ชจ ์ปดํฌ๋ํธ
๐ Acknowledgments
- Remotion - React ๊ธฐ๋ฐ ๋น๋์ค ์ ์ ํ๋ ์์ํฌ
- Model Context Protocol - AI ์์ด์ ํธ ํต์ ํ๋กํ ์ฝ