מידע בסיסי על קובצי מדיה

Derek Herman
Derek Herman
Joe Medley
Joe Medley

במאמר הזה נסביר על העקרונות הבסיסיים של קובצי מדיה, כמו המושגים של מאגר (container) וחלק מהפורמטים הרבים של קודקים שזמינים לשימוש בשידור. בנוסף, נתייחס בקצרה לנושאים כמו סטרימינג אדפטיבי, קצב נתונים ורזולוציה, אבל נתעמק בכל הנושאים האלה בקטעים הבאים.

הצגת קובצי וידאו

יכול להיות שתחשבו שאפשר לצלם קובץ גולמי ממצלמת וידאו ולהעלות אותו לאינטרנט כפי שהוא. אכן, אתרים של סטרימינג של וידאו כמו YouTube או Vimeo מאפשרים לעשות בדיוק את זה, ואפילו לספק יכולות של סטרימינג בשידור חי – בדרך כלל על ידי חיבור ליציאת ה-HDMI של המצלמה ולאחר מכן עיבוד באמצעות כרטיס לכידת וידאו. השירותים האלה מפשטים מאוד את העיבוד וההעלאה של סרטונים, כולל יצירת המניפסטים והקבצים הרבים שנדרשים לשידור מותאם (adaptive streaming) ולרזולוציות שונות. בנוסף, יש עוד הרבה דרישות מורכבות ועדינות שגורמות לאירוח עצמי להיות משימה לא פשוטה. אם אתם רוצים לשפר את חוויית השימוש של המשתמשים באתר, הכנת סרטון והצגתו מהאתר שלכם, וכנראה גם משרת מדיה נפרד, מורכבת יותר מהעלאה של קובץ גלם מהמצלמה.

יש מגוון פורמטים של קובצי וידאו. הפורמט שמגיע מהמצלמה הוא בדרך כלל קובץ .mov, או קובץ .mp4 אם יש לכם מצלמה מודרנית טובה ללא מראה. עם זאת, קובץ .mov מתאים להקלטה, לעריכה ולתהליכים מוקדמים אחרים של פוסט-פרודקשן, אבל גודל הקובץ לא מתאים לסטרימינג באינטרנט. בנוסף, גודל הקובץ של קובץ .mp4 גולמי ב-4K יהיה גדול מאוד, ולכן יהיה קשה מאוד להפעיל אותו בנייד. מאחר שדפדפנים תומכים בפורמטים שונים של קבצים, תצטרכו ליצור כמה קבצים שעברו אופטימיזציה, ואולי גם מניפסט, אם אתם מתכננים לתמוך בסטרימינג אדפטיבי. לפני שממירים קבצים, חשוב להבין כמה דברים בסיסיים עליהם ועל המאפיינים שלהם.

קונטיינרים, קודקים וזרמים?

הקובץ שמוצג במעטפת של מערכת ההפעלה הוא קונטיינר, שמזוהה לפי סיומת הקובץ (.mp4, ‏ .webm, ‏ .ogg וכו'). הקונטיינר מכיל סטרימינג אחד או יותר. קובץ מדיה יכול לכלול מספר בלתי מוגבל של שידורים, בפורמטים רבים יותר ממה שנרחיב עליו כאן.

קובצי הדוגמה שבהם נעשה שימוש בהמשך הקטע הזה מכילים עד שני שידורים: שידור אודיו ושידור וידאו. בין הסוגים האחרים שעשויים להופיע: כתוביות ונתונים. שני הסוגים האלה לא נכללים במאמר הזה. יש מקרים שבהם נעשה שימוש בשידורי אודיו ווידאו בנפרד. רוב הקבצים שתראו יכללו רק שידור אודיו אחד ושידור וידאו אחד.

בתוך שידורי האודיו והווידאו, הנתונים בפועל דחוסים באמצעות קודק. קודק, או מקודד/מפענח, הוא פורמט דחיסה לנתוני וידאו או אודיו. חשוב להבחין בין קונטיינר לבין קודק, כי התוכן של קבצים באותו קונטיינר יכול להיות מקודד בקודקים שונים.

המבנה הזה מתואר באיור שבהמשך. בצד ימין מוצגת המבנה הבסיסי של הקונטיינר עם שני מקורות. בצד שמאל מפורט המבנה של קובץ WebM יחיד.

השוואה בין המבנה של קובץ מדיה לבין קובץ מדיה היפותטי.
חלקים בקובץ מדיה.

קבצים בקונטיינרים של WebM יכולים להיות קטנים בהרבה מקבצים בפורמטים אחרים, ולכן הם בחירה טובה להעברה בסטרימינג באתרים לנייד. לצערנו, לא כל הדפדפנים תומכים בקונטיינרים ובקודקים עדכניים. לדוגמה, קובצי WebM נוצרו במיוחד לאינטרנט כאפשרות באיכות גבוהה ובקוד פתוח, אבל עדיין אין תמיכה רחבה בהם. דפדפן Safari, במיוחד, לא תומך ב-WebM לסרטונים מוטמעים, לפי Can I use נכון למועד כתיבת המאמר הזה. עם זאת, יש תמיכה חלקית ב-WebM עם הקודקים VP8 ו-VP9 שמשמשים ב-WebRTC. לכן, האפשרות הטובה ביותר היא לספק סרטון חלופי.

פורמטים של קודקים

סוגי קבצים רבים תומכים בכמה קודקים באותו מאגר. רשימה מלאה של קודקים של וידאו וקודקים של אודיו היא אתר שלם בפני עצמו. הקישורים שציינתי הם לרשימות הפרקטיות של MDN לגבי מה שאפשר להשתמש בו באינטרנט. בהמשך מפורטים סוגי הקבצים המועדפים כרגע והקודקים שבהם הם עשויים להשתמש. לוחצים על הקישורים לסוגים השונים של קבצים כדי לראות אילו דפדפנים תומכים בהם.

סוג הקובץ codec של וידאו קודק אודיו
MP4 AV1, ‏ AVC‏ (H.264)*, ‏ VP9 AAC
WebM AV1, ‏ VP9* Vorbis, ‏ Opus

* מציין את הקודק המועדף של הווידאו.

קצב העברת נתונים ורזולוציה

קצב העברת נתונים הוא המספר המקסימלי של ביטים שמשמשים לקידוד שנייה אחת של שידור. ככל שמשתמשים ביותר ביטים לקידוד שנייה של שידור, כך רמת הפירוט והנאמנות הפוטנציאליים גבוהים יותר. מידע נוסף על המושג הזה זמין בקטע קצב נתונים.

רזולוציה היא כמות המידע בפריים אחד של וידאו, שמתבטאת במספר הפיקסלים הלוגיים בכל מאפיין. מידע נוסף על הנושא הזה זמין בקטע פתרון.

בקטע הבא, יסודות של אפליקציות מדיה, נסביר איך לבדוק את המאפיינים האלה באמצעות שני כלים של שורת הפקודה: Shaka Packager ו-FFmpeg.