手機端與平台之間的視頻直播功能,主要通過集成多種開源視頻框架以及采購第三方視頻直播服務器產品來實現預定業務需求。視頻直播對話功能的實現,主要經歷了三個階段:利用開源視頻框架實現視頻直播、采購第三方視頻服務器實現視頻直播、系統平台集成開源框架實現視頻互播。
圖1.視頻互播邏輯框架
1 利用開源視頻框架實現視頻直播
首先,視頻流轉播需要獨立服務器軟件構建視頻流轉播通道,經過框架調研與分析,我們選擇SRS服務器軟件作為視頻轉播服務器軟件,而SRS是基於Linux操作系統的服務器軟件。通過配置搭建CentOS服務器虛擬機作為SRS軟件的基礎系統環境,再安裝配置開源SRS流媒體服務器軟件作為推流和播流的服務軟件,為視頻直播模塊的開發提供基礎的測試環境。流媒體服務器(SRS)在視頻流播放的過程中,起到建立視頻流通道的作用,每個唯一的URL地址代表一個視頻流通道,推流和拉流都是針對該視頻流通道的操作。流媒體服務器同時可以擔負起上千條視頻流通道轉發操作。
其次,手機端視頻直播客戶端采用開源的主流yaesa框架,實現了較好視頻推流效果。依據業務需求把yaesa推流模塊集成封裝,順利合並到原有的Android系統框架中,完成android客戶端的視頻推流功能,將rtmp格式視頻流推送到流媒體服務器(SRS)的視頻流通道地址。
再次,系統平台的視頻畫面播放功能采用video.js播放框架實現,video.js是基於html5的網絡視頻播放器,根據指定的視頻流通道地址從流媒體服務器自動拉取rtmp格式視頻流,並播放實時的視頻畫面。Web頁面中嵌入多個video控件對象,從多個視頻流通道讀取視頻流,實現了多視頻直播畫面窗口效果。
2 采購第三方視頻服務器實現視頻直播
為了保障視頻流轉發過程的穩定性,從硬件廠商采購了第三方視頻服務器TFMS,包含硬件設備和流媒體服務器軟件兩個部分,替換開源流媒體服務器軟件SRS產品,其發揮的視頻流轉發作用與SRS是一樣。
對於系統功能實現來說,無需新增開發工作量,只需要修改視頻流通道地址url即可實現流媒體服務器的切換。
3 系統平台集成開源框架實現視頻互播
上述第一階段實現了視頻流從手機端到瀏覽器端的單向傳播。根據業務需求的深入,需要再實現視頻流從瀏覽器端到手機端的單向傳播,構建兩條雙向視頻流通道,從而達到視頻播放互動對話的效果。
技術實現上,需要兩個方面的技術准備。瀏覽器集成插件從攝像頭和麥克風獲取視頻流和聲音,並推流到指定的視頻流通道url;手機端集成拉流框架,從指定視頻流通道url拉取視頻流和聲音,並播流到播放窗口控件中。
系統平台的推流插件方面,通過市場產品調研和比較,選擇了NodeMediaClient Web推流框架,該框架基於flash實現了連接PC的Camera和microphone硬件設備端口,直接獲取Camera視頻流和microphone聲音,並以rtmp格式把視頻流推送到流媒體服務器的指定視頻流通道url。
手機端采用vitamio播流框架,從指定的視頻流通道url拉取視頻流,並在手機端彈出視頻播放的浮動窗口,該窗口中實時播放拉取的rtmp格式視頻流播放,從而完成從瀏覽器端到手機端的視頻流的推流和拉流過程。
參考文獻
1 https://github.com/ossrs/srs;
2 https://github.com/illuspas/NodeMediaClient-Web;
3 https://www.cnblogs.com/xiaoniuzai/p/7129036.html;
4 https://www.cnblogs.com/endv/p/7487685.html;
5 http://www.jq22.com/jquery-info404;