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

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 מיועדים לציון האודיו קודק הווידאו בהתאמה.

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

וידאו

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

אודיו

קודק Extension ספרייה
AAC MP4 AAC
אופוס WebM ליבופוס
וורביס WebM libvorbis

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