במאמר הזה נסביר את העקרונות הבסיסיים של קובצי מדיה, כמו הקונספט של קונטיינר, וכמה מהפורמטים הזמינים של קודק שאפשר להשתמש בהם בשידור. בנוסף, נגעו מעט בנושאים כמו סטרימינג גמיש, קצב העברת נתונים ורזולוציה – אבל נתעמק בהם בחלקים הבאים.
הצגת קובצי וידאו
אפשר לחשוב שאפשר לקחת קובץ גולמי ממצלמת וידאו ולהעלות אותו לאינטרנט כפי שהוא. אכן, אתרי סטרימינג של וידאו כמו YouTube או Vimeo מאפשרים לעשות זאת, ואפילו לספק יכולות של סטרימינג בשידור חי – בדרך כלל באמצעות חיבור ליציאת ה-HDMI של המצלמה ועיבוד המידע באמצעות כרטיס צילום. השירותים האלה מפשטים מאוד את העיבוד וההעלאה של סרטונים, כולל יצירת קבצים ומניפסטים רבים שדרושים לסטרימינג מותאם ולרזולוציות שונות. בנוסף, יש עוד דרישות מורכבות וייחודיות שהופכות את האירוח העצמי לקצת מאמץ מסובך. הכנת סרטון והצגה של סרטון מהאתר שלכם, וסביר להניח שהוא שרת מדיה נפרד, הן קצת יותר מסובכות מאשר העלאה של קובץ גולמי של המצלמה, אם חשוב לכם לראות איך המשתמשים חווים את האתר.
קובצי וידאו מגיעים במגוון פורמטים. הפורמט שהתקבל מהמצלמה הוא בדרך כלל קובץ .mov
, או .mp4
אם יש לכם מצלמה מודרנית טובה ללא מראה.
עם זאת, .mov
אמנם מתאים להקלטה ולעריכה ולתהליכים מוקדמים אחרים של פוסט-פרודקשן, אבל בגלל גודל הקובץ הוא לא מתאים לסטרימינג באינטרנט. בנוסף, הגודל של קובץ .mp4
גולמי ב-4K יהפוך את הפעלת הקובץ בנייד למאוד קשה. מכיוון שדפדפנים תומכים בפורמטים שונים של קבצים, תצטרכו ליצור מספר קבצים שעברו אופטימיזציה, ואולי גם מניפסט, אם אתם מתכננים לתמוך בסטרימינג מותאם. לפני שממירים קבצים, חשוב להבין כמה דברים בסיסיים עליהם ועל המאפיינים שלהם.
קונטיינרים, רכיבי קודק ו-stream?
הקובץ שמופיע במעטפת של מערכת ההפעלה הוא מאגר תגים, שמזהה אותו באמצעות סיומת הקובץ (.mp4
, .webm
, .ogg
וכו'). הקונטיינר מכיל שידור אחד או יותר. קובץ מדיה יכול להכיל מספר רב של שידורים, ומגוון פורמטים רחב יותר מכפי שמפורט כאן.
הקבצים לדוגמה שישמשו בהמשך הקטע הזה מכילים שני שידורים לכל היותר: שידור אודיו ושידור וידאו. במאמר הזה מפורטים כתוביות ונתונים שלא קשורים לכל אחד מהסוגים האחרים. יש מקרים שבהם יש טיפול נפרד בסטרימינג של וידאו ואודיו. רוב הקבצים יכללו רק שידור אודיו אחד ושידור וידאו אחד.
בשידורי האודיו והווידאו, הנתונים עצמם נדחסים באמצעות קודק. קודק, או מקודד/מפענח, הוא פורמט דחיסה לנתוני וידאו או אודיו. ההבחנה בין קונטיינר לבין קודק חשובה, כי אפשר לקודד קבצים עם אותו קונטיינר באמצעות רכיבי קודק שונים.
התמונה הבאה ממחישה את המבנה הזה. בצד שמאל מופיע המבנה הבסיסי של הקונטיינר עם שני זרמי נתונים. בצד שמאל מופיעים הפרטים של המבנה הזה של קובץ WebM יחיד.
![השוואה בין המבנה של קובץ המדיה לקובץ מדיה היפותטי](https://web.dev/static/articles/media-file-basics/image/comparing-media-file-stru-58d7e1713333f.png?authuser=5&hl=he)
קבצים בקונטיינרים של WebM יכולים להיות קטנים בהרבה מפורמטים אחרים, ולכן הם בחירה טובה לשידור של אתרים לנייד. לצערנו, לא כל הדפדפנים תומכים בקונטיינרים וברכיבי קודק עדכניים. לדוגמה, WebM נוצר במיוחד עבור האינטרנט כאפשרות באיכות גבוהה וקוד פתוח, אבל התמיכה שלו עדיין אינה אוניברסלית. לפי ההגדרה Can I use, נכון למועד כתיבת ההודעה הזו, Safari לא תומך ב-WebM בסרטונים מוטמעים. עם זאת, ל-WebM יש תמיכה חלקית בקודק VP8 ו-VP9 שנמצא בשימוש ב-WebRTC. לכן האפשרות הטובה ביותר היא לספק סרטון חלופי.
פורמטים של קודק
סוגי קבצים רבים תומכים במספר רכיבי קודק בתוך אותו מאגר. הרשימה המלאה של רכיבי קודק הווידאו ורכיבי Codec האודיו הזמינים היא אתר שלם לעצמו. הקישורים שסופקו משמשים לרשימות השימושיות של MDN באינטרנט. בהמשך מפורטים סוגי הקבצים המועדפים בשלב זה, ורכיבי הקודק שבהם הם עשויים להשתמש. לוחצים על הקישורים לסוגי הקבצים כדי להציג את הדפדפנים שתומכים בהם.
סוג קובץ | codec של וידאו | קודק אודיו |
---|---|---|
MP4 | AV1, AVC (H.264)*, VP9 | AAC |
WebM | AV1, VP9* | Vorbis, Opus |
* מציין את קודק הווידאו המועדף.
קצב העברת נתונים ורזולוציה
קצב העברת נתונים הוא מספר הביטים המקסימלי שמשמש לקידוד שנייה אחת של סטרימינג. ככל שמשתמשים בכמות גדולה יותר של ביטים לקידוד שנייה של זרם, כך גוברים הסיכויים והדיוק. מידע נוסף על המושג הזה מופיע בקטע קצב העברת נתונים.
רזולוציה היא כמות המידע בפריים יחיד של וידאו, הנתון כמספר הפיקסלים הלוגיים בכל מימד. בפתרון מופיע מידע נוסף על המושג הזה.
בשלב הבא, בקטע מידע בסיסי על אפליקציות מדיה, נסביר איך לבחון את המאפיינים האלה באמצעות שני כלי שורת הפקודה: Shaka Packager ו-FFmpeg.