Я заметил, что в свойствах оболочки каждого медиафайла в Windows 7 продолжительность видеофайла на самом деле называется «длина». Кто-нибудь знает быстрый способ доступа к свойству length с помощью оболочки?Доступ к оболочке оболочки «Длина» (aka Duration) в C#
ответ
Таким образом, я нашел очень короткий и быстрый способ доступа к свойству оболочки «Длина» медиафайла или любому свойству оболочки, если вы знаете эквивалентный номер индекса этого свойства.
Прежде вам нужно добавить ссылку в вашем проекте Shell32 так:
правой кнопкой мыши проект
нажмите кнопку Добавить ссылку
вкладку Нажмите .COM в Добавить ссылку окна
Microsoft Shell Controls and Automation
Нажмите OK
Затем добавить используя Shell32; в вашем коде. И теперь вы можете извлечь свойство длины для каждого мультимедийного файла в папке с методом GetDetailsOf() в цикле Еогеаспа:
string[] supportedExtensions = new[] { ".mov", ".mp4", ".avi", ".mpeg", ".mpg", ".wmv", ".mkv", ".m4v", ".flv" };
var allFiles = Directory.GetFiles(SelectedFolderPath, "*.*", SearchOption.TopDirectoryOnly).Where(s => supportedExtensions.Contains(System.IO.Path.GetExtension(s).ToLower()));
foreach (string name in allFiles)
{
Shell shell = new Shell();
Folder rFolder = shell.NameSpace(@SelectedFolderPath);
FolderItem rFiles = rFolder.ParseName(System.IO.Path.GetFileName(name));
string videosLength = rFolder.GetDetailsOf(rFiles, 27).Trim();
}
Где, «SelectedFolderPath» должен быть папкой вы хотите сканировать и номер 27, который вы видите как параметр в методе GetDetailsOf, является номером индекса для свойства оболочки «Длина», особенно.
Итак, теперь у вас есть продолжительность медиа-файла внутри строки «videosLength» в формате ##: ##: ##.
Надеюсь, это поможет! Приветствия!