Любой способ программно получить FPS видео? - PullRequest
2 голосов
/ 22 марта 2012

В настоящее время я работаю над этой проблемой в течение нескольких часов. Мне нужно создать программу, которая, когда пользователь получает видео из дочернего окна, которое обращается к вашим жестким дискам, должна получать частоту кадров и другие свойства этого видео.

Вот пример кода того, как я получаю видео и некоторые их свойства.

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

Можно ли из этого получить частоту кадров, длительность видео и битрейт? Что я могу сделать, чтобы получить частоту кадров и битрейт? Заранее спасибо.

1 Ответ

7 голосов
/ 28 марта 2012

Я нашел ответ.Существует класс ShellFile в Microsoft.WindowsAPICodePack.Shell.Там вы можете получить свойства видео, просто укажите источник файла (filepath).И вы можете получить что-нибудь оттуда.

Вот как я получил частоту кадров.

 ShellFile shellFile = ShellFile.FromFilePath(sourceFile);
        return (shellFile.Properties.System.Video.FrameRate.Value / 1000).ToString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...