lay功能時,iOS設(shè)備能夠捜索到安卓客戶端發(fā)布的服務(wù)。 通過發(fā)布的AirPlay服務(wù)參數(shù),iOS設(shè)備將對參數(shù)進(jìn)行驗證和設(shè)置。從而將iOS設(shè)備與安 卓客戶端連接,并進(jìn)行相應(yīng)的數(shù)據(jù)傳輸。 陽057] iOS設(shè)備與安卓客戶端連接時還包括連接=個端口中的一個,=個端口分別對應(yīng) 鏡像、音頻和視頻。當(dāng)iOS設(shè)備與安卓客戶端之間傳送并播放視頻文件時,所連接的為視頻 端口。當(dāng)iOS設(shè)備與安卓客戶端之間傳送并播放的是圖片文件時,所連接的端口為視頻端 口。當(dāng)iOS設(shè)備與安卓客戶端之間傳送并播放的是音頻文件時,所連接的端口為音頻端口。 當(dāng)iOS設(shè)備與安卓客戶端之間傳送并播放的是鏡像文件時,所連接的端口為鏡像端口
[0058] 當(dāng)iOS設(shè)備進(jìn)行AirPlay連接時,通過綁定的端口與安卓客戶端傳輸數(shù)據(jù)。
[0059] 其中所發(fā)布的兩個服務(wù)分別對應(yīng)不同的端口。在本發(fā)明的具體實施例中, Airl'unesservice所對應(yīng)的端口號為5000,AirPlayService所對應(yīng)的端口號為7000。第 =個端口為固定端口,固定端口為7100。當(dāng)傳輸?shù)膬?nèi)容為音頻是,連接的端口為5000。當(dāng)傳 輸?shù)膬?nèi)容為視頻是,連接的端口為7000。當(dāng)傳輸?shù)膬?nèi)容為鏡像是,連接的端口為7100。其 中Air化nesservice所對應(yīng)的端口為音頻傳輸端口,AirPlayService所對應(yīng)的端口為視 頻傳輸端口,固定端口所對應(yīng)的為鏡像傳輸端口。采用化tty對端口進(jìn)行監(jiān)聽,從而能夠?qū)?時的將iOS設(shè)備發(fā)出的內(nèi)容播放到安卓客戶端上。Netty是一個化va開源框架協(xié)議,用W 快速開發(fā)高性能、高可靠性的網(wǎng)絡(luò)服務(wù)器和客戶端程序。
[0060] 圖2為本發(fā)明具體實施例的一種iOS設(shè)備與安卓客戶端的不同播放類型的連接方 法示意圖。如圖2所示本發(fā)明具體實施例的一種iOS設(shè)備與安卓客戶端的傳輸過程中的不 同播放類型的連接方法圖,當(dāng)完成iOS設(shè)備與安卓客戶端之間的連接后進(jìn)行相應(yīng)數(shù)據(jù)的傳 輸與播放。iOS設(shè)備與安卓客戶端之間通過AirPlay協(xié)議進(jìn)行連接,從而傳輸包括音頻、視 頻和鏡像文件。并在安卓客戶端上播放音頻、視頻和鏡像文件。
[0061] 如圖3所示的本發(fā)明具體實施例的一種安卓客戶端與iOS設(shè)備播放方法,包括音 頻的播放、視頻的播放和鏡像的播放。從而將ios設(shè)備上的音頻、視頻和鏡像文件在iOS客 戶端上顯示或播放,從而獲得更好的使用體驗。 陽O創(chuàng)音頻播放
[0063] 當(dāng)iOS設(shè)備與安卓客戶端連接完成時,還包括連接到相應(yīng)的端口。當(dāng)進(jìn)行音頻播 放時,所連接的端口號為5000。
[0064] 當(dāng)安卓客戶端收到iOS設(shè)備發(fā)送的音頻播放信號時,安卓客戶端將建立流媒體服 務(wù)器。并從iOS設(shè)備獲得音頻的各種屬性信息。流媒體服務(wù)器為RTSP服務(wù)器。 陽0化]當(dāng)安卓客戶端完成上述步驟時,安卓客戶端將對iOS設(shè)備返回信號,返回的信號 為:
[0066] "RTSP/1.0 2000K
[0067] Server lAirl'unes/lSO. 14
[0068] CSeq :27"
[0069] 當(dāng)iOS設(shè)備收到安卓客戶端的返回信號后,iOS設(shè)備將命令安卓客戶端在流媒體 (RTSF0服務(wù)器內(nèi)建立一個與iOS對話的通道(recordsession)。
[0070] 對話通道同時傳輸關(guān)于的音頻信息,根據(jù)所獲得的音頻的信息,建立一個解碼器, 從而對于后續(xù)傳輸?shù)囊纛l數(shù)據(jù)進(jìn)行解碼。
[0071] 當(dāng)安卓客戶端完成上述指令時,將向iOS設(shè)備返回信號,返回的信號為:
[0072] "RTSP/1.0 2000K
[0073]Transport:
[0074]RTP/AVP/UDP;unicast;mode=record;server_port=53561;control_port= 63379;timing_
[00巧]po;rt=50607
[0076] Session: I
[0077] Audi〇-Jack-Sta1:us: connected
[0078] Server lAirl'unes/lSO. 14 陽0巧]CSeq:4"
[0080] 當(dāng)完成上述信號的傳輸后,iOS設(shè)將開始傳輸音頻數(shù)據(jù),安卓客戶端接收相應(yīng)的數(shù) 據(jù),并通過建立的服務(wù)器進(jìn)行解碼和播放。
[0081] 當(dāng)iOS設(shè)備開始傳輸音頻數(shù)據(jù)時,安卓客戶端開始接收相應(yīng)的數(shù)據(jù)。通過解碼器 對接收的音頻數(shù)據(jù)進(jìn)行解碼,同時還可W使用播放器對音頻數(shù)據(jù)進(jìn)行播放。在音頻數(shù)據(jù)傳 輸及播放的過程中,服務(wù)器內(nèi)的對話通道還不斷的與iOS進(jìn)行信號的往返,從而確認(rèn)iOS設(shè) 備還與安卓客戶端保持連接。往返的信號為:
[0082] "RTSP/1.0 2000K
[0083] Audio-Latency:2205
[0084] Server lAirl'unes/lSO. 14 陽0化]CSeq: 5"
[0086] 在音頻傳輸?shù)倪^程中,還包括各種操控信息、和音頻的其它信息。各種操控信息和 音頻的其它信息是通過對話通道進(jìn)行傳輸。音頻的操控信息包括播放的暫停、停止和開始, W及音量大小的調(diào)節(jié)。音頻的其它信息包括音頻曲名、歌手名、專輯名、封面圖片和播放進(jìn) 度等信息。從而使音頻的控制、播放等信息的傳輸更加的方便。
[0087] 當(dāng)音頻的傳輸數(shù)據(jù)中存在加密時,iOS設(shè)備使用化irPlay發(fā)出加密信息化ir Play密碼是一種替換密碼。安卓客戶端對加密信息解密后將相應(yīng)的數(shù)據(jù)返回給iOS設(shè)備。 當(dāng)iOS設(shè)備收到安卓客戶端發(fā)出的返回信息,并確認(rèn)信息正確后iOS設(shè)備再次發(fā)出加密信 息,安卓客戶端再次對加密的信息進(jìn)行解密。并再次將解密信息返回給iOS設(shè)備。當(dāng)兩次 的解密完全正確后,iOS設(shè)備開始傳送音頻數(shù)據(jù),安卓設(shè)備接收相應(yīng)的數(shù)據(jù)。 陽0蝴圖片播放:
[0089] 當(dāng)iOS設(shè)備進(jìn)行圖片推送時,安卓客戶端將接收iOS設(shè)備發(fā)送的請求,所述請求中 包括相應(yīng)圖片的信息。請求為HTTP請求,同時,安卓客戶端將對請求進(jìn)行響應(yīng)。當(dāng)進(jìn)行圖 片播放時,所連接的端口號為7000。
[0090] 安卓客戶端間回復(fù)相應(yīng)的響應(yīng)信息。響應(yīng)信息為:
[0091] "HTTP/1.IlOlSwitchingProtocols
[0092]Date:化11,23化b2012 17:33:41GMT
[0093]Upgrade:PTTH/1. 0
[0094]Connection:Upgrade"
[0095] 當(dāng)iOS設(shè)備與安卓客戶端完成上述的響應(yīng)后,安卓客戶端將接收iOS設(shè)備發(fā)送的 關(guān)于將要傳輸?shù)膱D片的信息。
[0096] 接收圖片數(shù)據(jù),并利用所述圖片的信息對圖片數(shù)據(jù)進(jìn)行解析。
[0097] 在完成相應(yīng)圖片的信息傳送后,iOS設(shè)備將會傳送圖片。圖片將采用二進(jìn)制的格 式進(jìn)行傳送,傳送完成后使用Bitmap(位圖文件)進(jìn)行解析,從而將圖片能夠更好的顯示出 來。
[0098] 在圖片傳輸?shù)倪^程中,安卓客戶端與iOS設(shè)備還將不斷的進(jìn)行響應(yīng)。
[0099] 響應(yīng)信息為: 陽 100] "HTTP/1. 1 2000K
[0101] Date:化11,23化b2012 17:33:42GMT
[0102] Content-Length:0"
[0103] 視頻播放:
[0104] 安卓客戶端接收iOS設(shè)備發(fā)送的請求視頻播放請求,該請求中包括相應(yīng)視頻的信 息。該請求為HTTP請求,安卓客戶端將接收iOS設(shè)備發(fā)送的關(guān)于相應(yīng)視頻的信息。當(dāng)進(jìn)行 視頻播放時,所連接的端口號為7000。 陽105] 安卓客戶端將對請求進(jìn)行響應(yīng)。響應(yīng)信息為: 陽106]"HTTP/1. 1 101SwitchingProtocols陽107] Date:llui,23!^b2012 17:33:41GMT
[0108]Upgrade:PTTH/1. 0
[0109]Connection:Upgrade"
[0110] 當(dāng)iOS設(shè)備與安卓客戶端完成上述的響應(yīng)后,iOS設(shè)備將要獲取安卓客戶端的相 應(yīng)信息,W及網(wǎng)卡地址。從而使安卓客戶端與iOS設(shè)備能夠進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)的傳輸。安卓客 戶端的相應(yīng)信息通過響應(yīng)的方式傳輸,響應(yīng)的內(nèi)容使用的是iOS專用的PliSt文件格式, 需要先將數(shù)據(jù)轉(zhuǎn)為Plist二進(jìn)制格式再傳輸。 陽111] 響應(yīng)信息為: 陽 112] "HTTP/1. 1 2000K 陽 113]Date:llui,23!^b2012 17:33:41GMT
[0114] Content-Type:text/x-apple-plist+xml
[0115] Content-Length:427 陽116] < ?xmlversion= "I. 0"encoding= "UTF-8" ?〉
[0117] <!DOCTYPEplistPUBLIC"-//Apple//DTDPLISTI. 0//EN"
[0118] "ht1:p://www.apple.com/DTDs/P;rope;rtyList-l.0.化d"〉 陽 119]<plistversion= "I. 0"〉 陽120] <dict> 陽 121] <key>deviceid</key> 陽122] <string>58:55: CA:IA:E2:88</string> 陽 123] <key>features</key>
[0124]<integer>14839</integer>
[01巧]<key〉model</k巧〉 陽126] <string>AppleTV2,K/string> 陽127] <k巧〉p;rotovers</key〉
[0128] <str