wpf - 以编程方式获取视频的 FPS 的任何方法?

标签 wpf c#-4.0

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

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

 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();

关于wpf - 以编程方式获取视频的 FPS 的任何方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9818826/

相关文章:

wpf - WPF 中的切换按钮

单元格上的 WPF DataGrid 源更新已更改

c# - 更改窗口内容 (WPF)

c# - 绑定(bind)到 ItemsControl 的 DataTemplate 内的自定义控件

c# - 从另一个 Action 返回一个 Action 不起作用?

c#-4.0 - Entity Framework Transactionscope - 不回滚第一个事务

c# - 如何将 String[] 转换为 IDictionary<String, String>?

c# - 如何在 Path.Combine() 中使用环境变量?

c#-4.0 - Contract.Ensures 中的自定义方法

c# - 无法将类型 'string' 隐式转换为 'char[]'