Wednesday, October 13, 2010

Width Height and Duration of wmv file

כיצד אפשר לקבל מידע על גובה רוחב וזמן (בשניות) של קובץ wmv
כדי לעבוד בקוד עם קבצי wmv צריך להוסיף reference ל - Interop.WMPLib.dll (תוכלו להוריד אותו מכאן, אם אתם לא מוצאים את זה במחשב שלכם)
לאחר מכן תוכלו לכתוב את הקוד הבא
public class VideoProperties
{
   public int Width { get; set; }
   public int Height { get; set; }
   public long Duration { get; set; }
   public VideoProperties(string fileName)
   {
       WindowsMediaPlayerClass wmp = new WindowsMediaPlayerClass();
       IWMPMedia mediaInfo = wmp.newMedia(fileName);
       wmp.currentMedia = mediaInfo;
       Thread.Sleep(1000);
       Width = mediaInfo.imageSourceWidth;
       Height = mediaInfo.imageSourceHeight;
       wmp.stop();
       Duration = (long)mediaInfo.duration;
       wmp.close();
   }
}

למעשה את אורך הסרט לקבל אחרי השורה השנייה של ה - ctor, אבל כדי לקבל את הרוחב והגובה חייבים להגדיר את ה - currentMedia אחרת מקבלים 0, הסיבה לעצירת התוכנית למשך שנייה היא לתת זמן לסרט להיטען.
נקודה חשובה: במידה ותעשו את זה ב - win form application אתם חייבים להוריד את ההגדרה STAThread מעל ה - main.

Read more: שלמה גולדברג (הרב דוטנט)