מדריך לכתוביות עם ffdshow וה Vista Media Center

אחת מהבעיות שמשתמשי ה VMC - Vista Media Center - נתקלים בה היא הצגת כתוביות חיצוניות, כדוגמת כתוביות בפורמט srt ...

19:00
  /  
11.06.2008
  
כתב: קלוד בן שאול, עורך: אלי חבוש

 

מבוא

אחת מהבעיות שמשתמשי ה VMC – Vista Media Center – נתקלים בה היא הצגת כתוביות חיצוניות, כדוגמת כתוביות בפורמט srt או sub idx. הסיבה לכך נעוצה בתמיכה המינימאלית של נגן ה VMC הנסמך על האפשרויות שיש לנגן ה Windows Media Player. מבחינה מעשית הצגת כתוביות ב VMC מוגבלת לפורמט של כתוביות ב DVD ולפורמט נוסף והרבה פחות נפוץ בשם SMIL. הפתרון עד כה היה להשתמש בתוכנת הפילטר VSFilter, שידועה גם בשם DirectVobSub, אבל זהו פתרון בעייתי היות ופיתוח התוכנה הופסק בשנת 2005 ויש שנתקלים בבעיות שבה הפילטר לא נטען או שנטען יותר מידי פעמים.

לכאורה הפתרון המתבקש הוא הצגת הפילטרים דרך ffdshow שממילא מכיל את אותו בסיס קוד כמו VSFilter אבל שפיתוחו נמשך במרץ רב עד עצם היום הזה. הבעיה שמתגלה לכל מי שניסה זאת הוא שיש חוסר עקביות בהצגת כתוביות דרך ffdshow ולא תמיד ברור מדוע כתוביות מוצגות בסרט אחד אבל לא בשני. מטרת מדריך קצר זה היא להסביר את הסיבות לתופעה ולהציג פתרון כולל. כהערת אגב, המאמר תקף גם למשתמשי ה Windows XP MCE 2005.

הבעיה בהרחבה

ברוב המקרים כתוביות מוצגות על ידי הלבשת נדבך (layer) נוסף על גבי התמונה לאחר שהיא פוענחה ולפני שהיא נשלחת ל renderer. למעשה זה סוג נוסף של עיבוד ווידאו שבא לאחר הפענוח, מה שגם מוכר בשם postprocessing. מסיבות השמורות עמם, אבל כנראה קשורות בסוגיית הגנת תוכן, החליטו במיקרוסופט לשמר את נתיב הווידיאו ולא לאפשר לפילטרים נוספים גישה בין המפענח (codec) לבין ה renderer. הבעיה אינה קיימת כאשר המפענח הוא גם ה postprocessor – כפי שזה קורה עם ffdshow. לעומת זאת כאשר הפענוח מתרחש ב codec שאינו יודע להציג כתוביות, כדוגמת CoreAVC, מה שקורה הוא שהווידיאו נשלח הישר משלב הפענוח למסך דרך ה renderer מבלי לאפשר לפילטר נוסף לשלב את הכתוביות.

הבעיה מחריפה בסרטים שקודדו בפורמט שמור, כדוגמת WMV, שבו ה Windows Media Player אינו מאפשר כלל שימוש ב codec חיצוני. במקרה זה ה WMP יוצר וקובע בעצמו את נתיב הווידיאו (בונה את הגראף) וחוסם כל אפשרות לשילוב תוכנות נוספות שאינן plugin מאושר.

מובן שהבעיה אינה חלה רק על הצגת כתוביות אלא גם על כל עיבוד ווידאו מתקדם הדורש טיפול בתמונה בשלב שבין הפענוח ל renderer. לרוע המזל בניית הגראף לווידיאו הוא אחד מהתהליכים שבו ה VMC משתמש בפונקציות של ה WMP, כך שאין דרך פשוטה לעקוף את המגבלה.

הפתרון

ה"טריק" הגדול הוא למצוא דרך לרמות את ה WMP ולגרום לו להאמין ש ffdshow נטען יחד עם המפענח ולא אחריו. לצורך כך יש לדאוג לתנאים שגרסת ה ffdshow תהייה ffdshow tryout בגרסה 1773 ומעלה – כלומר מאוחרת יותר מה Beta4. ניתן להוריד את הגרסאות המתאימות מהאתר הרשמי של הפרויקט ב SourceForge. יש לדאוג גם שגרסת ה Windows Media Player תהייה גרסה 11 בלבד.

לאחר התקנת הגרסה המתאימה יש לפתוח את ffdshow video decoder configuration, לגשת לאפשרויות של ה codecs ולגלול את המסך מצד ימין עד לשורה האחרונה המציגה את הפורמט Raw video.
יש לשנות את האפשרות בעמודת ה decoder ממצב בברת המחדל של disabled למצב all supported. כמו כן, יש לאשר את האפשרות של Enable in WMP11, בדיוק כפי שמוצג במסך להלן.

פעולה זו תאפשר ל ffdshow לקבל מהמפענח את הווידיאו ולהשתלב לפני ה renderer. כל שנותר הוא לגשת לאפשרויות של פילטר ה subtitle ב ffdshow ולשנות אותם לפי ההעדפות אישיות שלכם.

מגבלות ופתרונות חלופיים

כפי שהזכרנו מקודם, סרטים שקודדו באחד מהפורמטים השמורים, כדוגמת WMV, מפוענחים תמיד על ידי ה codecs הפנימיים של WMP ושימור נתיב הווידיאו נשמר שם בקנאות מוכפלת שאינה מאפשרת בכלל את הטענת ffdshow. הפתרון כאן הוא המרת קובץ הכתוביות לפורמט SAMI באמצעות תוכנת Subtitle Workshop שניתן להוריד מהאתר של חברת URUWorks. בנוסף יש להפעיל את התמיכה בכתוביות ב WMP וזה מתבצע דרך מסך ה security שניגשים אליו מתפריט ה tools ובו בוחרים את אפשרות ה options. במסך ה security יש לאשר את האפשרות של Show local captions when present כפי שמופיע במסך להלן.

למי ששכח, התמיכה בכתוביות של DVD מופעלת ישירות מתפריט ה Play בבחירת האפשרות ל Lyrics, Captions and Subtitles.

להמשך הדיון בפורומים לחצו כאן


19:00
  /  
11.6.2008
  
כתב: קלוד בן שאול, עורך: אלי חבוש

1