Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 有没有办法通过编程获得视频的FPS?_Wpf_C# 4.0 - Fatal编程技术网

Wpf 有没有办法通过编程获得视频的FPS?

Wpf 有没有办法通过编程获得视频的FPS?,wpf,c#-4.0,Wpf,C# 4.0,我目前在这个问题上工作了几个小时。我必须创建一个程序,当用户从访问硬盘驱动器的子窗口获取视频时,我必须从该视频中获取帧速率和其他属性 下面是我如何获取视频及其一些属性的示例代码 SelectDirectoryWindow selectDirectoryWindow = (sender as SelectDirectoryWindow); if (selectDirectoryWindow.DialogResult.GetValueOrDefault(false))

我目前在这个问题上工作了几个小时。我必须创建一个程序,当用户从访问硬盘驱动器的子窗口获取视频时,我必须从该视频中获取帧速率和其他属性

下面是我如何获取视频及其一些属性的示例代码

 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;
                }

有没有办法也可以从中获得帧速率、视频持续时间和比特率?我能做些什么来获得帧速率和比特率?提前谢谢。

我已经找到答案了。Microsoft.WindowsAPICodePack.Shell上有一个ShellFile类。在那里你可以得到视频的属性,只需给它文件的来源(文件路径)。你可以从那里得到任何东西

这是我如何得到帧速率的

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