קונטיינרים ורכיבי קודק

Derek Herman
Derek Herman
Joe Medley
Joe Medley

כדי לתמוך במספר דפדפנים, צריך להשתמש ב-FFmpeg כדי להמיר את הקובץ .mov לשני קונטיינרים שונים: קונטיינר MP4 וקונטיינר WebM. בפועל, סביר להניח שתציינו גם קודק באותו זמן. בינתיים, אנחנו מאפשרים ל-FFmpeg להשתמש בהגדרות ברירת המחדל שלו.

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

אנחנו משתמשים בהתקנה המומלצת של Docker ובקובץ glocken.mov מהכנת קובצי מדיה לאינטרנט שנוסף בתיקייה media. השתמשנו ב-FFmpeg בגרסה 4.3.2 לכל הפקודות בקטע הזה.

קונטיינרים

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

  1. MP4

    /media # ffmpeg -i glocken.mov glocken.mp4
    
  2. WebM

    /media # ffmpeg -i glocken.mov glocken.webm
    

יצירת קובץ WebM נמשכת יותר זמן מיצירת קובץ MP4. התוצאות לא מפתיעות. קובץ MP4 נדחס לגודל של כ-83% מהגודל המקורי, ואילו קובץ WebM נדחס לגודל של כ-78% מהגודל המקורי, אבל יכול להיות קטן בהרבה. התוצאות עשויות להשתנות. חשוב לציין ש-FFmpeg 4.2.2 הגדיר את ברירת המחדל של קצב העברת הנתונים של הסרטון ל-200k, וב-4.3.2 הוא לא מגדיר קצב העברת נתונים המוגדר כברירת מחדל. לכן הסרטון כבר לא רק4% מהסרטון המקורי. אפשר לראות זאת בעצמכם באמצעות פקודת bash ls -a בתיקייה שבה נמצאים קובצי המדיה.

לדוגמה:

/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root   9503301 Mar 7 18:30 glocken.webm

כדי לקבל קובץ קטן, במקום זאת:

/media # ffmpeg -i glocken.mov -b:v 200k glocken.webm
...
frame=  300 fps=3.6 q=0.0 Lsize=     483kB time=00:00:10.01 bitrate= 395.0kbits/s speed=0.121x
video:359kB audio:117kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.356068%
/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root    494497 Mar 7 18:45 glocken.webm

בדיקת העבודה

כדי לאמת את התוצאות, משתמשים ב-FFmpeg וב-shaka Packager כבר מופיעים ביסודות של אפליקציית מדיה:

/media # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4

רכיבי קודק

השלב הבא הוא הקודק. כפי שמוסבר בקטע יסודות של קובצי מדיה, קודק לא זהה לקונטיינר (סוג הקובץ). שני קבצים מאותו סוג מאגר יכולים להכיל נתונים שהולחצו באמצעות רכיבי קודק שונים. לדוגמה, בפורמט WebM אפשר לקודד אודיו באמצעות Vorbis או Opus. כדי לשנות את הקודק, אנחנו משתמשים ב-FFmpeg. לדוגמה, הפקודה הזו יוצרת קובץ .mkv עם קודק אודיו מסוג vorbis וקודק וידאו מסוג av1.

/media # ffmpeg -i glocken.mov -c:a vorbis -c:v av1 glocken.mkv

בדוגמה הזו, הדגל -c:a והדגל -c:v משמשים לציון קודקי האודיו והווידאו, בהתאמה.

בדף Media conversion מפורטות הפקודות הנדרשות להמרת קודיקים. בטבלאות הבאות מפורט סיכום של הספריות שבהן נעשה שימוש ב-FFmpeg כדי לבצע את המרות הקודק לקובצי WebM ו-MP4. אלה הפורמטים המומלצים ל-DASH ול-HLS, בהתאמה.

וידאו

קודק Extension ספרייה
av1 WebM,‏ mkv libaom-av1
h264 MP4 libx264
vp9 WebM libvpx-vp9

אודיו

קודק Extension ספרייה
AAC MP4 AAC
opus WebM libopus
vorbis WebM libvorbis

בשלב הבא נסביר איך לשנות את קצב הנתונים של הקבצים החדשים שיצרתם.