昨天的教程里寫着預計MFC播放器會隔得久一點,但是今晚仔細看了下VLC的常用代碼,發現VLC封裝得真好,和ffmpeg簡直就是天上地下的區別,所以呢,很快就將VLC的常用功能都加上啦,基本上都是一行代碼解決,再次大喊一聲:這酸爽~~~ 簡直不敢相信!!!
所以今晚就已經完成了基於VLC的MFC播放器啦,想想當年用那么多時間去折騰ffmpeg,說多了都是淚啊~~~
效果如圖:
實現了常用的功能,也就是那一排按鈕的功能,由於前面的教程已經給出了VLC的示例,所以本節直接給出了所有的VLC代碼,每個函數基本都是一兩行,請自行閱讀。為了讓代碼更簡潔,很多地方沒有加安全驗證,所以播放器的使用請按下面步驟進行:
1、拖拽文件到窗口(這時右邊的播放列表會自動顯示)。
2、雙擊播放列表即可播放文件(沒有過濾文件類型,所以請拖入有效文件)。
3、之后可以隨便點擊那一排按鈕(如快進、快退等等)。
本節教程實現的功能:
1、MFC界面,就是一排按鈕加幾個控件,沒什么好說的啦。
2、VLC封裝,就是那一排按鈕的功能,都在CAVPlayer里,非常簡潔,也沒什么好說的啦。
3、進度條的更新,這個需要說一下。本來Alberl想用定時器來更新進度(分成100份),不過發現VLC竟然提供了事件通知,簡直人性化到極點啊啊啊~~~ 所以Alberl就直接用了VLC的事件通知,基本上是解析一幀(或者一小段?)通知一次,並且暫停時不會通知,所以比定時器好了N倍。可以發現OnPosChanged更新進度時並沒有用到VLC的通知事件傳過來的參數,這里Alberl只是給出一個示范,讓大家知道它的用法,之后更新播放時間等各種狀態時可能會用到,所以就先寫出來了。
既然VLC的常用功能都實現了,MFC界面也實現了,現在這個版本已經可以說主體功能都OK了,如果不需要美化界面的話,那剩下的工作僅僅是加上參數判斷等安全驗證,以及細節的一些功能了。
雖然很快就可以做為一個實用的播放器了,但畢竟現在的軟件界面這么美觀,不美化一下實在拿不出手,所以我們后面將會美化界面,也就是所謂的仿迅雷看看播放器。
從動手寫代碼到完成一個實用的播放器,僅用了兩個晚上,真是太出乎意料了,Alberl以為linux下的開源庫大部分都像ffmpeg那樣,不搞死你不叫開源庫呢~O(∩_∩)O~ 這次VLC的開發真的讓Alberl對linux下發起的開源庫刮目相看,記得VLC官網好像說1.1之前沒有SDK,現在2.0版本不僅提供了SDK,還提供了編譯好的dll和lib,還有完整簡潔的Demo,真是越來越向微軟看齊,越來越照顧菜鳥了哈,愛死VLC啦~~~
好啦,其實這個播放器沒什么技術含量,如果這樣就算完了,Alberl肯定會被罵死的,站在巨人的肩膀上當然很容易搞出各種東東啦。還記得
上一個系列的教程最后說什么了嗎?
1、看反響。 Alberl第一次寫那么詳細的教程,當然希望小伙伴們支持啦,現在已經9天了,小伙伴們很給面子,而且csdn斑竹更給面子,即使教程寫在博客園,也被推薦到論壇首頁啦,非常感謝csdn的斑竹大大~~~
2、反響不錯就繼續下一個系列的教程,也就是本系列的仿迅雷播放器啦。
而仿迅雷播放器的重點在什么呢? 從前面的分析可以看出,播放核心早就很完善啦,我們要做的僅僅是換個界面而已,Alberl也可以說“自主研發”了一個播放器哦o(╯□╰)o 埋了這么大的伏筆,就是為了介紹界面,可謂用心良苦啊~~~
嗯,明天將會開始介紹界面美化,繼續關注哦~O(∩_∩)O~