我目前正在解决这个问题几个小时。我必须创建一个程序,当用户从访问硬盘驱动器的子窗口获取视频时,我必须从该视频中获取帧速率和其他属性。
以下是我如何获取视频及其部分属性的示例代码。
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;
}
有什么方法可以从中获得帧速率,视频持续时间和比特率?我该怎么做才能获得帧速率和比特率?提前谢谢。
答案 0 :(得分:7)
我找到了答案。 Microsoft.WindowsAPICodePack.Shell上有一个ShellFile类。在那里你可以获得视频的属性,只需给它文件的来源(文件路径)。你可以从那里得到任何东西。
以下是我获得帧率的方法。
ShellFile shellFile = ShellFile.FromFilePath(sourceFile);
return (shellFile.Properties.System.Video.FrameRate.Value / 1000).ToString();