统计《ASP.Net特供视频教程》总长度
?忽然想統計一下我錄制過的視頻一共多長時間,由于視頻文件很多,一共72個,挨個打開進行累加不是程序員應該想起的辦法。所以就打算寫一個程序來完成這件事,最核心的問題就是“獲得一個視頻文件的時長”。 ffmpeg是一個專業的音頻視頻處理開源技術,借助于它可以完成視頻轉碼、視頻截圖、視頻提取等工作,ffmepg也提供了獲取視頻長度的方法,不過想想只是獲取視頻長度這么一件事就要動用ffmpeg有點“殺雞用牛刀”的感覺,所以就上網搜尋是否有其他獲得視頻文件長度的方法,很快就找到了這樣一篇文章《C# 獲取視頻文件播放時長》,使用下面的代碼就可以獲得視頻文件的長度:
public string GetMediaTimeLen(string path){try{Shell32.Shell shell = new Shell32.ShellClass();Shell32.Folder folder = shell.NameSpace(path.Substring(0, path.LastIndexOf("\\")));Shell32.FolderItem folderitem =folder.ParseName(path.Substring(path.LastIndexOf("\\") + 1));if (Environment.OSVersion.Version.Major >= 6){return folder.GetDetailsOf(folderitem, 27);}else{return folder.GetDetailsOf(folderitem, 21);}}catch (Exception ex){return null;}}?
???????? 把這段代碼放到VS中編譯,發現找不到Shell32.Shell等類,原來還需要手動引入Shell32這個Com組件,太麻煩。我想到借助于C#中的dynamic新特性可以簡化Com組件調用,就把代碼改寫成如下:
public static string GetMediaTimeLen(string path){System.Type objType = System.Type.GetTypeFromProgID("Shell.Application");dynamic shell = System.Activator.CreateInstance(objType);//文件路徑 dynamic folder = shell.NameSpace(path.Substring(0, path.LastIndexOf("\\")));//文件名稱 dynamic folderitem = folder.ParseName(path.Substring(path.LastIndexOf("\\") + 1));if (Environment.OSVersion.Version.Major >= 6){return folder.GetDetailsOf(folderitem, 27);}else{return folder.GetDetailsOf(folderitem, 21);}}?
???????? 接下來的程序就很簡單了,遍歷文件夾下所有的.wmv文件,然后把每個文件的時長累加即可:
string[] files = System.IO.Directory.GetFiles(@"F:\視頻教程\2013年底asp.net公開課\剪輯后", "*.wmv", System.IO.SearchOption.AllDirectories);TimeSpan tsTotal = TimeSpan.Zero;foreach (string file in files){string len = GetMediaTimeLen(file);TimeSpan tsLen = TimeSpan.Parse(len);tsTotal += tsLen;}Console.WriteLine(tsTotal);?
???????? 程序運行了一會就得到了結果“16:27:35”!
???????? 從ASP.Net零基礎到學生熟悉ASP.Net的本質、會使用ASP.Net實現增刪改查程序、掌握Cookie/Session的原理、掌握AJAX到最后使用ASP.Net開發一個企業網站系統,只用16個小時,這種自豪感瞬間爆棚!
如鵬網.Net培訓班正在報名,有網絡的地方就可以參加如鵬網的學習,學完就能高薪就業,點擊此處了解
?
?
?
? ??三年前只要懂“三層架構”就可以說“精通分層架構”;現在則需要懂IOC(AutoFac等)、CodeFirst、lambda、DTO等才值錢;
?
????三年前只要會SQLServer就可以說自己“精通數據庫開發”;現在則需還需要掌握MySQL等開源數據庫才能說是“.Net開源”時代的程序員;
?
????三年前只要會進行用戶上傳內容的安全性處理即可;現在則需要熟悉云存儲、CDN等才能在云計算時代游刃有余;
?
????三年前只要掌握Lucene.Net就會說自己“熟悉站內搜索引擎開發”;現在大家都用ElasticSearch了,你還用Lucene.Net就太老土了;
?
????三年前發郵件還是用SmtpClient;現在做大型網站發郵件必須用云郵件引擎;
?
????三年前緩存就是Context.Cache;現在則是Redis、Memcached的天下;
?
????如鵬網再次引領.Net社區技術潮流!點擊此處了解如鵬網.Net最新課程
?
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的统计《ASP.Net特供视频教程》总长度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何用极致业务基础平台做一个通用企业ER
- 下一篇: android真机上 conn.getO