• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    面向視頻監(jiān)控的流媒體服務(wù)研究與實現(xiàn)

    2018-11-06 07:06:54李聞斌
    中小企業(yè)管理與科技 2018年13期
    關(guān)鍵詞:視頻文件時間軸數(shù)據(jù)流

    李聞斌

    (桂林電子科技大學(xué)計算機與信息安全學(xué)院,廣西桂林541004)

    1 引言

    隨著經(jīng)濟社會的發(fā)展,各地都在大力推廣平安城市、智慧城市,而大量視頻監(jiān)控系統(tǒng)建設(shè)起來后卻面臨著一個重要問題:如何共享海量的歷史視頻。由于各個視頻廠家的歷史視頻格式都不一樣,都必須得用他們自己的解碼庫來解碼播放,這就導(dǎo)致要播放如此多種類的視頻就得準備幾個甚至十幾個不同的播放器,同時還不能用視頻編輯工具對它們進行編輯。本文討論的流媒體服務(wù),通過RTSP地址接收攝像頭的音視頻流,再以標準RTSP轉(zhuǎn)發(fā)實時音視頻,對音視頻不做任何處理;同時歷史視頻即可點播,也可時間軸(時間段)播放,還可下載保存為標準MP4格式,可用普通播放器播放,如VLC、暴風(fēng)影音。

    2 技術(shù)介紹

    2.1 IOCP模型

    IOCP全稱I/O Completion Port,中文譯為I/O完成端口。IOCP是一個異步I/O的API,它可以高效地將I/O事件通知給應(yīng)用程序,適用于能控制并發(fā)執(zhí)行的高負載服務(wù)器的一個技術(shù),就是用于高效處理很多很多的客戶端進行數(shù)據(jù)交換的一個模型[1]。

    本文實現(xiàn)的流媒體服務(wù)應(yīng)用于windows平臺,采用IOCP模型可以實現(xiàn)多線程快速處理多客戶端的各種請求,有效避免因程序造成的等待。

    2.2 SDK技術(shù)

    軟件開發(fā)工具包(外語首字母縮寫:SDK、外語全稱:Software Development Kit)一般都是一些軟件工程師為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等建立應(yīng)用軟件時的開發(fā)工具的集合[2]。

    每個視頻設(shè)備生產(chǎn)廠家為獲取音視頻流、控制云臺、亮度、色度等以及存儲歷史視頻文件及播放功能等等,都有相應(yīng)的SDK開發(fā)包。由于沒有國家標準,每個SDK對實時流和歷史視頻的定義和格式都不一樣,形成了各種技術(shù)壁壘,無形中阻礙了視頻的共享,特別是歷史視頻的共享。

    2.3 RTSP協(xié)議[3]

    實時流協(xié)議(RTSP)是應(yīng)用級協(xié)議,控制實時數(shù)據(jù)的發(fā)送。該協(xié)議用于C/S模型,是一個基于文本的協(xié)議,用于在客戶端和服務(wù)器端建立和協(xié)商實時流會話。RTSP在體系結(jié)構(gòu)上位于RTP和RTCP之上,它使用TCP或UDP完成數(shù)據(jù)傳輸。

    經(jīng)研究發(fā)現(xiàn)每個視頻設(shè)備生產(chǎn)廠家的視頻監(jiān)控設(shè)備(攝像頭)都可以通過RTSP地址直接獲得音視頻流,RTSP地址如 :rtsp://user:pwd@%IP:554/h264/ch1/sub/av_stream 或 rtsp://user:pwd@%IP:554/stream1,只要獲得用戶名和密碼就可以直接訪問設(shè)備獲取實時流,極大的方便后續(xù)的開發(fā),如:存儲歷史視頻、視頻播放器。

    3 流媒體服務(wù)的實現(xiàn)

    流媒體服務(wù)通過跨網(wǎng)段以及跨平臺轉(zhuǎn)發(fā)視頻流服務(wù)提高了視頻聯(lián)網(wǎng)平臺視頻流管理以及傳輸?shù)姆€(wěn)定性、高效性和合理性,為用戶請求實時和歷史視頻提供了快速的響應(yīng)速度以及詳細的反饋信息[4-5]。

    由于流媒體服務(wù)主要功能是視頻轉(zhuǎn)發(fā)[6]和視頻回放,也就是實時視頻數(shù)據(jù)流轉(zhuǎn)發(fā)和歷史視頻數(shù)據(jù)流轉(zhuǎn)發(fā)。實時視頻數(shù)據(jù)流通過RTSP地址直接從視頻監(jiān)控設(shè)備(攝像頭)獲得,歷史視頻數(shù)據(jù)流則通過讀取存儲在存儲服務(wù)器上的歷史視頻文件獲得。

    歷史視頻數(shù)據(jù)流又分為單視頻數(shù)據(jù)流和時間軸視頻數(shù)據(jù)流。單視頻數(shù)據(jù)流很好理解就是讀取存儲服務(wù)器上的單個歷史視頻文件形成視頻數(shù)據(jù)流進行傳輸,時間軸視頻數(shù)據(jù)流則要求讀取多個歷史視頻文件的數(shù)據(jù)媒體信息將它們整合形成一個視頻數(shù)據(jù)流信息來進行傳輸。這是由于高清視頻文件的存儲時間一般在10分鐘左右,如果要查看20分鐘的視頻,普通操作(單視頻播放)是播放完一個再選擇下一個播放,很不方便,通過時間軸的方式播放視頻只需要用戶選擇好開始時間和結(jié)束時間即可觀看此時間段內(nèi)的視頻,特別是案件發(fā)生時間持續(xù)兩個視頻文件,可以省去在兩個歷史視頻文件間切換的時間,進而流暢的觀看整個過程。

    此外,流媒體服務(wù)還提供下載功能。下載也分為單視頻下載和時間軸視頻下載。

    由于實時視頻數(shù)據(jù)流轉(zhuǎn)發(fā)和歷史視頻數(shù)據(jù)流轉(zhuǎn)發(fā)請求,以及歷史視頻的下載都涉及到RTSP協(xié)議的應(yīng)用,本文著重講述RTSP客戶端和服務(wù)端的實現(xiàn)及在流媒體服務(wù)中的應(yīng)用。

    3.1 RTSP客戶端

    實時視頻數(shù)據(jù)流通過RTSP地址直接從視頻監(jiān)控設(shè)備(攝像頭)獲得,此時流媒體服務(wù)作為RTSP客戶端,通過RTSP協(xié)議請求視頻監(jiān)控設(shè)備上的服務(wù)程序來獲得實時視頻數(shù)據(jù)流。利用C++語言實現(xiàn)RTSP協(xié)議的Client:class MRTSPClient。

    類MRTSPClient完成連接設(shè)備服務(wù)、請求options、請求describe、解析SDP、請求setup、請求play和請求teardown。

    主要函數(shù)包括:

    bool open Url();//連接設(shè)備服務(wù)

    int request_options();//請求 options

    int request_describe();//請求describe

    int parse SDP();//解析SDP

    int request_setup();//請求setup

    int request_play();//請求 play

    int request_teardown();//請求 teardown

    3.2 RTSP服務(wù)端

    在轉(zhuǎn)發(fā)實時視頻數(shù)據(jù)流、歷史視頻數(shù)據(jù)流和歷史視頻文件下載時,流媒體服務(wù)作為RTSP服務(wù)端,接收客戶端的連接和請求。利用C++語言實現(xiàn)IOCP模型和解析RTSP協(xié)議請求函數(shù)。

    類CRTSPSocket實現(xiàn)IOCP模型,主要函數(shù)包括:

    bool_InitializeIOCP();//初始化IOCP

    bool_InitializeListenSocket();//初始化Socket

    static DWORD WINAPI_WorkerThread();//為IOCP請求服務(wù)的工作者線程

    static DWORD WINAPI_ClientHandle();//管理接入客戶的線程

    bool_DoRecv();//接收客戶端RTSP協(xié)議數(shù)據(jù)并交由ParseMessage函數(shù)處理

    RTSP協(xié)議解析函數(shù)包括:

    void ParseMessage();//分配處理

    int handleCmd_Option();//解析option請求

    int handleCmd_Describe();//解析describe請求

    int handleCmd_Setup();//解析setup請求

    int handleCmd_Play();//解析play請求

    int handleCmd_Teardown();//解析teardown請求

    在處理時間軸視頻流時需要讀取多個歷史視頻文件的媒體信息并整合形成一個視頻流,使用到的函數(shù)openFile(list&fileList,uint64_t startTime,uint64_t endTime,int nMode);//nMode:1 播放,2 下載

    具體的歷史視頻文件的媒體信息整合算法如下:

    4 小結(jié)

    本文提出的基于IOCP和RTSP的流媒體服務(wù)主要是面向視頻監(jiān)控系統(tǒng),通過RTSP地址直接從視頻監(jiān)控設(shè)備(攝像頭)獲得實時流,此方法成功繞開了設(shè)備廠家的SDK,降低了對設(shè)備廠家SDK的依賴,既可以加速后續(xù)新廠家設(shè)備的加入,也實現(xiàn)了歷史視頻文件的統(tǒng)一格式,形成標準的MP4文件供查看及播放,在一定程度上實現(xiàn)了兼容性的視頻監(jiān)控系統(tǒng),避免了信息孤島的形成,同時兼具可擴展性、可移植性。

    猜你喜歡
    視頻文件時間軸數(shù)據(jù)流
    改革開放以來黨的歷屆三中全會時間軸
    流媒體視頻文件相似性識別的方法
    時間軸上二階非線性非自治延遲動力系統(tǒng)的振動性
    隨心定制視頻文件的縮略圖
    電腦報(2021年23期)2021-07-23 17:36:18
    汽車維修數(shù)據(jù)流基礎(chǔ)(下)
    時間軸里的“共和國記憶”
    金橋(2019年12期)2019-08-13 07:16:28
    一種提高TCP與UDP數(shù)據(jù)流公平性的擁塞控制機制
    基于數(shù)據(jù)流聚類的多目標跟蹤算法
    北醫(yī)三院 數(shù)據(jù)流疏通就診量
    視頻網(wǎng)格中自適應(yīng)熱度變化的條塊化存儲
    無線電工程(2013年1期)2013-09-19 10:18:18
    邢台市| 嫩江县| 三都| 皮山县| 庆元县| 铜川市| 岐山县| 大港区| 安多县| 古蔺县| 读书| 吉安市| 乌兰县| 沿河| 仲巴县| 绿春县| 托克逊县| 孝感市| 霍城县| 乡城县| 祁门县| 雷山县| 金阳县| 成都市| 台中市| 海兴县| 吉木萨尔县| 邻水| 南江县| 乡城县| 新化县| 祁连县| 兴隆县| 永靖县| 小金县| 水富县| 宁河县| 扶沟县| 甘南县| 额尔古纳市| 保康县|