亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于開源框架的移動(dòng)流媒體實(shí)時(shí)傳輸系統(tǒng)

        2019-11-03 06:58:00羅玉盤
        科技傳播 2019年19期
        關(guān)鍵詞:命令行端口號(hào)視頻流

        羅玉盤

        隨著互聯(lián)網(wǎng)行業(yè)的快速發(fā)展和移動(dòng)智能手機(jī)的普及,移動(dòng)視頻的需求呈爆炸式增長,人們對(duì)于隨時(shí)隨地的多媒體訪問需求日益迫切[1]。本文基于Live555 和Androidpn 設(shè)計(jì)并實(shí)現(xiàn)了視頻實(shí)時(shí)傳輸系統(tǒng)。其中Live555 是一個(gè)為流媒體提供解決方案的跨平臺(tái)的C++開源項(xiàng)目,Androidpn 實(shí)現(xiàn)了從服務(wù)器到Android 移動(dòng)平臺(tái)的文本消息推送,是基于XMPP 協(xié)議的Java 實(shí)現(xiàn)。通過流媒體控制傳輸,軟硬件編解碼,在局域網(wǎng)內(nèi)實(shí)現(xiàn)Android 設(shè)備之間流暢視頻傳輸功能[2]。文章具體討論分析系統(tǒng)服務(wù)器端的設(shè)計(jì)和實(shí)現(xiàn),考慮到移動(dòng)設(shè)備的性能限制,通過服務(wù)器轉(zhuǎn)發(fā)視頻流后,可實(shí)現(xiàn)多終端播放。目前Live555 工程無法自定義視頻文件存放目錄和服務(wù)監(jiān)聽端口號(hào),通過優(yōu)化Live555 開源工程,加入啟動(dòng)參數(shù)設(shè)置,實(shí)現(xiàn)了多用戶同時(shí)進(jìn)行視頻傳輸。

        1 系統(tǒng)的總體架構(gòu)

        本系統(tǒng)主要包含兩個(gè)子系統(tǒng),分別是客戶端和服務(wù)器端。客戶端可同時(shí)發(fā)送和播放視頻數(shù)據(jù),服務(wù)器端則集成了Live555 和Androidpn 兩個(gè)開源框架,其中Live555 負(fù)責(zé)視頻流處理,Androidpn 負(fù)責(zé)消息推送。系統(tǒng)的功能結(jié)構(gòu)如圖1 所示,業(yè)務(wù)流程如圖2 所示。

        系統(tǒng)的各個(gè)子系統(tǒng)功能詳細(xì)介紹如下:

        1)采集客戶端主要負(fù)責(zé)對(duì)視頻數(shù)據(jù)的采集、編碼和發(fā)送。采集客戶端的視頻發(fā)送過程是與服務(wù)器建立RTSP 連接[1],從攝像頭提取視頻數(shù)據(jù),使用H.264 進(jìn)行編碼[3],打包成 RTP 數(shù)據(jù)包,發(fā)送至服務(wù)器端。

        2)流媒體服務(wù)器端主要負(fù)責(zé)收集客戶端發(fā)送的視頻數(shù)據(jù),進(jìn)行存儲(chǔ)并轉(zhuǎn)發(fā),同時(shí)提供對(duì)視頻數(shù)據(jù)以及客戶端用戶進(jìn)行管理控制的功能。流媒體服務(wù)器集成了Live555 和Androidpn 兩個(gè)開源框架,其中Live555 負(fù)責(zé)實(shí)現(xiàn)視頻直播、點(diǎn)播以及錄制等功能,Androidpn 負(fù)責(zé)實(shí)現(xiàn)客戶端在線管理以及服務(wù)端到客戶端的消息推送。

        3)播放客戶端主要負(fù)責(zé)對(duì)視頻數(shù)據(jù)的接收、解碼和播放。客戶端的視頻播放過程是與服務(wù)器建立RTSP 連接,接收并解析RTP 數(shù)據(jù)包,解碼出視頻數(shù)據(jù)進(jìn)行播放。

        圖1 視頻實(shí)時(shí)傳輸系統(tǒng)功能結(jié)構(gòu)圖

        圖2 視頻實(shí)時(shí)傳輸系統(tǒng)業(yè)務(wù)流程圖

        2 服務(wù)器端的實(shí)現(xiàn)

        2.1 Live555 優(yōu)化

        為了支持多用戶同時(shí)在線進(jìn)行傳輸,需要對(duì)Live555 進(jìn)行功能擴(kuò)展,使其能夠自定義監(jiān)聽端口號(hào),不同用戶監(jiān)聽不同端口,同時(shí)能夠自定義視頻文件存放目錄,在點(diǎn)播視頻時(shí)可方便快捷地定位到視頻文件。

        首先,優(yōu)化mediaServer 項(xiàng)目,此項(xiàng)目用于實(shí)現(xiàn)視頻文件點(diǎn)播功能。在DynamicRTSPServer.hh 中添加變量,用于記錄視頻文件存放目錄。在live555MediaServer.cpp中的main函數(shù)中,添加從命令行讀取端口號(hào)和視頻文件存放目錄參數(shù)的代碼。在RTSPServer 的初始化代碼行中,將原來的默認(rèn)端口號(hào)554 改為接收到的參數(shù)值。對(duì)DynamicRTSPServer 的視頻文件存放目錄變量進(jìn)行初始化。在DynamicRTSPServer.cpp 的lookupServerMediaSession 函 數(shù) 中,將目錄路徑和文件名進(jìn)行拼接形成完整路徑,作為ServerMediaSession 的鍵值。這樣,將項(xiàng)目編譯后可生成mediaServer.exe 文件,通過命令行執(zhí)行mediaServer.exe-p port-d fileDir 命令即可實(shí)現(xiàn)視頻文件點(diǎn)播功能。

        其次,優(yōu)化proxyServer 項(xiàng)目,該項(xiàng)目用于實(shí)現(xiàn)視頻流轉(zhuǎn)發(fā)功能。在live555ProxyServer.cpp中同樣添加從命令行讀取端口號(hào)參數(shù)的代碼。在RTSPServer 的初始化代碼行中,將原來的默認(rèn)端口號(hào)554 改為接收到的參數(shù)值。這樣,將項(xiàng)目編譯后可生成proxyServer.exe 文件,通過命令行執(zhí)行proxyServer.exe-p port rtsp_url 命令即可實(shí)現(xiàn)對(duì)指定視頻流的轉(zhuǎn)發(fā)功能。

        最后,優(yōu)化openRTSP 項(xiàng)目,該項(xiàng)目用于實(shí)現(xiàn)視頻流錄制功能。在playCommon.cpp 的main 函數(shù)中,已經(jīng)有從命令行讀取視頻文件存放目錄參數(shù)的代碼。但是在setupStreams 函數(shù)中,原有代碼對(duì)保存的視頻文件名進(jìn)行了修改,需將其改為接收到的參數(shù)值。這樣,將項(xiàng)目編譯后可生成openRTSP.exe 文件,通過命令行執(zhí)行openRTSP.exe-F filePath rtsp_url 命令即可實(shí)現(xiàn)對(duì)指定視頻流的錄制功能。

        2.2 Live555 與Androidpn 的集成

        將Live555 優(yōu)化完畢并編譯好可執(zhí)行文件后,下一步,需要搭建服務(wù)器端程序。在Androidpn 項(xiàng)目的基礎(chǔ)上,集成Live555 的功能。

        首先,將所有可執(zhí)行文件拷貝至Androidpn 工程的WEB-INF/video 目錄下。

        其次,定義MediaServerFacade 類,該類實(shí)現(xiàn)多個(gè)服務(wù)接口,包括getUserList,getVideoList,call,reply,stop 等。其中g(shù)etUserList 方法返回當(dāng)前在線用戶列表,通過遍歷ClientSession獲取每個(gè)會(huì)話的用戶名;getVideoList 方法返回歷史視頻列表,通過Runtime.getRuntime().exec()方法執(zhí)行上節(jié)中的命令行啟動(dòng)點(diǎn)播服務(wù)進(jìn)程,然后掃描視頻文件存放目錄獲取所有視頻文件名稱;call 方法實(shí)現(xiàn)呼叫指定用戶,通過NotificationManager 的sendNotifications 方 法將呼叫請(qǐng)求推送給指定用戶;reply 方法實(shí)現(xiàn)用戶呼叫應(yīng)答,若被呼叫的用戶選擇拒絕本次呼叫,通過NotificationManager 的sendNotifications 方法將拒絕信息推送給呼叫用戶,若被呼叫的用戶選擇接受本次呼叫,通過Runtime.getRuntime().exec()方法執(zhí)行上節(jié)中的命令行啟動(dòng)轉(zhuǎn)發(fā)服務(wù)和錄制服務(wù)進(jìn)程,并通過NotificationManager 的sendNotifications 方法將轉(zhuǎn)發(fā)視頻流的地址推送給雙方用戶;stop 方法實(shí)現(xiàn)停止視頻傳輸,通過Process.destroy()方法結(jié)束轉(zhuǎn)發(fā)服務(wù)和錄制服務(wù)進(jìn)程,并將停止信息推送給另一方用戶。

        最后,修改WEB-INF/web.xml,添加servlet,對(duì)客戶端的服務(wù)調(diào)用進(jìn)行攔截。

        3 系統(tǒng)測(cè)試

        將集成完畢的服務(wù)端部署到中間件上,并啟動(dòng)中間件。這里以視頻實(shí)時(shí)傳輸功能為例,當(dāng)兩個(gè)移動(dòng)終端進(jìn)行視頻通信時(shí),在PC 上打開VLC 播放器[2],輸入其中一個(gè)終端的轉(zhuǎn)發(fā)視頻流地址,也能同時(shí)接收視頻,播放結(jié)果比較理想。

        測(cè)試表明,在Android 移動(dòng)系統(tǒng)下,服務(wù)器對(duì)客戶端的視頻傳送非常流暢,可實(shí)現(xiàn)多終端接收,穩(wěn)定可靠。

        4 結(jié)束語

        當(dāng)今世界,隨著移動(dòng)終端的種類逐漸增多,功能逐漸增強(qiáng),普及率逐漸升高,視頻通信的市場(chǎng)需求越來越強(qiáng)烈。本系統(tǒng)實(shí)現(xiàn)了Android 移動(dòng)終端之間的視頻通信,多終端接收視頻流,視頻錄制及點(diǎn)播功能,具有實(shí)際意義。

        猜你喜歡
        命令行端口號(hào)視頻流
        邊緣實(shí)時(shí)視頻流分析系統(tǒng)配置動(dòng)態(tài)調(diào)整算法研究
        基于視頻流傳輸中的擁塞控制研究
        在Docker容器中安裝應(yīng)用程序
        Windows 10新版CMD更新
        淺談以java為基礎(chǔ)的Socket通信簡介及實(shí)現(xiàn)
        青春歲月(2017年5期)2017-04-20 18:34:23
        Linux系統(tǒng)下GRIB2格式GFS資料轉(zhuǎn)為GRIB1格式的方法詳解
        美國視頻流市場(chǎng)首現(xiàn)飽和征兆
        Winsock編程在《計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)》教學(xué)中的應(yīng)用
        基于Android系統(tǒng)的互動(dòng)展示APP的研究與設(shè)計(jì)
        視頻網(wǎng)格中流媒體業(yè)務(wù)的流量模型
        亚洲欧美aⅴ在线资源| 久久91精品国产91久久跳舞| 久久麻传媒亚洲av国产| 久久婷婷国产综合精品| 久久亚洲国产成人精品性色| 日韩我不卡| 亚洲天堂av大片暖暖| 亚洲av成人av三上悠亚| 在线成人爽a毛片免费软件| 全免费a级毛片免费看视频 | 啪啪视频一区二区三区入囗| 国产一级一厂片内射视频播放| 风韵丰满熟妇啪啪区99杏| 国产亚洲欧美精品久久久| av鲁丝一区鲁丝二区| 亚洲国产一区二区三区视频在线 | 国产av麻豆mag剧集| 无码的精品免费不卡在线| 成人影院免费视频观看| 性色视频加勒比在线观看| 亚洲av无码xxx麻豆艾秋| 国产主播在线 | 中文| 国产大屁股白浆一区二区三区| 久青草影院在线观看国产| 久久精品国产第一区二区三区| 成人午夜视频一区二区无码| 亚洲乱码中文字幕第一页| 97久久婷婷五月综合色d啪蜜芽| 中国丰满熟妇av| 国产一级淫片a免费播放口| 九九精品国产亚洲av日韩| 人妻插b视频一区二区三区| 免费人成黄页在线观看视频国产 | 国模冰莲自慰肥美胞极品人体图| 欧美熟妇精品一区二区三区| 国产极品喷水视频| 国产三级精品av在线| 爆乳熟妇一区二区三区霸乳| a观看v视频网站入口免费| 精品国产3p一区二区三区| 亚洲av不卡无码国产|