התחלתי לבדוק איך המחשב בסלון מתמודד עם וידאו של 1920X1080 בקידוד H264 – זה וידאו Full HD שיש בBlueRay, וזה מה שאני ארצה להציג על המקרן (שמתמהמה קצת, אולי היום).
המחשב הוא פנטיום D במהירות שעון של 3Ghz, זכרון של 2GB וכרטיס מסך GeForce 8600 GT 512MB, לכאורה לא אמור להיות קובץ וידאו שיהיה מעבר לכוחותיו.
ניסיתי לנגן עליו עם mplayer קובץ דגימה של Matrix – שישים שניות סרט בקובץ של 70 מגה – והמחשב לא סחב אותו כמו שצריך:
הווידאו זז לאט, והסאונד יצא מסינכרון עם התמונה מהר מאוד.
מחשב שהיה פאר היצירה לפני שנתיים, לא סוחב היום משימה של ניגון וידאו. מי אומר שאין צורך במעבדים יותר חזקים?
לשם הבדיקה, ניסיתי את אותו קובץ במחשב החדש – פנטיום Core-DUO 3Ghz, זכרון 4GB וכרטיס מסך GeForce 9800 GT 512MB והוא סחב אותו יפה מאוד.
אז נראה על פניו שצריך מפלצת רצינית כדי לנגן את הקבצים האלו, יותר מהתפלצון שיש לי בסלון.
נסיון ראשון, הדרייבר של כרטיס המסך:
הבדיקה שלי היתה כשxorg, שרת הX (השרת שאחראי על מערכת החלונות והתצוגה) עבד עם הדרייבר הגנרי vesa ולא עם הדרייבר של NVidia כי היתה לי בעיה עם הדרייבר האחרון שלהם.
ניסיתי את הדרייבר nv, שהוא דרייבר פתוח קוד לכרטיסי NVIDIA שלא תומך בהאצת תלת מימד, ולא היה שיפור.
התקנתי את הדרייבר של NVIDIA במחשב בסלון (ונאלצתי להשתמש בגרסא קודמת שהתקנתי לפני כמה שבועות במחשב החדש), עדיין אין שיפור.
למרות שכרטיסי NVIDIA החדשים מגיעים עם תמיכה בפענוח קבצי וידאו בחומרה – טכנולוגיה בשם PureVideo, הדרייברים שלהם ללינוקס לא תומכים בזה, ולכן אף פרוייקט קוד פתוח ללינוקס לא משתמש ביכולת הזו של החומרה.
אז שימוש בחומרה הזו יורד מהפרק כדי להאיץ את העסק, לפחות עד שNVIDIA ישחררו דרייבר שתומך בזה.
נסיון שני, שדרוג של mplayer:
החבר'ה בערוץ הirc של mplayer נבהלו כשסיפרתי להם על איזו גרסא אני בודק:
[code]
[rsk] same mplayer version's?
[omry] hmm, sec
[rsk] also using svn generally speeds up things compared to RC2.
[rsk] especially if you are using a distro package
[omry] hmm, actually the mplayer on the slower box looks older :MPlayer 1.0rc1-4.1.2 (C) 2000-2006 MPlayer Team
[omry] compared to MPlayer dev-SVN-r25315 on the faster box
[rsk] that's ancient
[rsk] please burn it with fire
[omry] dispatching the nukes 🙂
[/code]
כדי להיות בטוח שאני מריץ את הגרסא הכי מהירה שאפשר, הסרתי את הגרסא המותקנת, הורדתי את הקוד העדכני מsvn, ובניתי אותו חיש מהר.
התקנתי, בדקתי, ועדיין העסק זז לאט מדי על המחשב בסלון.
נסון שלישי, שימוש בכמה ליבות:
זוכרים את עסק הביש שבו גוגל סגרה פרוייקט בגוגל קוד לפני כמה שבועות?
כל העסק הוא בדיוק מסביב לזה, CoreAVC הוא פרוייקט מסחרי שמאפשר שימוש בכמה ליבות כדי לפענח H264 בצורה מהירה. הפרוייקט לא תומך בלינוקס – אבל אנשים במצב דומה לשלי החליטו שהם גורמים לו לעבוד על לינוקס בדרכים עקלקלות.
בכל אופן, להתקין קוד סגור נוסף מעבר לדרייבר של NVIDIA זה דבר שהייתי רוצה להמנע ממנו, במיוחד לאור ההיסטוריה הבעייתית של של הפרוייקט.
נסיון רביעי, נגנים אחרים:
טוב, אז אולי mplayer לא כתוב הכי טוב, ונגן אחר יעשה עבודה יותר טובה.
xine בכלל לא ניגן את הקובץ.
VLC ניגן את הקובץ, אבל נראה שהוא מפיל פריימים בצורה שגורמת לווידאו להראות זוועה כשהמחשב לא סוחב אותו (מציג טוב על המחשב המהיר, קטסטרופה על האיטי).
טוב שיהיה mplayer.
נסיון חמישי ודי:
הרצתי את mplayer עם פרמטר -benchmark, והוא סיפר לי די מהר שהמחשב איטי מדי:
[code]
************************************************
**** Your system is too SLOW to play this! ****
************************************************
Possible reasons, problems, workarounds:
– Most common: broken/buggy _audio_ driver
– Try -ao sdl or use the OSS emulation of ALSA.
– Experiment with different values for -autosync, 30 is a good start.
– Slow video output
– Try a different -vo driver (-vo help for a list) or try -framedrop!
– Slow CPU
– Don't try to play a big DVD/DivX on a slow CPU! Try some of the lavdopts,
e.g. -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all.
– Broken file
– Try various combinations of -nobps -ni -forceidx -mc 0.
– Slow media (NFS/SMB mounts, DVD, VCD etc)
– Try -cache 8192.
– Are you using -cache to play a non-interleaved AVI file?
– Try -nocache.
[/code]
יופי של הודעת שגיאה.
כדי לשלול בעיה של קול או דרייבר תצוגה איטי, הרצתי את mplayer עם
[code]
mplayer -benchmark -vo null -ao null file.mkv
[/code]
מה שמריץ את הווידאו בלי סאונד ובלי תצוגה – פענוח בלבד – לא היה שיפור.
ניסיתי את ההצעה השניה:
[code]
mplayer -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all file.mkv
[/code]
פה כבר היה שיפור אדיר – הסרט רץ חלק
לא הרגשתי ירידה באיכות, למרות שאמורה להיות איזו שהיא פגיעה באיכות.
אז נראה שככה אני אריץ את הסרטים מהרזולוציה הזו לעת עתה, המפתחים של mplayer טוענים שהם משפרים את הביצועים שלו בפענוח h264 על בסיס כמעט יומי, גם בהיבט של מיקבול (שימוש בכמה ליבות) וגם בהיבט של שיוף ביטים (פענוח יותר מהיר על כל ליבה). אני אבדוק מדי פעם אם הם שיפרו מספיק כדי שאני אוכל לוותר על הפרמטר הזה.