文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2015.08.035
中文引用格式: 張彤,,蘆愛(ài)余,莫建文. 基于Darwin的多平臺(tái)多用戶直播,、點(diǎn)播系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,,2015,41(8):124-127.
英文引用格式: Zhang Tong,,Lu Aiyu,,Mo Jianwen. Design of live video streaming, video-on-demand system based on Darwin[J].Application of Electronic Technique,,2015,41(8):124-127.
0 引言
隨著3G,、4G移動(dòng)互聯(lián)網(wǎng)的發(fā)展,市場(chǎng)上利用手機(jī)等移動(dòng)設(shè)備實(shí)現(xiàn)視頻會(huì)議的方案越來(lái)越多,。無(wú)論哪種方案,,基本都是由移動(dòng)設(shè)備客戶端、服務(wù)器端,、視頻播放客戶端三部分組成,。而視頻播放客戶端不外乎采用客戶端/服務(wù)器端(C/S)或?yàn)g覽器/服務(wù)器端(B/S)架構(gòu)。代表性的方案有利用WEBRTC實(shí)現(xiàn)基于谷歌瀏覽器的視頻會(huì)議系統(tǒng)[1-2],。這種B/S架構(gòu)的用戶通過(guò)系統(tǒng)內(nèi)置的攝像頭和麥克風(fēng)采集視頻圖像和語(yǔ)音信號(hào),,通過(guò)谷歌瀏覽器接入Internet建立連接,在網(wǎng)絡(luò)傳輸層利用RTP/RTCP協(xié)議實(shí)時(shí)傳輸語(yǔ)音和視頻數(shù)據(jù)給其他客戶端,。這種架構(gòu)的優(yōu)點(diǎn)是無(wú)需安裝插件即可在瀏覽器上打開(kāi)視頻會(huì)議,,但是視頻編碼采用VP8編碼方式,大部分手機(jī)不提供支持,,而且在多人視頻會(huì)議時(shí),,會(huì)因帶寬不足影響會(huì)議質(zhì)量?;贑++的crtmpserver流媒體服務(wù)器[3]使用RTMP[4]協(xié)議,,在Linux平臺(tái)下運(yùn)行,支持將手機(jī)上傳的RTMP流轉(zhuǎn)發(fā),、存儲(chǔ)的功能,。RTMP協(xié)議的客戶端是Flash,可以很好地支持B/S架構(gòu)的流媒體服務(wù)器設(shè)計(jì)。然而RTMP協(xié)議基于TCP/IP協(xié)議,,不支持UDP協(xié)議,,所以網(wǎng)絡(luò)負(fù)荷比UDP大,傳輸速度也要比UDP慢,。
本系統(tǒng)采用開(kāi)源的Darwin流媒體服務(wù)器對(duì)實(shí)時(shí)視頻流進(jìn)行處理,,結(jié)合開(kāi)源庫(kù)mp4v2[5]實(shí)現(xiàn)實(shí)時(shí)視頻的轉(zhuǎn)發(fā)和錄制。Darwin服務(wù)器[6]基于RTSP協(xié)議進(jìn)行傳輸,,相比RTMP協(xié)議,,支持TCP/IP協(xié)議和UDP/RTP協(xié)議,具有更高的實(shí)時(shí)性,。系統(tǒng)使用手機(jī)硬編碼實(shí)時(shí)采集音視頻數(shù)據(jù),。C/S播放客戶端采用開(kāi)源RTSP架構(gòu)live555[7]結(jié)合開(kāi)源編解碼庫(kù)ffmpeg實(shí)現(xiàn)視頻直播、點(diǎn)播播放,。B/S播放客戶端采用Html5[8]技術(shù)實(shí)現(xiàn)視頻點(diǎn)播,,由支持RTSP協(xié)議的VLC Flash插件實(shí)現(xiàn)直播。
1 多平臺(tái)播放解決方案模型
系統(tǒng)由移動(dòng)設(shè)備客戶端,、服務(wù)器端,、視頻播放客戶端三部分組成。本文中實(shí)驗(yàn)的移動(dòng)客戶端為支持安卓系統(tǒng)的手機(jī),,通過(guò)調(diào)用手機(jī)設(shè)備上的攝像頭和麥克風(fēng),,進(jìn)行音視頻采集。由于在3G網(wǎng)絡(luò)下服務(wù)器訪問(wèn)手機(jī)移動(dòng)IP地址需要“打洞”,,故采用手機(jī)主動(dòng)推送的方式進(jìn)行視頻傳輸,。服務(wù)器端采用支持RTSP協(xié)議的Darwin Stream Server開(kāi)源服務(wù)器,,負(fù)責(zé)RTSP流的轉(zhuǎn)發(fā),,因不支持視頻存儲(chǔ)功能,所以結(jié)合開(kāi)源庫(kù)mp4v2實(shí)現(xiàn)服務(wù)器端視頻流的錄制,,存儲(chǔ)手機(jī)客戶端采集的視頻到服務(wù)器上,。播放客戶端包括C/S架構(gòu)的PC播放客戶端和B/S架構(gòu)的瀏覽器客戶端,實(shí)現(xiàn)在播放列表中直播或點(diǎn)播文件,。系統(tǒng)整體架構(gòu)如圖1所示,。
2 手機(jī)端設(shè)計(jì)
2.1 手機(jī)端方案
利用手機(jī)本身硬件的編碼功能,視頻采用H264編碼,,音頻采用AAC編碼,,將編碼后的音視頻數(shù)據(jù)封裝到RTP包中發(fā)送到服務(wù)器端。手機(jī)客戶端主要由音視頻采集及編碼模塊,、RTP/RTCP[9]數(shù)據(jù)壓縮及控制模塊,、RTSP傳輸控制模塊三部分組成,流程框圖如圖2所示。
2.2 模塊設(shè)計(jì)
(1)音視頻采集及編碼模塊
采用MediaRecorder類(lèi),,首先調(diào)用該類(lèi)的setAudioSource和setVideoSource設(shè)置音視頻采集源,,再通過(guò)該類(lèi)的setAudioEncoder()和setVideoEncoder()設(shè)置音視頻的編碼方式。以h.264視頻編碼為例,,調(diào)用該類(lèi)中的SetoutputFile函數(shù)綁定LocalSocket實(shí)現(xiàn),。在編碼過(guò)程中可以使用硬編碼的方式,硬編碼是在預(yù)覽過(guò)程提前確定視頻的sps,、pps,、head(一般為0x00000001)。
(2)RTP/RTCP數(shù)據(jù)壓縮及控制模塊
RTP包傳送可以基于UDP或者TCP,,采用TCP作為傳輸層協(xié)議注重可靠性而不是及時(shí)性,,在RTP傳輸過(guò)程中應(yīng)用很少,大部分RTP包發(fā)送都是采用UDP方式,。在RTP會(huì)話過(guò)程前,,發(fā)送方需要確定接收方的目標(biāo)IP及接收端口。
(3)RTSP傳輸控制模塊
RTSP協(xié)議作為應(yīng)用層協(xié)議,,RTSP命令的傳輸是基于TCP協(xié)議,,RTSP本身不作為數(shù)據(jù)傳輸?shù)膮f(xié)議,而是作為一種流媒體傳輸過(guò)程的控制協(xié)議,。
通過(guò)RTSP與服務(wù)器進(jìn)行音視頻流媒體傳輸有兩種方式:拉模式和推模式,。拉模式是主從模式,拉方(例如視頻播放客戶端)需要維護(hù)各個(gè)被拉方(例如攝像頭)的狀態(tài),,如url信息,、端口信息等,只有拉方主動(dòng)請(qǐng)求被拉方告知相應(yīng)信息才能啟動(dòng),。推模式主動(dòng)權(quán)在推方(本文即為安卓移動(dòng)設(shè)備端),,從接方(本文即為Darwin服務(wù)器)來(lái)看,只要做好標(biāo)準(zhǔn)接口即可,,無(wú)需關(guān)注有多少推方會(huì)推送數(shù)據(jù),。由于移動(dòng)設(shè)備在3G網(wǎng)絡(luò)下,如果選擇拉模式,,同一個(gè)網(wǎng)段下還需穿透NAT,,即“打洞”,不方便做遠(yuǎn)程音視頻傳輸,,所以選擇推模式下的視頻傳輸,。
3 Darwin服務(wù)器端設(shè)計(jì)
本系統(tǒng)中服務(wù)器端負(fù)責(zé)轉(zhuǎn)發(fā)和存儲(chǔ)音視頻數(shù)據(jù),主要由RTSP連接建立模塊,、視頻轉(zhuǎn)發(fā)模塊及視頻錄制模塊三部分構(gòu)成,。視頻播放客戶端發(fā)送RTSP請(qǐng)求,,Darwin流媒體服務(wù)器通過(guò)Modules發(fā)送數(shù)據(jù)包來(lái)回復(fù)客戶,處理相應(yīng)的RTSP請(qǐng)求,。Darwin服務(wù)器作為流媒體客戶端的中繼代理,,移動(dòng)設(shè)備在RTSP協(xié)議中的ANNOUNCE命令攜帶.sdp文件到Darwin服務(wù)器接收sdp的目錄文件中。此后視頻播放客戶端就可以通過(guò)rtsp://<DSS IP>/***.sdp請(qǐng)求.sdp文件獲取到手機(jī)客戶端對(duì)應(yīng)地址和端口的流,。由于Darwin服務(wù)器本身不支持視頻錄制,,故加入開(kāi)源庫(kù)mp4v2實(shí)現(xiàn)視頻錄制,具體各模塊如下:
3.1 RTSP連接建立模塊
Darwin Streaming Server定義了RTSPListenerSocket Class,,它繼承自TCPListenerSocket Class,用于對(duì)RTSP連接請(qǐng)求進(jìn)行處理,,進(jìn)入RTSP狀態(tài)機(jī)。通過(guò)RTSPSession對(duì)象完成對(duì)請(qǐng)求類(lèi)型的匹配,,如果匹配成功,,則注冊(cè)QTSS_RTSPPreProcessor_Role角色的模式。在這個(gè)角色模式下,,進(jìn)入QTSSReflectorModule類(lèi)處理了每種RTSP消息,,比如本次RTSP請(qǐng)求的Describe、Setup,、Play指令,。該類(lèi)中針對(duì)各種請(qǐng)求指令都有對(duì)應(yīng)的單獨(dú)函數(shù)處理,分別對(duì)應(yīng)著DoAnnounce,、DoDescribe,、DoSetup和DoPlay函數(shù)。除此之外,,RTSP狀態(tài)機(jī)的終結(jié)點(diǎn)所在位置也是在QTSSReflectorModule類(lèi)中,,通過(guò)Shutdown()函數(shù)實(shí)現(xiàn)RTSP會(huì)話的結(jié)束。
3.2 視頻轉(zhuǎn)發(fā)建立模塊
當(dāng)收到一路RTSP連接請(qǐng)求時(shí),,在DSS中為RTSPSession類(lèi)對(duì)象,,首先需要解析請(qǐng)求頭部是否為轉(zhuǎn)發(fā)請(qǐng)求,進(jìn)而解析其請(qǐng)求的后續(xù)部分,。進(jìn)行查詢字符串的解析,,得到需要轉(zhuǎn)發(fā)的具體url,建立一路面向url源的會(huì)話,,通過(guò)Describe命令獲取到sdp信息進(jìn)行保存,再轉(zhuǎn)發(fā)到請(qǐng)求Describe的客戶端,,而且Setup,、Play分別將對(duì)應(yīng)的響應(yīng)碼返回給客戶端,在轉(zhuǎn)發(fā)具體的數(shù)據(jù)時(shí),,建立一路ReflectorSession,,將獲取到的rtp數(shù)據(jù)轉(zhuǎn)發(fā)到添加進(jìn)ReflectorSession轉(zhuǎn)發(fā)列表的客戶端中。
3.3 視頻錄制模塊
要實(shí)現(xiàn)視頻錄制,首先需要找到音視頻RTP數(shù)據(jù)包,,然后將編碼過(guò)后的H264視頻和AAC音頻數(shù)據(jù)從RTP包中按續(xù)提取出來(lái),,并以MP4文件格式封裝,最后存成文件,。在Darwin服務(wù)器中的ProcessRTPData()函數(shù)內(nèi)部處理處理接收到的RTP包,,提取char* packetData數(shù)據(jù)傳遞到MP4文件生成函數(shù)中。具體通過(guò)創(chuàng)建MP4文件句柄,、設(shè)置時(shí)間標(biāo)度,、添加h264視頻軌道及aac音頻軌道[10]、添加序列參數(shù)集和圖像參數(shù)集,,最后再寫(xiě)入文件的方式生成MP4文件,。具體視頻存儲(chǔ)步驟如下:
(1)通過(guò)MP4Create創(chuàng)建MP4文件句柄。
(2)通過(guò)MP4SetTimeScale設(shè)置時(shí)間標(biāo)度,,即每秒的時(shí)鐘ticks數(shù),。
(3)通過(guò)MP4AddH264VideoTrack添加h264視頻track,MP4AddAudioTrack添加aac音頻track,。
(4)通過(guò)MP4AddH264SequenceParameterSet和MP4AddH264PictureParameterSet添加序列參數(shù)集和圖像參數(shù)集,。
(5)通過(guò)MP4WriteSample寫(xiě)一幀視頻數(shù)據(jù)或?qū)懸欢我纛l數(shù)據(jù)。
其中duration這個(gè)參數(shù)是用來(lái)實(shí)現(xiàn)音視頻同步用的,,如果設(shè)置錯(cuò)了會(huì)造成音視頻不同步,,甚至?xí)霈F(xiàn)crash現(xiàn)象。對(duì)于視頻流MP4WriteSample函數(shù),,每次調(diào)用是錄制前一幀數(shù)據(jù),,用當(dāng)前幀的時(shí)間戳和前一幀的時(shí)間戳計(jì)算duration值,然后把當(dāng)前幀保存下來(lái)在下次調(diào)用MP4WriteSample時(shí)用,,寫(xiě)音頻數(shù)據(jù)一樣,。
(6)通過(guò)MP4Close關(guān)閉打開(kāi)的MP4文件。
4 B/S架構(gòu)及C/S架構(gòu)客戶端設(shè)計(jì)
4.1 C/S架構(gòu)客戶端原理
C/S架構(gòu)的播放客戶端通過(guò)支持RTSP的開(kāi)源live555構(gòu)建與手機(jī)移動(dòng)客戶端的RTSP通信,,通過(guò)開(kāi)源編解碼框架ffmpeg的解碼功能進(jìn)行解碼,。
通過(guò)live555構(gòu)建RTSP的過(guò)程為:首先創(chuàng)建BasicTaskScheduler和BasicUsageEnvironment對(duì)象,用于調(diào)度不同事件,。創(chuàng)建RTSPClient對(duì)象,,由RTSPClient對(duì)象向服務(wù)器發(fā)送RTSP中的OPTION消息命令并等待接受回應(yīng),返回SDPDescription字符串即sdp文件內(nèi)容,。在任務(wù)調(diào)度while循環(huán)中配置所有子會(huì)話對(duì)象,,為每個(gè)子會(huì)話創(chuàng)建RTPSource和RTCPInstance對(duì)象,并創(chuàng)建兩個(gè)GroupSock對(duì)象,。將每個(gè)GroupSock對(duì)象中創(chuàng)建的socket描述符置入 BasicTaskScheduler::fReadSet中,,RTPSource對(duì)象的創(chuàng)建的依據(jù)是SDPDescription,。由RTSPClient對(duì)象向服務(wù)器發(fā)送SETUP消息并接受回應(yīng),while循環(huán)中為每個(gè)子會(huì)話創(chuàng)建接收器FileSink對(duì)象,,由RTSPClient對(duì)象向服務(wù)器發(fā)送PLAY消息并接受回應(yīng),,F(xiàn)ileSink的緩沖區(qū)和包含寫(xiě)入文件操作的一個(gè)函數(shù)指針配置給RTPSource對(duì)象,這個(gè)緩沖區(qū)將會(huì)在networkReadHandler中接收來(lái)自網(wǎng)絡(luò)的視音頻數(shù)據(jù),。
獲取到音視頻數(shù)據(jù)后,,通過(guò)ffmpeg[11]的解碼功能進(jìn)行解碼處理,流程如圖3所示,。
avformat_open_input函數(shù)對(duì)輸入的文件名進(jìn)行解析,,并發(fā)起與Darwin服務(wù)器的RTSP交互。在數(shù)據(jù)讀取線程中,,使用rtsp_read_packet函數(shù)用于每個(gè)RTP包的讀取和第一次排序解析,。首先調(diào)用rtp_read函數(shù)從緩沖區(qū)獲取數(shù)據(jù),然后通過(guò)包隊(duì)列交給RTP解析函數(shù)rtp_parse_packet進(jìn)行第一次解析,。第一次解析的目的是對(duì)包進(jìn)行重新排序,,解決因?yàn)榫W(wǎng)絡(luò)抖動(dòng)導(dǎo)致接收到的包序列號(hào)不連續(xù)的問(wèn)題。具體是根據(jù)RTP協(xié)議解析RTP包頭信息,,對(duì)RTP包頭的包序列號(hào)按遞增順序重新排序,。然后調(diào)用av_parser_parse2函數(shù)對(duì)RTP包進(jìn)行第二次重組幀解析,目的是將包中的數(shù)據(jù)重新按幀進(jìn)行組合,,組成一幀數(shù)據(jù)的avpacket,。
4.2 B/S架構(gòu)的實(shí)現(xiàn)
B/S架構(gòu)的服務(wù)器端采用Apache服務(wù)器,Web客戶端采用HTML5的技術(shù)直接播放緩存在Darwin服務(wù)器下的MP4[12]視頻,。Web客戶端通過(guò)訪問(wèn)Darwin服務(wù)器下錄制視頻存放的文件夾,,獲取mp4后綴的文件名,輸出到Web客戶端播放列表中,。Web客戶端實(shí)現(xiàn)圖片保存及視頻大小控制等功能,。注冊(cè)VLC的ActiveX[13]嵌入到網(wǎng)頁(yè)中,實(shí)現(xiàn)直播功能,。B/S架構(gòu)播放客戶端如圖4所示,。
5 測(cè)試及分析
根據(jù)上述設(shè)計(jì),客戶端采用B/S架構(gòu)的Web客戶端及C/S架構(gòu)的PC客戶端均可正常觀看直播視頻,,通過(guò)mp4v2可實(shí)現(xiàn)視頻存儲(chǔ)功能,。本系統(tǒng)服務(wù)器使用中國(guó)電信100M光纖網(wǎng)絡(luò),用60個(gè)B/S架構(gòu)及C/S架構(gòu)客戶端分3組同時(shí)請(qǐng)求3路手機(jī)推送視頻,。3路手機(jī)視頻端碼率均設(shè)為為500 kb/s,,視頻采集分辨率分別為320×240、640×480,、720×1 280,,并在720p分辨率的條件下分3次在中國(guó)聯(lián)通3G網(wǎng)絡(luò)、中國(guó)電信3G網(wǎng)絡(luò)及無(wú)線WiFi網(wǎng)絡(luò)下分別統(tǒng)計(jì)手機(jī)移動(dòng)客戶端的視頻播放延遲時(shí)間,。其中服務(wù)器所用的硬件環(huán)境為:中央處理器:Inter Core I5-2 450 M 2.5 GHz雙核四線程,;內(nèi)存:4 GB DDR3 1 333 MHz;硬盤(pán):5 400 rad/min,;操作系統(tǒng):32位 Windows7 操作系統(tǒng),。
播放客戶端通過(guò)RTSP請(qǐng)求觀看直播,請(qǐng)求如:rtsp:// 202.193.53.103/teststream.sdp,,由sdp文件名區(qū)分不同推送視頻源,。表1統(tǒng)計(jì)了在中國(guó)聯(lián)通3G網(wǎng)絡(luò)、中國(guó)電信3G網(wǎng)絡(luò)及無(wú)線WiFi網(wǎng)絡(luò)下分別統(tǒng)計(jì)手機(jī)移動(dòng)客戶端的視頻播放延遲時(shí)間,。
通過(guò)60個(gè)客戶端同時(shí)請(qǐng)求服務(wù)器連接,,表明服務(wù)器在帶寬為100M光纖網(wǎng)絡(luò)的條件下,可以同時(shí)滿足60個(gè)用戶同時(shí)請(qǐng)求連接,??蛻舳送瑫r(shí)請(qǐng)求的數(shù)量由服務(wù)器網(wǎng)絡(luò)帶寬決定。通過(guò)分別在中國(guó)聯(lián)通3G網(wǎng)絡(luò),、中國(guó)電信3G網(wǎng)絡(luò)及無(wú)線WiFi網(wǎng)絡(luò)下推送視頻的播放延遲區(qū)別表明,,系統(tǒng)整體滿足不同網(wǎng)絡(luò)條件下的需求,具有較好的實(shí)時(shí)性,。
6 結(jié)束語(yǔ)
本文通過(guò)移動(dòng)設(shè)備客戶端,、服務(wù)器端、視頻播放客戶端組成的系統(tǒng)架構(gòu)闡述了一個(gè)新的視頻直播,、錄制及多平臺(tái)播放的解決方案,。詳細(xì)討論了移動(dòng)設(shè)備客戶端音視頻采集及傳輸方案、服務(wù)器端的轉(zhuǎn)發(fā)及存儲(chǔ)方案,,以及視頻播放客戶端的兩種架構(gòu),,分析了基于live555的RTSP通信過(guò)程及基于mp4v2的視頻存儲(chǔ)過(guò)程,開(kāi)發(fā)出了整套直播,、點(diǎn)播系統(tǒng),。同時(shí),設(shè)計(jì)了相應(yīng)的測(cè)試實(shí)驗(yàn),,為實(shí)現(xiàn)高可靠,、高實(shí)時(shí)性的視頻直播系統(tǒng)提供了一種較為可行的方法。
參考文獻(xiàn)
[1] ELLEUCH W.Models for multimedia conference between browsers based on WebRTC[C].Wireless and Mobile Computing,,Networking and Communications(WiMob),,2013 IEEE 9th International Conference on,IEEE,,2013:279-284.
[2] RHINOW F,,VELOSO P P,,PUYELO C,et al.P2P live video streaming in WebRTC[C].2014 World Congress on WCCAIS,,2014:1-6.
[3] 丁杰,,潘晨光,田源.基于crtmpserver的手機(jī)直播系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),,2014,,35(9):3173-3178.
[4] 姜浩然,徐林.基于RTMP的流媒體服務(wù)器的研究[J].計(jì)算機(jī)與數(shù)字工程,,2011,,39(10):104-108.
[5] 史紅周,黃晁.一種基于MP4文件的視頻流關(guān)鍵幀索引播放方法[J].微電子學(xué)與計(jì)算機(jī),,2002,,19(7):44-47.
[6] 李新樂(lè),蘇鴻根.流媒體搜索和發(fā)布技術(shù)在移動(dòng)設(shè)備上的應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),,2009,,30(6):1428-1431.
[7] 茅炎菲,黃忠東.基于RTSP協(xié)議網(wǎng)絡(luò)監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),,2011,,32(7):2523-2526.
[8] 羅大暉,陳娟.基于HTML5的Web離線應(yīng)用研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,,2012,,29(12):262-264.
[9] 李校林,劉海波,,張杰,,等.RTP/RTCP,RTSP在無(wú)線視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電視技術(shù),,2011,,35(19):89-92.
[10] 韋崇嶺,裴海龍.基于無(wú)人機(jī)平臺(tái)H264視頻傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,,2012,,20(1):209-211.
[11] 劉麗霞,邊金松,,張琍,,等.基于FFMPEG解碼的音視頻同步實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2013,,34(6):2087-2092.
[12] 李興華,,楊天奇.MP4共享FLV數(shù)據(jù)研究與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2014(3):31-34.
[13] ZHU G,ZHANG F,,ZHU W,,et al.HTML5 based media player for real-time video surveillance[C].Image and Signal Processing(CISP),2012 5th International Congress on.IEEE,,2012:245-248.