כדי לתמוך במספר דפדפנים, צריך להשתמש ב-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 |
בשלב הבא נסביר איך לשנות את קצב הנתונים של הקבצים החדשים שיצרתם.