$ man how-to/build-remotion-video-system

כלי CLIadvanced

איך לבנות מערכת רינדור וידאו עם React ו-Remotion

בלי GPU, בלי After Effects - קומפוננטות React שמרנדרות ל-MP4 בתוך ה-monorepo שלך

by Shawn Tenam


מה זה Remotion ולמה הוא מתאים

Remotion הוא פריימוורק React שמרנדר וידאו פריים אחרי פריים. אתה כותב קומפוננטות JSX. Remotion מעריך כל פריים ב-FPS היעד ומקודד את התוצאה ל-MP4, WebM, או GIF. לא צריך GPU. לא צריך עורך ציר זמן. לא צריך After Effects. כל הצינור רץ ב-Node.js על לפטופ רגיל. היתרון המרכזי בהגדרת monorepo הוא שקומפוננטות הווידאו יכולות לייבא את אותם חבילות משותפות כמו האתרים שלך. Design tokens, אובייקטי נתונים, פלטות צבעים, והגדרות טיפוסים משותפים לכל ה-codebase. שנה ערך hex בחבילה המשותפת והאתרים והווידאו מתעדכנים ב-build הבא.
PATTERN

ארכיטקטורת יחסי גובה-רוחב מרובים

הגדר פריסטים של יחס גובה-רוחב כאובייקט קבוע: linkedin (1080x1350, 4:5), reels (1080x1920, 9:16), landscape (1920x1080, 16:9). צור hook בשם useScale() שמנרמל את כל הרינדור לרזולוציית בסיס (1080x1350) ומשנה קנה מידה באופן יחסי. כל מותג מקבל שלוש קומפוזיציות ב-Root.tsx - אחת לכל יחס גובה-רוחב - שחולקות את אותו עץ קומפוננטות. תשע קומפוזיציות מ-codebase אחד: שלושה מותגים כפול שלושה פורמטים. רישום הקומפוזיציות הוא מקור האמת היחיד למה שמרונדר. הוספת מותג חדש זה שלוש שורות ב-Root.tsx, לא בנייה מחדש של קומפוננטות.
CODE

קומפוזיציה מבוססת סצנות עם TransitionSeries

כל וידאו הוא רצף של סצנות מחוברות באמצעות TransitionSeries מ-@remotion/transitions. כל סצנה היא קומפוננטת React עם מספר פריימים קבוע שמוגדר בקובץ תזמון מרכזי. קובץ תזמון V3 מגדיר ארבע סצנות בסך הכל 310 פריימים ב-30fps (בערך 10 שניות): Hook (36 פריימים), BootWikiBlitz (110 פריימים), Progression (100 פריימים), CtaNetwork (94 פריימים), עם חפיפה של 10 פריימים בין סצנות למעברים חלקים. קובץ התזמון הוא נקודת הבקרה היחידה לקצב הווידאו. שינוי של מספר אחד משנה את כל הקצב בלי לגעת בקוד של אף קומפוננטה.
PATTERN

אנימציה דטרמיניסטית עם Perlin Noise

Remotion דורש רינדור דטרמיניסטי. Math.random() מייצר ערכים שונים בכל פריים ושובר את הרינדור. הפתרון הוא Perlin noise מ-@remotion/noise. פונקציית noise2D מקבלת מחרוזת seed, קואורדינטות x ו-y ומחזירה מספר עשרוני דטרמיניסטי. תן seed לפי instance של קומפוננטה (אינדקס עמודה, אינדקס חלקיק) והנע אותו עם מספר הפריים. MatrixRain משתמש ב-noise לבחירת תווים, סחיפת עמודות, ושימור שקיפות. ParticleField משתמש בשני זרמי noise בלתי תלויים ל-x ו-y בתוספת שלישי לפעימה. TypewriterText משתמש במתמטיקה פשוטה של פריימים לחשיפת תווים. אותו seed, אותה תוצאה, בכל רינדור. אנימציה אורגנית שניתנת לשחזור מלא.
PATTERN

SceneWrapper וטיפול ויזואלי

קומפוננטת SceneWrapper מחילה טיפול ויזואלי אחיד על כל סצנה: רקע קנבס כהה, וינייט רדיאלי להכהיית שוליים, שטיפת צבע דגש בשקיפות נמוכה, שדה חלקיקים אמביינט, גרגירי פילם באמצעות SVG feTurbulence, ושכבת קווי סריקה לאסתטיקת CRT. ה-wrapper מקבל prop של צבע דגש שצובע את כל הסצנה. סצנת BootWikiBlitz מחליפה בין פלטת הצבעים של המותג כשכרטיסי ויקי מתהפכים - ירוק, טיל, ענבר, סגול - נותנת לכל כרטיס תחושה ייחודית תוך שמירה על עקביות ויזואלית. Design tokens נמצאים בקובץ tokens.ts שממפה שמות מותגים לצבעים ומגדיר את מערך הגופנים המשותף.
PRO TIP

צינור רינדור ופריסה

הרץ npm run render:all כדי לייצר את כל תשע הגרסאות. Remotion מרנדר כל קומפוזיציה לפריימים ואז מקודד ל-MP4. הפלט הולך ל-website/apps/video/out/ ונפרס לתיקיית public/video/ של כל אתר. אינדקס התוכן של SQLite עוקב אחרי כל קובצי הווידאו עם המותג, יחס גובה-רוחב, פורמט וסטטוס פריסה. כל הצינור רץ מקומית על MacBook. בלי render farm בענן. בלי שירות חיצוני. ה-CI של ה-monorepo יכול להפעיל רינדורים ב-push אם צריך, אבל לצורך מהירות איטרציה, רינדור מקומי ב-30fps לווידאו של 10 שניות לוקח שניות, לא דקות.

מדריכים קשורים
איך לבנות מערכת הנדסת תוכן משלךאיך לבנות אינדקס תוכן SQLite עבור הריפו שלך
ויקי מדריכיםמדריך ידע
ShawnOS.ai|theGTMOS.ai|theContentOS.ai
built with Next.js · Tailwind · Claude · Remotion