2012-03-22 56 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(); 
相关问题