שילוב כתוביות לתוך קובצי וידאו בלינוקס
הורדתם סרט וקובץ כתוביות .srt תואם, והייתם רוצים שהשניים ייסעו יחד כך שכל נגן יציג את הכתוביות בלי
שיצטרכו לומר לו היכן למצוא אותן. יש שתי דרכים לעשות זאת, וההבדל ביניהן חשוב.
כתוביות רכות: השאירו אותן כרצועה
כתובית רכה היא רצועה נפרדת בתוך המכולה, לצד הווידאו והשמע. הנגן יכול להדליק או לכבות אותה, והווידאו אינו נגוע, ולכן אין אובדן איכות והפעולה נמשכת שנייה מפני ששום דבר אינו מקודד מחדש.
עם mkvmerge מחבילת mkvtoolnix, לתוך קובץ Matroska:
mkvmerge -o movie.mkv movie.mp4 --language 0:eng subtitles.srt
עם ffmpeg, בהעתקת כל זרם ובהוספת רצועת הכתוביות:
ffmpeg -i movie.mp4 -i subtitles.srt -c copy -c:s mov_text movie_out.mp4
ה--c copy הוא החלק החשוב: הוא אומר להעתיק את הזרמים כמות שהם ולא לקודד מחדש. לפלט MKV אפשר להשמיט
את mov_text ולתת ל-SRT להישאר SRT; mov_text הוא קודק הכתוביות ש-MP4 רוצה.
רכות היא ברירת המחדל הנכונה. היא נטולת אובדן, הפיכה, ומשאירה לצופה לבחור.
כתוביות קשיחות: צרבו אותן פנימה
לפעמים אתם צריכים את הכתוביות מצוירות לתוך התמונה עצמה, מפני שהמכשיר היעד אינו יכול להציג רצועת כתוביות, או מפני שאתם מעלים למקום שמתעלם מהן. זה נקרא צריבה, והוא כן מקודד מחדש את הווידאו, ולכן הוא איטי יותר ועולה מעט באיכות:
ffmpeg -i movie.mp4 -vf subtitles=subtitles.srt movie_hardsubbed.mp4
ברגע שנצרבו אי אפשר לכבות אותן. עשו זאת רק כשאתם חייבים.
התאמת קבצים בכמות
אם יש לכם תיקייה של סרטונים ותיקייה של כתוביות בשם זהה חוץ מהסיומת, אינכם רוצים להקליד את הפקודה פעם לכל קובץ. הנה סקריפט פייתון קטן שמתאים אותם לפי שם הבסיס ומשלב כל אחד:
#!/usr/bin/env python3
import subprocess
from pathlib import Path
for video in Path(".").glob("*.mp4"):
srt = video.with_suffix(".srt")
if not srt.exists():
print(f"no subtitle for {video.name}, skipping")
continue
out = video.with_name(video.stem + ".subbed.mkv")
subprocess.run(
["mkvmerge", "-o", str(out), str(video),
"--language", "0:eng", str(srt)],
check=True,
)
print(f"{video.name} + {srt.name} -> {out.name}")
הוא מתאים בגלוב כל .mp4, מחפש את ה-.srt של אותו שם בסיס, מדלג על אלה בלי התאמה במקום להיכשל,
וכותב .subbed.mkv חדש כך שהמקוריים נשארים לבדם. שנו את הגלוב ואת תג השפה לפי הצורך.
במה להשתמש
הושיטו יד לכתוביות רכות אלא אם משהו כופה את ידכם. הן אינן עולות דבר, הן הפיכות, והן משאירות את הבחירה למי שצופה. צרבו פנימה רק למכשיר או לשירות שאינו יכול לקרוא רצועת כתוביות, ושמרו את העותק עם הכתוביות הרכות כמאסטר שלכם.