یک مستطیل با دو دستت میسازی. بیرون آن، ویدئوی واقعی است؛ داخلش، همان دنیا با یک استایل تازه دیده میشود. ترفند این نیست که AI بفهمد دستهایت کجا هستند؛ ترفند، یک لایهبندی دقیق در مرورگر است.
مدل چه چیزی را میبیند؟
کل ویدیوی اصلی به مدل ویدیو-به-ویدیو فرستاده میشود تا مثلاً به انیمه، خمیر یا یک جهان آیندهنگر تبدیلش کند. مدل تمام پیکسلها را بازسازی میکند: آدم، اتاق، دیوار و حتی دستها.
در یک مسیر جدا، MediaPipe موقعیت ۲۱ نقطه از هر دست را در هر فریم پیدا میکند. نوک شست و اشارهٔ دو دست، چهار گوشهٔ قاب را میسازند. بعد مرورگر فقط همان چهارضلعی را از ویدیوی AI نمایش میدهد.
چهار مرحلهٔ واقعی اثر
۱. بازطراحی ویدیو
یک مدل ویدیویی، کل کلیپ را با استایل انتخابی تو تولید میکند. چون ویدیو را یکجا میبیند، حرکت و پلکزدن طبیعیتر از ادیت تصویر-به-تصویر میماند.
۲. ردیابی دست
MediaPipe یک مدل بینایی کامپیوتری است، نه مدل مولد. برای جلوگیری از لرزش، پروژه از هموارسازی، تشخیص قطعشدن دست از کادر و محدودیت اندازهٔ قاب استفاده میکند.
۳. کامپوزیت
Canvas 2D یا OpenCV دو ویدیو را روی هم میگذارد و با ماسک چهارضلعی، فقط بخش داخل قاب را آشکار میکند. خطچین و نقطههای گوشه صرفاً جزئیات بصری همین لایهاند.
۴. خروجی
در مرورگر با MediaRecorder و در مسیر خط فرمان با ffmpeg فایل نهایی ساخته میشود. این بخش هم بدون AI است.
اول رایگان تست کن، بعد برای AI هزینه کن
هوشمندانهترین بخش پروژه یک حالت آزمایشی است. در آن، داخل قاب بهجای ویدیوی تولیدشده با AI، همان ویدیو با یک فیلتر رنگی نمایش داده میشود. پس تمام زنجیرهٔ ردیابی، ماسک و خروجی را واقعاً امتحان میکنی، فقط محتوای داخل پنجره AI نیست.
Placeholder mode
- داخل قاب: ویدیوی خودت با فیلتر رنگی
- ردیابی، ماسک و خروجی: کاملاً واقعی
- برای چککردن ژست و ثبات قاب
- نامحدود و بدون انتظار
AI mode
- داخل قاب: دنیای بازتولیدشده با مدل ویدیویی
- هزینه و چند دقیقه انتظار
- همان ردیابی و ماسک
- فقط برای برداشتهایی که از قبل خوب تست شدهاند
پس روند درست این است: اول با حالت رایگان مطمئن شو دستها درست قاب میسازند و خروجی سالم است؛ بعد فقط برای بهترین برداشتها generation واقعی اجرا کن.
سختترین بخش، AI نیست: همترازی است
اگر مدل ویدیویی حتی کمی زوم کند، صورت را جابهجا کند یا زمانبندی را تغییر دهد، پنجره فوراً خراب به نظر میرسد: دست واقعی یکجاست و نسخهٔ بازطراحیشده جای دیگر.
برای همین پرامپت باید روی حفظ ژست، حرکت، کادر، پسزمینه و زمانبندی تأکید کند؛ بدون crop، zoom یا recenter. با این وجود، تضمین کامل نیست و باید برای چند بار تلاش آماده باشی.
دقیقاً دنبال چه نتیجهای هستیم؟
این دو نمونه بهترین کاربرد قاب را نشان میدهند: بیرون قاب، واقعیت بدون تغییر میماند؛ داخلش یک هویت تصویری کاملاً متفاوت میبینی. هرچه اختلاف رنگ، نور و بافت بین دو دنیا بیشتر باشد، اثر نهایی واضحتر و جذابتر میشود.


۱۰ پرامپت آماده برای یک قاب چشمگیر
اینها را بهعنوان بخشِ استایل پرامپت وارد کن. برای اینکه ماسک تمیز بماند، آخر هر پرامپت این جمله را هم اضافه کن: preserve exact pose, framing, timing and camera perspective; no zoom, crop, recenter or geometry changes.
چند واقعیت کاربردی قبل از اجرا
- ژست باید قاب باشد. دو دست باز کنار هم کافی نیستند؛ باید واقعاً چهار گوشهٔ یک مستطیل بسازند.
- کلید جدید همیشه مشکل quota را حل نمیکند. سهمیه معمولاً برای Google Cloud Project است، نه تک API key.
- کلیپ کوتاه بهتر است. برای مسیر AI، ۳ تا ۵ ثانیه هم هزینه را پایین نگه میدارد و هم احتمال حفظ کادر را بیشتر میکند.
- حریم خصوصی را فراموش نکن. ویدیوی ورودی فقط وقتی به سرویس بیرونی میرود که تولید AI را اجرا کنی؛ ردیابی و کامپوزیت در دستگاه خودت انجام میشوند.
اگر خواستی خودت اجراش کنی
بعد از بازکردن برنامه، با همین چهار بخش طرفی. لازم نیست از اول API داشته باشی؛ اول با حالت آزمایشی مطمئن شو ژست و قاب درست کار میکنند.

فقط برای تولید واقعی با AI لازم است. کلید در مرورگر میماند و هنگام generation به API گوگل فرستاده میشود.
یک استایل آماده انتخاب کن یا Custom prompt را برای یکی از پرامپتهای بالا بزن.
دستور استایل را اینجا مینویسی؛ برای نتیجهٔ تمیز، جملهٔ حفظ کادر را هم آخرش اضافه کن.
یک کلیپ کوتاه با ژست قاب آپلود کن. برای مسیر AI، ویدیوی ۳ تا ۵ ثانیهای و زیر ۱۵ مگابایت بهترین نقطهٔ شروع است.
راه ساده، اجرای پروژه در مرورگر است:
python3 -m http.server 8124 # سپس: http://localhost:8124
در مسیر خط فرمان، فقط فایل stylize با AI حرف میزند؛ فایل composite صرفاً ردیابی و ماسک را انجام میدهد. این یعنی میتوانی ویدیوی استایلشده را با هر مدل دیگری تولید کنی، به شرطی که با ویدیوی اصلی همتراز باشد.
python3 -m venv .venv .venv/bin/pip install -r requirements.txt export GEMINI_API_KEY=... .venv/bin/python stylize.py input.mp4 -o stylized.mp4 .venv/bin/python composite.py input.mp4 stylized.mp4 -o final.mp4
منبع پروژه: finger-frame-effect-ai روی GitHub · نسخهٔ زنده: دموی پروژه
