כדי לתמוך במספר דפדפנים, צריך להשתמש ב-FFmpeg כדי להמיר את הקובץ .mov
לשני קונטיינרים שונים: קונטיינר MP4 וקונטיינר WebM. בפועל, סביר להניח שתציינו גם קודק באותו זמן. בינתיים, אנחנו מאפשרים ל-FFmpeg להשתמש בהגדרות ברירת המחדל שלו.
אם המושגים האלה חדשים לכם, כדאי לקרוא את המאמר מושגים בסיסיים לגבי קובצי מדיה לפני שממשיכים. בנוסף, אם FFmpeg לא מותקן, קראו את המאמר מידע בסיסי על אפליקציות מדיה כדי להגדיר אותו ב-Docker.
אנחנו משתמשים בהתקנה המומלצת של Docker ובקובץ glocken.mov מהכנת קובצי מדיה לאינטרנט שנוסף בתיקייה media
. השתמשנו ב-FFmpeg בגרסה 4.3.2 לכל הפקודות בקטע הזה.
קונטיינרים
קודם כול, צריך ליצור את שני הקונטיינרים מקובץ .mov
עם סיומת הקובץ .mp4
ו-.webm
, עם שידור אודיו ווידאו בתוך הקובץ.
אם אתם לא יודעים מה ההבדל בין קובצי מארז לבין קובצי סטרימינג, כדאי לעיין במאמר יסודות של קובצי מדיה.
MP4
/media # ffmpeg -i glocken.mov glocken.mp4
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 |
בשלב הבא נסביר איך לשנות את קצב הנתונים של הקבצים החדשים שיצרתם.