עד לפני כמה שנים, בכל פעם שהייתי צריך לבצע פעולות קטנות על קבצי וידאו – להמיר לפורמט אחר, לחתוך כמה שניות, לשרשר קבצים או אפילו רק להשתיק אודיו – הייתי מוצא את עצמי עושה אחת משתי אפשרויות: פותח תוכנת עריכה מקצועית ומלאה, כזו שרק מלהפעיל אותה המחשב מתחיל להעלות עשן (היי Adobe Premiere אני מסתכל עליך), או מוצא איזו תוכנה קטנה וזבלית שנועדה לעשות זאת ומגיעה בעסקת חבילה עם פרסומות, כריית קריפטו על המחשב ו־UI תמוה.
עד שגיליתי את FFmpeg וחיי השתנו מן הקצה אל הקצה.
מה זה FFmpeg בעצם?
FFmpeg הוא כלי עיבוד עוצמתי לאודיו ולוידאו. הוא לא סתם עוד תכנה לעריכת סרטונים, אלא מנוע העיבוד שנמצא מאחורי הקלעים של עשרות תוכנות אחרות. אם ניסיתם אי פעם כלי כמו Audacity, OBS או דומיהם, סיכוי גבוה שהם השתמשו ב־FFmpeg מתחת למכסה המנוע מבלי שידעתם אפילו.
היופי ב־FFmpeg שהוא מסוגל לעשות באמת הכל – להמיר פורמטים, לקודד, לחתוך, לצרף, לשנות רזולוציה, לסנכרן אודיו ווידאו, להוסיף כתוביות, לחלץ פריימים לתמונות – you name it. הרשימה ממשיכה לנצח.
עבודה דרך הטרמינל
FFmpeg פועל אך ורק דרך הטרמינל – שורת הפקודה. זה אולי נשמע מפחיד למי שלא רגיל, אבל היתרון הוא שליטה מדויקת, יעילות גבוהה ומעטפת קלילה עד חסרת משקל לחלוטין – בדיוק הפתרון לבעיה שסבלנו ממנה מלכתחילה.
פקודה טיפוסית ב־FFmpeg נראית ככה:
ffmpeg -ss 00:00:05 -i input.mp4 -to 00:00:10 -c copy output.mp4
הפקודה הזו, למשל, לוקחת את הקובץ input.mp4, חותכת קטע של חמש שניות בין 00:05 ל־00:10, ושומרת אותו כ־output.mp4 בלי לקודד מחדש (מה שהופך את זה למהיר מאוד).
למי שעדיין מעט חושש, הנה הקלה גדולה: לא חייבים לזכור ולהכיר את הסינטקס. לא צריך להיות מומחה בשביל להשתמש ב־FFmpeg. כל כלי AI מודרני יכול בקלות מאוד ליצור עבורכם את שורת הפקודה המדויקת לפי הדרישה שלכם.
איך מתקינים FFmpeg
- לינוקס: ברוב ההפצות אפשר פשוט להריץ
sudo apt install ffmpegאו דומיו. - ב־macOS: דרך Homebrew מריצים
brew install ffmpeg - ב־Windows: להוריד קובץ .exe מ־ffmpeg.org, לחלץ אל תוך תיקייה קבועה במחשב, ולהוסיף אותה ל־PATH במערכת.
אחרי ההתקנה, אפשר לבדוק שפועל כמו שצריך עם ffmpeg -version
דוגמאות בסיסיות לשימושים יומיומיים
חיתוך וידאו
כפי שכבר ראינו:
ffmpeg -ss 00:00:05 -i input.mp4 -to 00:00:10 -c copy output.mp4
ה־flag -ss אומר ל־ffmpeg שהמילה הבאה בפקודה היא חותמת זמן מסוימת שברצוננו לחפש.
ה־flag -i אומר ל־ffmpeg שהמילה הבאה בפקודה היא הכתובת של הסרטון שעליו נרצה לעבוד.
ה־flag -to אומר ל־ffmpeg שהמילה הבאה בפקודה היא חותמת זמן שאליה נרצה "לסמן" מקטע שעליו נעבוד (החל מ־ss).
-c copy אומר שבמקום לקודד מחדש את הסרטון, נרצה להשתמש בקידוד הקיים (מהיר אבל גם מסוכן, נגיע אל זה בהמשך).
output.mp4 הוא הניתוב שאליו נרצה לשמור את הסרטון החתוך.
חשוב לשים לב שכשאומרים מפורשות ל־ffmpeg לא לבצע קידוד מחדש, עשויה להיות סטייה קטנה בין -ss המבוקש לבין הזמן שבו ffmpeg משתמש בפועל, כי הוא משתמש ב־keyframe הקיים הקרוב ביותר לזמן המבוקש. במידה ונרצה חיתוך מדויק לחלוטין, נוכל לבחור לקודד מחדש את הסרטון עם:
ffmpeg -i input.mp4 -ss 00:00:05 -to 00:00:10 output.mp4
פקודה זו תחתוך את הסרטון ותקודד אותו מחדש באמצעות קודק ברירת המחדל של ffmpeg. אפשר גם לדרוש קודקים מסוימים באופן מפורש:
ffmpeg -i input.mp4 -ss 00:00:05 -to 00:00:10 -c:v libx264 -crf 23 -c:a aac output.mp4
שימו לב שהפעם -ss מגיע אחרי קובץ הקלט ולא לפניו, דבר שקובע האם החיתוך יקרה לפי קובץ הקלט (הקידוד הקודם) או קובץ הפלט (הקידוד החדש)
מיזוג שני קבצי אודיו:
ניצור קובץ טקסט בשם list.txt עם תוכן כזה:
file '1.mp3'
file '2.mp3'
ואז נריץ:
ffmpeg -f concat -safe 0 -i list.txt -c copy merged.mp3
ffmpeg ימזג את שני הקבצים וישרשר אותם בזה אחר זה.
המרת פורמט וידאו:
הכי פשוט בעולם!
ffmpeg -i input.mp4 output.webm
חילוץ סאונד מווידאו:
ffmpeg -i video.mp4 -q:a 0 -map a sound.mp3
שינוי רזולוציה של סרטון:
ffmpeg -i input.mp4 -vf scale=1280:720 output_720p.mp4
אחלה של תוכנה!
עוד שימוש ממש נפוץ הוא בשבילי הוא לכווץ וידאו. הפקודה הבאה מכווצת סרטון שצילמתי בטלפון מ-150 מגה ל-8 מגה:
ffmpeg -i input.mp4 -vcodec libx265 -crf 30 output.mp4
שימושי ביותר 🙂