(一) Red5流媒體服務器介紹
Red5是一個采用Java開發開源的Flash流媒體服務器。它支持:把音頻(MP3)和視頻(FLV)轉換成播放流; 錄制客戶端播放流(只支持FLV);共享對象;現場直播流發布;遠程調用。Red5使用RSTP作為流媒體傳輸協議,在其自帶的一些示例中演示了在線錄制,flash流媒體播放,在線聊天,視頻會議等一些基本功能。
(二) RTSP協議介紹
RTSP(Real Time Streaming Protocol),實時流傳輸協議,是TCP/IP協議體系中的一個應用層協議,由哥倫比亞大學、網景和RealNetworks公司提交的IETF RFC標准。該協議定義了一對多應用程序如何有效地通過IP網絡傳送多媒體數據。RTSP在體系結構上位於RTP和RTCP之上,它使用TCP或RTP完成數據傳輸。HTTP與RTSP相比,HTTP傳送HTML,而RTSP傳送的是多媒體數據。HTTP請求由客戶機發出,服務器作出響應;使用RTSP時,客戶機和服務器都可以發出請求,即RTSP可以是雙向的。
(三) juv-rtmp-client-1.5.10.jar的介紹
國外一個收費的RTMPClient,它就相當於是Red5服務器的一個組件,里面封裝了如何打包成RTMP協議數據、連接流媒體服務器、流媒體通訊等功能。這個jar包是收費的,但收費的東西都會有人來破解的,這里是下載破解版的:
(四) 點播和直播
1) Android利用攝像頭采集視頻數據
利用LocalServerSocket采集視頻數據的實時流數據,android自帶的LocalServerSocket是和java 的serverSocket是不同的,因為LocalServerSocket的客戶端和服務端都是必須在本機,所以我們可以在調用RecodMedia錄制視頻的時候建立客戶端LocalSocket來向服務端發送數據,在服務端接收數據調用juv—rtmp—client將接收的數據打包成RTMP協議數據向流媒體服務器發送數據。
利用android自帶的Camera來錄制數據,這里主要用到了照相機的CallBack回調接口,在這個回調接口里面可以實時的接收照相機錄制的視頻數據,這里面錄制的視頻數據是YUV420SP格式的數據流,這是最原始的數據流,是無法顯示的服務器界面的。將數據流轉化成YUV420SP2RGB格式的數據,然后利用juv—rtmp—client向流媒體服務器發送數據。
2) 發送視頻數據到流媒體服務器
juv—rtmp—client這個jar包封裝了很多和流媒體服務器交互的方法,當然有視頻數據傳輸格式。在流媒體服務提供了三種格式的傳輸方式:Record、Live、Append。
Record模式就是視頻數據實時的寫到你的Red5服務器工程里面,當你連接到服務器可以選擇觀看服務器接收的視頻數據,但這個不是實時的,無論你什么時候看都是從視頻數據的第一幀數據開始觀看,這就是所謂的點播
Live模式就是視頻數據實時的用流寫到服務器,不在服務器儲存任何文件,就是所謂的現場直播,無論什么時候觀看都是當前正在錄制的畫面。
3) 流媒體服務器播放FLV文件和視頻實時流方法
Red5安裝完成后,新建一個red5項目,當android連接到服務你新建的項目,會自動創建一個Stream的文件夾,這個文件夾主要負責儲存流媒體文件。
打開地址欄輸入:流媒體服務器地址,並連接到Red5自帶的播放器調試,Publisher界面,在這個調試窗口寫上你的流媒體地址、項目名稱以及你需要連接的實時的流發布名稱,點擊播放就可以實時播放你錄制的視頻了。