C#で動画ファイルの長さ(再生時間)を取得する方法を記載します。
動画ファイルの長さ の確認方法
長さは動画ファイルのプロパティで確認できます。
詳細タブ > ビデオ > 長さ
Shell32.dllのインポート
このプログラムはShell32.dllを使用します。
[参照の追加]画面を開き、「COM」タブの「Microsoft Shell Controls And Automation」を追加してください。
ソースコード
[STAThread] public string GetMovieDurationText(string strMovPath) { FileInfo fi = new FileInfo(strMovPath); string strFileName = fi.FullName; var shellAppType = Type.GetTypeFromProgID("Shell.Application"); dynamic shell = Activator.CreateInstance(shellAppType); Folder objFolder = shell.NameSpace(Path.GetDirectoryName(strFileName)); FolderItem folderItem = objFolder.ParseName(Path.GetFileName(strFileName)); string strDuration = objFolder.GetDetailsOf(folderItem, 27); return strDuration; }
以下のように使います。
// 動画の長さ取得 string strDuration = GetMovieDurationText(@"C:\test.mp4"); Console.WriteLine(strDuration); // -> 00:03:07 // TimeSpanに変換 TimeSpan ts = TimeSpan.Parse(strDuration); Console.WriteLine(ts.Hours); // -> 0 Console.WriteLine(ts.Minutes); // -> 3 Console.WriteLine(ts.Seconds); // -> 7
参考URL
Scriptable Shell Objects (Windows)
コメント