ساخت ویدیو با کد و تست واحد؛ وقتی هوش مصنوعی و برنامهنویسی جایگزین ادوبی پریمیر میشوند — My video has unit tests
خلاصه
یک مهندس نرمافزار برای ساخت ویدیو تبلیغاتی اپلیکیشن خود به جای استفاده از نرمافزارهای تدوین، از جاوااسکریپت، SVG و FFmpeg استفاده کرده است. این رویکرد به او اجازه داده ویدیو را مانند یک نرمافزار تست کند، قابلیتهایی مثل شفافیت تصویر (Alpha) داشته باشد و ۱۲ نسخه زبانی مختلف را از روی یک سورسکد واحد خروجی بگیرد.
ویدیویی که با کد نوشته میشود
تصور کنید برای ساخت یک ویدیوی تبلیغاتی ۱۵ ثانیهای، به جای نرمافزارهای سنگین ادیت ویدیو، از محیط برنامهنویسی خود استفاده کنید. دیوید پرتیلر (David Pertiller)، معمار و مهندس نرمافزار، برای پروژه جانبی خود به نام Petroly (یک اپلیکیشن قیمت سوخت) تصمیم گرفت ویدیوی معرفی را به جای ادیت دستی، با استفاده از کدهای جاوااسکریپت، SVG و ابزارهای متنباز تولید کند. او با کمک عوامل هوش مصنوعی (AI Agents) سیستمی ساخت که در آن هر فریم و انیمیشنی، خروجی تابع زمانی مشخصی است.
معماری فنی: زمان به مثابه تابع SVG
هسته اصلی این سیستم بسیار ساده و در عین حال قدرتمند است:
frame(timeInSeconds) // -> an SVG string for that exact moment
در این روش، هر ثانیه یا کسری از ثانیه از ویدیو به یک رشته SVG تبدیل میشود. برای تبدیل این تصاویر برداری به یک ویدیوی نهایی، رندرکننده ۳۷۵ فریم (برای یک ویدیوی ۱۵ ثانیهای با نرخ ۲۵ فریم بر ثانیه) تولید میکند. سپس کتابخانه sharp هر SVG را به پیکسلهای RGBA تبدیل کرده و در نهایت FFmpeg این فریمها را به همراه موسیقی متن در قالب یک ویدیوی استاندارد انکود میکند.
- پیکسلها و فریمها: جریان کار شامل Time -> SVG -> RGBA pixels -> FFmpeg -> video است.
- خروجی شفاف (Transparent Video): با استفاده از فرمت ProRes 4444 با کانال آلفا در کانتینر MOV، ویدیوهایی با گوشههای گرد و پسزمینه شفاف تولید شده که میتوان آنها را روی هر پسزمینهای قرار داد.
تست واحد (Unit Test) برای ویدیو!
یکی از جذابترین و غیرمنتظرهترین بخشهای این پروژه، نوشته شدن تستهای واحد توسط هوش مصنوعی (Claude Code) برای ویدیو بود. در حالی که یک طراح انسانی باید زمانبندیها را به صورت چشمی چک کند، در این پروژه تستهای خودکار صحت رفتار ویدیو را تضمین میکنند:
- بررسی اینکه نوتیفیکیشن قیمت دقیقاً پس از رسیدن نمودار به هدف ظاهر میشود و قبل از آن دیده نمیشود.
- تست کردن چیدمان و حاشیه امن (Quiet Zone) در کدهای QR.
- بررسی اینکه لیست ایستگاههای سوخت ابتدا بر اساس فاصله و در نهایت بر اساس قیمت مرتب شدهاند.
- اطمینان از اینکه هیچکدام از ۳۷۵ فریم خروجی حاوی مقادیر
NaN،Infinityیاundefinedنباشند.
مدیریت ۱۲ زبان مختلف با یک سورسکد
نگهداری و هماهنگسازی ویدیوها در زبانهای مختلف معمولاً کابوس ادیتورها است. اما در این پروژه، ترجمهها به عنوان یک ورودی (Input) مجزا به رندرکننده داده شدند. این سیستم از ۱۰ زبان مختلف (شامل گویشهای مختلف انگلیسی، پرتغالی و غیره) پشتیبانی میکند. قالببندی محلی اعداد، واحد پول، اندازهگیری فاصله و طول متنها به صورت خودکار محاسبه شده و با کمترین تغییر در طرحبندی اعمال میشوند.
نگاه جامعه هکرنیوز
این پروژه در هکرنیوز نیز مورد توجه قرار گرفت و بحثهایی پیرامون آن شکل گرفت. برخی کاربران اشاره کردند که این ابزار شباهت زیادی به پروژه معروف Remotion دارد که به توسعهنویسان اجازه میدهد با استفاده از React ویدیو بسازند. همچنین برخی به طنز به این نکته اشاره کردند که هرچند نوشتن پستهای وبلاگی توسط هوش مصنوعی گاهی اوقات کیفیت مناسبی ندارد، اما استفاده از کد برای ساخت ویدیوهای مهندسیشده رویکردی کارآمد و خلاقانه است.
چرا این موضوع برای مهندسین نرمافزار اهمیت دارد؟
این پروژه نشان میدهد که چگونه میتوان ابزارهای سنتی غیرمهندسی (مانند نرمافزارهای تدوین ویدیو با اشتراکهای گرانقیمت) را با ابزارهای برنامهنویسی جایگزین کرد. امکان بازبینی تغییرات ویدیو از طریق git diff، استفاده از سیستم کنترل نسخه، نوشتن تستهای خودکار برای زمانبندی انیمیشنها و رندر کردن دقیق فریمهای مدنظر، دنیای خلق محتوای صوتی و تصویری را بیش از پیش به مهندسی نرمافزار نزدیک میکند.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل