2012-03-22 34 views
2

我目前在這個問題上工作了幾個小時。我必須創建一個程序,當用戶從訪問硬盤驅動器的子窗口獲取視頻時,我必須從該視頻獲取幀速率和其他屬性。以任何方式編程獲取視頻的FPS?

以下是我如何獲取視頻及其某些屬性的示例代碼。

SelectDirectoryWindow selectDirectoryWindow = (sender as SelectDirectoryWindow); 
     if (selectDirectoryWindow.DialogResult.GetValueOrDefault(false)) 
     { 
      foreach (System.IO.FileInfo fileInfo in selectDirectoryWindow.VideoFiles) 
      { 
       VideoFileInfo videoFileInfo = new VideoFileInfo(); 
       videoFileInfo.FileName = fileInfo.Name; 
       videoFileInfo.Path = fileInfo.FullName; 
       videoFileInfo.Extension = fileInfo.Extension; 
       videoFileInfo.FileSize = fileInfo.Length; 

       switch (videoFileInfo.Extension.ToUpper()) 
       { 
        case ".WMV": 
         videoFileInfo.VideoFileType = Constants.VideoFileType.Wmv; 
         break; 
        case ".MOV": 
         videoFileInfo.VideoFileType = Constants.VideoFileType.ProResHq; 
         break; 
        case ".MPG": 
         videoFileInfo.VideoFileType = Constants.VideoFileType.Mpeg2; 
         break; 
        case ".ISM": 
         videoFileInfo.VideoFileType = Constants.VideoFileType.SmoothStreaming; 
         break; 
        case ".MP4": 
         videoFileInfo.VideoFileType = Constants.VideoFileType.iPad; 
         break; 
        default: 
         break; 
       } 

有沒有什麼辦法可以讓我從這個得到幀速率,視頻持續時間和比特率?我能做些什麼來獲得幀速率和比特率?提前致謝。

回答

7

我找到了答案。 Microsoft.WindowsAPICodePack.Shell上有一個ShellFile類。在那裏你可以獲得視頻的屬性,只需要給它的文件來源(文件路徑)。你可以從那裏得到任何東西。

以下是我如何獲得幀率。

ShellFile shellFile = ShellFile.FromFilePath(sourceFile); 
     return (shellFile.Properties.System.Video.FrameRate.Value/1000).ToString(); 
相關問題