שקיפות אלפא בסרטונים ב-Chrome
גרסת Chrome 31 תומכת עכשיו בשקיפות אלפא של וידאו ב-WebM.
במילים אחרות, Chrome מתייחס לערוץ האלפא כשמפעילים סרטוני 'מסך ירוק' בקידוד WebM (VP8 ו-VP9) עם ערוץ אלפא. כלומר, אפשר להפעיל סרטונים עם רקעים שקופים: מעל דפי אינטרנט, תמונות או אפילו סרטונים אחרים.
הדגמה זמינה בכתובת simpl.info/videoalpha. זה קצת סוריאליסטי וקצת מחוספס (ממש) אבל הבנתם את הרעיון!
איך יוצרים סרטוני אלפא
בשיטה שאנחנו מתארים נעשה שימוש בכלים בקוד פתוח Blender ו-FFmpeg:
- מצלמים את הנושא מול רקע בצבע אחד, כמו וילון ירוק בוהק.
- מעבדים את הסרטון כדי ליצור מערך של תמונות סטילס בפורמט PNG עם נתוני שקיפות.
- קידוד לפורמט וידאו (במקרה הזה, WebM).
יש גם כלים קנייניים שאפשר להשתמש בהם לאותה מטרה, כמו Adobe After Effects, שעשויים להיות פשוטים יותר לשימוש.
1. איך יוצרים סרטון עם מסך ירוק
קודם כול, צריך לצלם את הנושא כך שאפשר יהיה 'להסיר' (להפוך לשקוף) את כל מה שמופיע ברקע בתהליך העיבוד.
הדרך הקלה ביותר לעשות זאת היא לצלם מול רקע בצבע אחד, כמו מסך או וילון. ירוק או כחול הם הצבעים הנפוצים ביותר, בעיקר בגלל ההבדל שלהם מצבעי עור.
יש מספר מדריכים באינטרנט לצילום סרטונים עם מסך ירוק (שנקראים גם 'כרומה-קי'), ובמקומות רבים אפשר לקנות רקעים ירוקים וכחולים. לחלופין, אפשר לצייר רקע באמצעות צבע של מפתח צבע.
סרטון ה-VFX של הסרט 'ג'אטפיי' מראה כמה אפשר להשיג באמצעות מסך ירוק.
כמה טיפים לצילום:
- חשוב לוודא שהנושא של הסרטון לא לובש בגדים או נושא חפצים באותו צבע כמו הרקע, אחרת הם יופיעו כ 'חורים' בסרטון הסופי. גם תכשיטים או סמלי לוגו קטנים יכולים להוות בעיה.
- השתמשו בתאורה עקבית ואחידה והימנעו מעיבורים: המטרה היא שתהיה לכם טווח צבעים קטן ככל האפשר ברקע, שיהיה צורך להפוך לשקוף בהמשך.
- שימוש בכמה מקורות אור מפוזרים עוזר למנוע צללים ורעידות בצבע הרקע.
- הימנעו מרקעים מבריקים: משטחים מטים מפזרים את האור טוב יותר.
2. יצירת סרטון אלפא גולמי מסרטון עם מסך ירוק
בשלבים הבאים מוסבר איך יוצרים סרטון אלפא גולמי מסרטונים עם מסך ירוק:
- אחרי שצילמתם סרטון עם מסך ירוק, תוכלו להשתמש בכלי קוד פתוח כמו Blender כדי להמיר את הסרטון למערך של קובצי PNG עם נתוני אלפא. משתמשים ב-color keying של Blender כדי להסיר את המסך הירוק ולהפוך אותו לשקוף. (שימו לב שפורמט PNG הוא לא חובה: כל פורמט ששומר את נתוני ערוץ האלפא מתאים).
ממירים את מערך קובצי ה-PNG לסרטון YUVA גולמי באמצעות כלי קוד פתוח כמו ffmpeg:
ffmpeg -i image%04d.png -pix_fmt yuva420p video.raw
לחלופין, אפשר לקודד את הקבצים ישירות ל-WebM באמצעות פקודה של ffmpeg, לדוגמה:
ffmpeg -i image%04d.png output.webm
אם רוצים להוסיף אודיו, אפשר להשתמש ב-ffmpeg כדי למזג אותו באמצעות פקודה כמו זו:
ffmpeg -i image%04d.png -i audio.wav output.webm
3. קידוד סרטון אלפא ל-WebM
יש שתי דרכים לקידוד סרטוני אלפא גולמיים ל-WebM.
באמצעות ffmpeg: הוספנו תמיכה ב-ffmpeg לקידוד סרטוני WebM אלפא.
משתמשים ב-ffmpeg עם סרטון קלט שכולל נתוני אלפא, מגדירים את פורמט הפלט כ-WebM והקידוד יתבצע באופן אוטומטי בפורמט הנכון בהתאם למפרט. (הערה: בשלב הזה צריך לוודא שמורידים את הגרסה האחרונה של ffmpeg מעץ ה-git כדי שהפעולה הזו תפעל).
פקודה לדוגמה:
ffmpeg -i myAlphaVideo.webm output.webm
באמצעות webm-tools:
git clone https://chromium.googlesource.com/webm/libvpx
webm-tools היא קבוצה של כלים פשוטים בקוד פתוח שקשורים ל-WebM, שמנוהלים על ידי מחברי פרויקט WebM, כולל כלי ליצירת סרטוני WebM עם שקיפות אלפא.
מריצים את הקובץ הבינארי עם
--help
כדי לראות את רשימת האפשרויות שנתמכות על ידי alpha_encoder.
4. הפעלה ב-Chrome
כדי להפעיל את קובץ ה-WebM המקודד ב-Chrome, פשוט מגדירים את הקובץ כמקור של רכיב וידאו.
איך הם עשו את זה?
דיברנו עם Vignesh Venkatasubramanian, מהנדס ב-Google, על העבודה שלו בפרויקט. הוא סיכם את האתגרים המרכזיים:
- לא היה תמיכה בערוץ אלפא בזרם הביט של VP8. לכן נאלצנו לשלב את האלפא בלי לשבור את מקור הנתונים של VP8 בלי לשבור את הנגנים הקיימים.
- הנגן של Chrome לא היה מסוגל לעבד סרטונים עם אלפא.
- ל-Chrome יש כמה נתיבים לעיבוד גרפיקה למכשירי חומרה/GPU שונים. כל נתיב עיבוד הנתונים השתנה כדי לתמוך בעיבוד של סרטוני אלפא.
יש לנו הרבה דוגמאות מעניינות לשימוש בשקיפות אלפא בסרטונים: משחקים, סרטונים אינטראקטיביים, שיתוף פעולה ביצירת סיפורים (הוספת סרטון משלכם לסרטון או לתמונה ברקע), סרטונים עם דמויות או עלילות חלופיות, אפליקציות אינטרנט שמשתמשות ברכיבי וידאו שכבת-על.
בהצלחה ביצירת הסרט! נשמח לשמוע אם יצרתם משהו מדהים באמצעות שקיפות אלפא.