劉世榮
摘要:隨著高清視頻資源的日益豐富和用戶(hù)對(duì)高清視頻播放的需求,傳統(tǒng)的播放器已不能滿足高清視頻播放的要求。以Windows XP作為開(kāi)發(fā)平臺(tái),Delphi XE6為開(kāi)發(fā)工具,采用FFOCX控件,編程實(shí)現(xiàn)播放音視頻文件的功能是容易的。
關(guān)鍵詞: Delphi;播放器;FFOCX控件
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)10-0182-03
Abstract:As the high-definition video resources increasingly rich and user demand for high-definition video playback, traditional players cannot meet the requirements of the hd video playback. In Windows XP as a development platform, Delphi XE6 as development tool, using FFOCX control, programming is easy to realize the function of play audio and video files.
Key words:Delphi; Player; FFOCX Control
隨著互聯(lián)網(wǎng)的快速發(fā)展和多媒體的廣泛應(yīng)用,F(xiàn)LV、MP4等已成為網(wǎng)絡(luò)主流媒體格式,Window附帶的Media Player播放器必須升級(jí)才能播放此類(lèi)媒體,這給沒(méi)有即時(shí)升級(jí)該播放器就希望直接使用的用戶(hù)帶來(lái)了困難,盡管暴風(fēng)影音、QQ影音和迅雷等能播放此類(lèi)媒體,但前提是所用電腦必須安裝了此類(lèi)播放器,而且該類(lèi)播放器的體積較大[1]。針對(duì)此問(wèn)題,作者在Delphi XE6(簡(jiǎn)稱(chēng)XE6)中利用FFmpeg的功能編寫(xiě)了一個(gè)能播放目前主流媒體格式的播放器,且體積小,運(yùn)行效果好,開(kāi)發(fā)成本低,能夠滿足用戶(hù)需求。
FFmpeg 不僅編解碼速度高,而且功能強(qiáng)大,即可以處理音頻、視頻,又可以用于錄制和轉(zhuǎn)換,目前得到了普遍的應(yīng)用,許多流行的影音播放器是基于FFmpeg開(kāi)發(fā)的。FFmpeg包含一組領(lǐng)先的音頻、視頻編碼解碼庫(kù),其編解碼庫(kù)名為 libavcodec[2]。由于FFmpeg是在Linux平臺(tái)下開(kāi)發(fā)的, Windows用戶(hù)使用不方便。FFOCX是FFmpeg的ActiveX OCX(控件名:ActiveFFmpegControls.ocx)版,用戶(hù)可以直接在Windows下使用。FFOCX工具包含有編解碼模塊,用戶(hù)根據(jù)需要使用相應(yīng)的模塊,就可實(shí)現(xiàn)要求的功能。
具體環(huán)境:Windows XP簡(jiǎn)體中文版和Delphi XE6。
控件下載地址:http://www.ccavc.com/。
1 建立開(kāi)發(fā)環(huán)境
開(kāi)發(fā)播放器有兩種方法:
方法一:開(kāi)發(fā)一個(gè)能播放音視頻文件的控件, 然后用此控件開(kāi)發(fā)播放器。
方法二:利用第三方控件開(kāi)發(fā)播放器。
采用第一種方法,除需要較多的專(zhuān)業(yè)知識(shí)外,開(kāi)發(fā)周期較長(zhǎng);采用第二種方法,不僅控件有現(xiàn)存的,開(kāi)發(fā)周期短,而且因?yàn)榭丶_(kāi)發(fā)者較專(zhuān)業(yè),質(zhì)量可保證。因此本文采用第二種方法。
FFOCX控件是ActiveX控件,不包含在XE6中,因此不能在XE6中直接使用, XE6中必須正確安裝才能使用。XE6中安裝FFOCX控件的步驟如下:
1.1 注冊(cè)控件
Windows中注冊(cè)FFOCX控件是通過(guò)運(yùn)行regsvr32命令來(lái)實(shí)現(xiàn)的。命令格式:
regsvr32 ActiveFFmpegControls.ocx。
若該控件不在當(dāng)前目錄下,還需指明該控件的路徑。
1.2 XE6中添加FFOCX控件
(1) 啟動(dòng)XE6。
(2) 新建一個(gè)默認(rèn)名為Package的包。
(3) 運(yùn)行部件(Component)菜單下的導(dǎo)入部件(Import Component)命令,打開(kāi)導(dǎo)入部件(Import Component)對(duì)話框。
(4) 選擇導(dǎo)入ActiveX 控件(Import ActiveX Control)單選項(xiàng),單擊
(5) 在Registered ActiveX Controls對(duì)話框的部件列表框中選擇
(6) 單擊
(7) 單擊
(8) 選擇
(9) 鼠標(biāo)右擊XE6集成環(huán)境窗口的項(xiàng)目管理器中Package1,選擇“Install”命令,完成Package1的安裝。
FFOCX控件添加成功后就可以在XE6集成環(huán)境中使用該控件了,該控件位于XE6控件箱的ActiveX控件類(lèi)中。
2 播放器的實(shí)現(xiàn)
2.1 播放器簡(jiǎn)介
一個(gè)簡(jiǎn)單的播放器不僅有播放音視頻的窗口,還應(yīng)有播放按鈕、暫停按鈕、停止按鈕、快進(jìn)按鈕、音量調(diào)節(jié)按鈕等,用以實(shí)現(xiàn)相應(yīng)的功能。因此可將一個(gè)簡(jiǎn)單播放器的主要功能用兩個(gè)模塊來(lái)實(shí)現(xiàn):
(1) 播放模塊:設(shè)置播放區(qū)域?qū)崿F(xiàn)播放。
(2) 控制模塊:利用按鈕元件實(shí)現(xiàn)包括播放、暫停、停止,以及音量控制等功能。
功能結(jié)構(gòu)圖如圖3所示[3]。
2.2 設(shè)計(jì)播放器界面
(1) 新建一個(gè)基于VCL 窗體的應(yīng)用程序,取名為MyofPlayer,窗體標(biāo)題(caption)設(shè)為“Myplayer”,其項(xiàng)目名稱(chēng)為My_Of_Palyer。
(2) 在窗體上添加一個(gè)面板(Panel)控件(該面板為播放視頻窗口),控件名稱(chēng)取默認(rèn)值,標(biāo)題(Caption)設(shè)為空,視頻窗口不可調(diào)(即Pancel1的BorderStyle的屬性設(shè)為bsSingle)。
(3) 在窗體上添加一個(gè)opendialog(打開(kāi)文件)控件,用于打開(kāi)文件選擇對(duì)話框,名稱(chēng)默認(rèn)。
(4) 添加三個(gè)Label(標(biāo)簽)控件,名稱(chēng)默認(rèn),其caption屬性分別為“文件”和“音量”,Label2的caption屬性用于顯示文件位置。
(5) 添加四個(gè)Button(按鈕)控件,名稱(chēng)分別為bt1、bt2、bt3和bt4。標(biāo)題(Caption)屬性分別設(shè)置為“打開(kāi)”、“暫?!薄ⅰ巴V埂焙汀翱爝M(jìn)”。
(6) 添加FFplayer控件(該控件位于工具箱的ActiveX類(lèi)中),控件名(即Name屬性)設(shè)置為FFPL,用于解碼選擇的音視頻文件。
(7) 調(diào)整窗體和各控件的大小及位置,如圖4所示。
2.3 各控件程序代碼
(1) “打開(kāi)”按鈕程序代碼
單擊該按鈕,能將打開(kāi)的對(duì)話框中選擇的音視頻文件在指定位置顯示并播放。
3 小結(jié)
以上簡(jiǎn)單介紹了怎樣用FFOCX的功能去實(shí)現(xiàn)本地音視頻文件的播放。FFOCX控件功能強(qiáng)大,不僅可播放本地文件 也可以播放遠(yuǎn)程的音視頻文件,還可以瀏覽圖片。此外,該控件還可實(shí)現(xiàn)錄制。用戶(hù)只要充分利用FFOCX的功能,就可以設(shè)計(jì)出屬于自己的功能強(qiáng)大的多媒體播放器。
參考文獻(xiàn):
[1]向隅.PowerBuilder中使用OLE對(duì)象實(shí)現(xiàn)Flv視頻文件的播放[J].東莞理工學(xué)院,2010,6(3):40-43
[2]苗健,許應(yīng)康.基于FFmpeg的視頻播放軟件設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2015,38(12):83~84.
[3]邱秀榮,王小芬,陳磊.基于Flash的音樂(lè)播放器的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2015,11(33):137-138.