על מנת לתמוך במספר דפדפנים, צריך להשתמש ב-FFmpeg כדי להמיר את קובץ .mov
לשני קונטיינרים שונים: מאגר MP4 וקונטיינר של WebM. בפועל, סביר להניח שתציינו קודק באותו זמן. בינתיים, אפשר ל-FFmpeg להשתמש בברירות המחדל שלו.
אם אתם לא מכירים את המושגים האלה, כדאי לקרוא את העקרונות הבסיסיים של קובצי מדיה לפני שתמשיכו. בנוסף, אם לא מותקן במחשב שלכם FFmpeg, כדאי לקרוא את המאמר מידע בסיסי על אפליקציות מדיה כדי להתקין אותו ב-Docker.
אנחנו משתמשים בהצעה להתקנה של Docker ובקובץ glocken.mov מ-Prepare media files for the Web שנוספו לספרייה 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
משמשים לציון רכיבי הקודק של האודיו והווידאו בהתאמה.
הדף המרת מדיה מפרט את הפקודות הנדרשות להמרת רכיבי קודק. הטבלאות הבאות מסכמת את הספריות שמשמשות ב-FFmpeg לביצוע המרות של Codec לקובצי WebM ו-MP4. אלה הפורמטים המומלצים ל-DASH ול-HLS בהתאמה.
וידאו
קודק | תוסף | ספרייה |
---|---|---|
av1 | WebM, mkv | libaom-av1 |
h264 | MP4 | libx264 |
vp9 | WebM | libvpx-vp9 |
אודיו
קודק | תוסף | ספרייה |
---|---|---|
AC | MP4 | AC |
אופוס | WebM | Libopus |
Vorbis | WebM | Libvorbis |
בשלב הבא נראה לך איך לשנות את קצב העברת הנתונים של קבצים חדשים שיצרת.