《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于Live555的流媒體服務器設計與實現
基于Live555的流媒體服務器設計與實現
2014年微型機與應用第18期
許華濱1,2,謝維波1,2,黃 奕1,2
1.華僑大學 信息科學與工程學院,福建 廈門 361021; 2.華僑大學 廈門軟件園 嵌入式技術開放實驗室,福建 廈門 361008
摘要: 針對傳統監控系統的不足已不能滿足現代人對監控視頻內容的要求,提出了一種解決方案并對其進行闡述,說明如何在Linux系統下,以IP網絡攝像頭為數據源,結合開源Live555庫實現流媒體服務器的方法,其中涉及了視頻數據的獲取、編碼、流化以及傳輸等模塊。流媒體服務器的實現解決了多路客戶訪問攝像頭的負載問題,同時若與圖像處理算法結合可提供特殊的視頻監控內容以滿足應用需求。
Abstract:
Key words :

  摘  要: 針對傳統監控系統的不足已不能滿足現代人對監控視頻內容的要求,提出了一種解決方案并對其進行闡述,說明如何在Linux系統下,以IP網絡攝像頭為數據源,結合開源Live555庫實現流媒體服務器的方法,其中涉及了視頻數據的獲取、編碼、流化以及傳輸等模塊。流媒體服務器的實現解決了多路客戶訪問攝像頭的負載問題,同時若與圖像處理算法結合可提供特殊的視頻監控內容以滿足應用需求。

  關鍵詞RTSP;流媒體服務器;Live555;網絡監控

0 引言

  隨著圖像處理的發展,構建一個良好的視頻圖像處理應用平臺越來越重要。目前的攝像頭對多路訪問的負載能力非常有限,并且現在人們對監控內容的要求已不僅僅停留在原始視頻上,而大多更希望能夠實時監控經過特殊處理的視頻數據。為了滿足這一需求,以IP攝像頭作為數據源,PC端搭建流媒體服務器供多路客戶進行實時監控的模式是一個很好的解決方案,這樣既能減少攝像頭負載能力的限制,同時又能滿足圖像處理后的監控需求。本文設計的流媒體服務器[1]架設在Linux操作系統的PC上,采用RTSP協議[2]進行實時傳輸以供客戶訪問。

  服務器首先登錄訪問IP攝像頭,匹配通過后IP攝像頭返回捕捉的視頻數據給服務器,當客戶端通過鏈接向服務器發送訪問請求后,服務器開始向客戶端傳送實時視頻數據,供客戶進行實時監控。

1 IPC數據獲取及存儲

  網絡攝像機對于人們來說較為重要的是如何獲取其視頻源數據,而??低暤木W絡攝像機為人們提供了二次開發的接口以方便對IPC的功能應用進行擴展。下面對IPC視頻數據獲取流程進行介紹。

  由于在IPC端已經有設定好的賬戶與密碼,因此用戶在訪問此IPC時就需要通過NET_DVR_Login_V30函數來進行注冊:NET_DVR_Login_V30(IP地址,端口,賬號,密碼,&struDeviceInfo),IP攝像頭匹配正確后才有訪問權限。

  該流程中,啟動數據流的接收是通過調用NET_DVR_RealPlay_V30來實現的。該函數中有一項參數可用來設置數據回調函數,每當有碼流數據到達時,便會跳轉到這個已設置的數據回調函數中,在數據回調函數中需要對接收到的數據流進行判斷,若為系統頭則進行一些設置,若為碼流數據則可將其存入緩沖區內。其流程示意圖如圖1所示。

001.jpg

  在圖1中,判斷流數據為系統頭時需要進行一些設置,其中就包括了解碼回調函數的設置。解碼回調函數的作用是當碼流數據存入緩沖區達一幀時會跳轉到該函數中,此時在解碼回調函數內部便可對完整的一幀數據進行操作。

  在解碼回調函數內獲取到的是YV12格式幀數據,而由于所選擇的是x264編碼器,其輸入源規范為YUV格式,因此必須在解碼回調函數內將其轉為YUV格式后才可供x264進行編碼,之后就可以將其儲入緩沖區內。本次開發過程中以循環緩沖區和鏈表的方式存取數據。

2 圖像編碼模塊

  前面提到,H264編碼使用的是x264編碼器,x264提供了一些開發接口,但仍需進一步封裝,其設計流程如下:

  (1)初始化EncoderInit函數:在其內部設置初始化結構體,調用x264_param_default及x264_encoder_open進行編碼器初始化,并開辟存放編碼前后圖像存儲空間。

 ?。?)編碼實現Encode_frame函數:將原始YUV420P格式數據傳給x264_encoder_encode函數進行編碼得到nal數組,其后循環調用x264_nal_encode函數逐一將編碼后nal封裝成NAL單元并寫入輸出緩存區中,完成一幀圖像數據的編碼。

3 流媒體服務器模塊

  服務器結合開源Live555庫進行設計,提供對外實時播放。Live555是一個為流媒體提供解決方案的跨平臺的C++開源項目,它包括了四個基本庫,分別是:UsageEnvironment、BasicUsageEnvironment、Groupsock和LiveMedia[4]。其中LiveMedia庫是最為核心的,它包含了對應各種不同流媒體類型的數據源類Source、數據接收類Sink、會話類Session及RTSPServe等。

  TaskScheduler實例是整個程序的任務調度器[5],它通過doEventLoop()方法實現程序的循環結構,并在循環中進行任務調度。

  3.1 服務器的建立及響應

  程序流程如下:

  (1)建立任務調度器

  TaskScheduler*scheduler=BasicTaskScheduler::createNew()

 ?。?)建立程序運行環境

  _env=BasicUsageEnvironment::createNew(*scheduler)

 ?。?)創建RTSP服務器綁定端口號

  RTSPServer*rtspServer=RTSPServer::createNew(*_env,9554)

  (4)創建服務器媒體對象:創建ServerMediaSession實例。

 ?。?)進入事件循環

  _env->taskScheduler().doEventLoop()

  服務器采用的是事件驅動機制,在這個循環中,doEventLoop()主要負責三件事:監聽客戶端請求并進行響應、對事件發生進行處理、對延時任務進行調度。

  RTSP協議應用于C/S模式,它本身并不傳輸數據,而只負責實現連接、播放、停止等操作,數據的傳輸則交由RTP協議來進行[6]。服務器與客戶端建立連接時是通過響應客戶端發送的OPTION、DESCRIBE、SETUP、PLAY、TERADOWN等請求來進行交互連接的[7]。常用的交互方法作用如下:

  OPTION:C向S端獲取可提供的交互方法

  DESCRIBE:要求得到S端提供的媒體初始化信息(SDP)

  SETUP:確定傳輸模式并提醒S端建立會話

  PLAY:C向S發送播放請求

  TERADOWN:C向S發送關閉請求

  服務器對客戶端的具體響應情況如下:

 ?。?)服務器端在收到客戶端發送的DESCRIBE請求時,相應的處理函數根據流媒體名查找或創建ServerMediaSession,生成SDP信息作為返回響應此請求。

 ?。?)服務器端收到SETUP請求時,相應處理函數會對SETUP請求的傳輸頭解析,獲取流媒體發送傳輸參數,將這些參數組裝成響應消息返回給客戶端。期間subsession調用CreatNew()生成Source數據源實例及RTPSink數據接收實例。

 ?。?)服務器端收到PLAY請求時,RTPSink數據接收實例會開始向Source數據源索取圖像數據,并將索取到的數據打包成RTP包發送出去。此時,當RTPSink開始索取數據時,就啟動了對一幀圖像數據的流化。

  3.2 流化過程

  當Sink向Source索取數據時服務器內便啟動了流化,數據由Source流向Sink,最終再發送出去。但這一過程中經過了多個節點傳遞才到達Sink端,這是因為最初的Source視頻數據如果直接傳給Sink端,便無法直接進行流式傳輸,因此需要經過中間多個節點對視頻數據進行“加工”才能滿足流式傳輸的要求。下面是一個示例:

  ′source1′->′source2′(a filter)->′source3′(a filter)->′sink′

  filters接收到數據后也作為后者的source。對于本文H264格式的流媒體來說,圖像數據經各節點傳遞過程如下:

  WebcamFrameSource(自定義節點)->H264VideoStreamParser->H264VideoStreamFramer->H264FUAFragmenter->H264 VideoRTPSink

  WebcamFrameSource中H264編碼的視頻數據傳給H264VideoStreamParser,并由它分解為多個NAL單元,然后經H264VideoStreamFramer處理后由H264FUAFragmenter進行RTP封包,最后H264VideoRTPSink負責形成RTP包頭并發送數據。

  在這個過程中,WebcamFrameSource類是創建的,后面的H264VideoStreamFramer類、H264FUAFragmenter類、H264VideoRTPSink類都是由Live555庫定義好了的,所創建的WebcamFrameSource類負責將前期的YUV幀數據從緩沖區取出進行H264編碼,然后將編碼好的視頻數據傳給下一個節點即可。

  3.3 服務器內數據獲取與打包發送

  在Live555中MediaSource類是所有Source的基類,對各種流媒體格式類型及編碼的支持都是通過這個類的派生類來實現的,FrameSource派生自MediaSource,并且內部定義了一個虛函數doGetNextFrame(),用來讓其子類實現各自媒體格式的幀獲取。若要自定義Source的來源,則可以通過自定義一個派生自FrameSource的類來實現。前面提到的WebcamFrameSource就是繼承自FrameSource類用來實現數據源獲取的。

  doGetNextFrame()是FrameSource的虛函數,Sink實例在向Source實例索取數據時,會重復循環層層調用doGetNextFrame()來獲取實時數據源,獲取過程就是將前期的YUV幀數據從緩沖區取出進行H264編碼,并將編碼完成的數據間接地傳遞給Sink的緩沖區,最后再調用FramedSource::afterGetting()函數來通知Sink端作處理。具體流程如圖2所示。

002.jpg

  數據獲取后交由PackFrame()等函數進行打包,最后進行發送。若無數據,則繼續向Source數據源進行索取,循環之前的步驟。

4 實驗結果

003.jpg

  實驗結果如圖3所示,左側PC為基于Linux的RTSP服務器,負責將IPC拍攝到的視頻實時傳送;右側PC以及手機都作為客戶端,通過RTSP服務器提供的URL進行鏈接,進而實時播放。

5 結論

  本文對IPC數據源的獲取方法、編碼流程、服務器內部數據流化及數據源類WebcamFrameSource的設計進行了說明。使用IPC通過路由器將數據傳送至服務器,服務器端進行實時傳送并提供相應的URL鏈接供客戶端使用??蛻舳丝墒褂肰LC等支持RTSP協議的視頻軟件進行實時監控。

  參考文獻

  [1] 杜嘩.流媒體技術的原理和應用[J].光盤技術,2008(7):9-11.

  [2] SCHULZRINNE A, RAO R, Columbia University, et al. RFC2326-Real time streaming protocol(RTSP)[S].1998.

  [3] 樊珊.基于RTP的H264視頻傳輸技術的研究[D].濟南:山東大學,2008.

  [4] 樊承澤,陳蜀宇,楊新華.基于網絡計算機的流媒體播放器的研究與實現[J].計算機技術與發展,2010,20(4):195-198.

  [5] 茅炎菲,忠東.基于RTSP協議網絡監控系統的研究與實現[J].計算機工程與設計,2011,32(7):2523-2530.

  [6] 王彥麗,陳明,陳華,等.基于RTP/RTCP的數字視頻監控系統的設計與實現[J].計算機工程與科學,2009,31(3):58-60.

  [7] 王路幫.RTSP協議及其分布式應用框架[J].安徽職業技術學院學報,2006,5(1):4-6.


此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          日韩一级成人av| 欧美久久一级| 亚洲欧美综合v| 久久国产一区二区三区| 国产精品男人爽免费视频1| 欧美三级视频| 欧美一区在线直播| 欧美午夜精品久久久久久浪潮| 亚洲电影成人| 久久九九久精品国产免费直播| 在线看成人片| 久久免费视频网| 欧美亚洲成人免费| 一区二区国产在线观看| 久久九九电影| 欧美日韩免费区域视频在线观看| 欧美14一18处毛片| 久久一区二区三区国产精品| aa日韩免费精品视频一| 欧美激情精品久久久久久蜜臀| 亚洲国产精品小视频| 亚洲精品日韩在线| 美脚丝袜一区二区三区在线观看| 国产精品成人一区| 国产农村妇女精品一区二区| 国产女人18毛片水18精品| 国产欧美在线播放| 欧美日韩高清区| 国产精品免费网站| 亚洲欧洲精品一区二区| 亚洲高清视频中文字幕| 久久精品国产91精品亚洲| 国产午夜精品视频免费不卡69堂| 日韩视频中午一区| 最新国产乱人伦偷精品免费网站| 亚洲电影网站| 国产精品国产三级国产专区53| 亚洲电影观看| 欧美色欧美亚洲另类二区| 一区二区三区高清不卡| 欧美日韩国产首页| 美女诱惑黄网站一区| 亚洲精品久久视频| 一区二区三区精品视频| 欧美一区视频在线| 亚洲无玛一区| 久久久人成影片一区二区三区观看| 欧美好吊妞视频| 欧美激情一区二区三级高清视频| 欧美一级在线播放| 亚洲少妇在线| 国产亚洲欧洲一区高清在线观看| 午夜欧美视频| 国产在线精品一区二区中文| 一区在线电影| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲中午字幕| 亚洲欧美日韩综合国产aⅴ| 欧美日韩激情小视频| 中文日韩在线视频| 亚洲欧洲免费视频| 欧美一区日韩一区| 91久久精品日日躁夜夜躁国产| 国产欧亚日韩视频| 欧美成人激情视频免费观看| 日韩一区二区福利| 久久精品一二三| 亚洲高清资源综合久久精品| 狠狠操狠狠色综合网| 亚洲福利在线观看| 久久午夜精品一区二区| 国内精品写真在线观看| 欧美精品久久久久久久| 亚洲欧美日韩综合| 一区二区三区国产精品| 亚洲欧美视频一区二区三区| 国产九九视频一区二区三区| 国产一区二区黄| 欧美日韩在线观看一区二区| 欧美午夜一区二区三区免费大片| 亚洲激情自拍| 亚洲毛片在线观看.| 国产一区三区三区| 国产精品视频xxxx| 欧美在线免费一级片| 美女网站在线免费欧美精品| 国产精品五区| 午夜精品一区二区三区四区| 国产日韩视频一区二区三区| 欧美一区二区三区精品电影| 欧美成人tv| 欧美精品在线免费| 亚洲伦理在线| 国产日产亚洲精品系列| 国自产拍偷拍福利精品免费一| 狠狠综合久久av一区二区小说| 伊人精品久久久久7777| 欧美日韩美女| 裸体歌舞表演一区二区| 欧美一区二区三区日韩| 免费亚洲电影| 美女精品自拍一二三四| 一区二区三区视频观看| 午夜精品在线| 狠狠色狠狠色综合| 亚洲美女视频在线免费观看| 激情另类综合| 亚洲欧美激情视频在线观看一区二区三区| 欧美视频成人| 欧美一区二区私人影院日本| 一区二区三区精密机械公司| 99精品国产福利在线观看免费| 久久青青草原一区二区| 尤物九九久久国产精品的分类| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲欧美日韩在线高清直播| 欧美老女人xx| 国产伦精品一区二区三区高清版| 国产精品久久久久久超碰| 精品成人久久| 巨乳诱惑日韩免费av| 欧美成人精品在线视频| 亚洲精品系列| 最新日韩精品| 欧美亚洲免费高清在线观看| 国产精品二区在线观看| 欧美午夜精品理论片a级大开眼界| 欧美三级不卡| 国产精品久久久久久久久婷婷| 亚洲激情在线观看视频免费| 欧美紧缚bdsm在线视频| 亚洲毛片网站| 国产美女扒开尿口久久久| 亚洲午夜精品一区二区| 欧美日韩国产综合视频在线观看| 久久精品国内一区二区三区| 欧美永久精品| 精品999在线播放| 欧美日韩国产综合一区二区| 欧美色图五月天| 亚洲免费中文字幕| 亚洲一二三四区| 久久精品成人一区二区三区蜜臀| 国产精品视频专区| 亚洲精品一二区| 亚洲欧美区自拍先锋| 久久偷窥视频| 久久综合九色综合久99| 午夜国产精品影院在线观看| 欧美黄污视频| 性做久久久久久| 黄网动漫久久久| 国产精品一区二区你懂的| 国产精品亚洲成人| 欧美精品免费观看二区| 99re亚洲国产精品| 国产精品夜夜嗨| 一区二区三区导航| 国产精品美女久久久免费| 亚洲激情视频网| 午夜精品久久久久久久99黑人| 亚洲福利国产| 国产精品亚洲激情| 亚洲欧美在线x视频| 亚洲欧美激情诱惑| 亚洲精品日韩欧美| 欧美永久精品| 国产美女精品人人做人人爽| 性欧美18~19sex高清播放| 香蕉久久夜色精品| 亚洲电影免费观看高清完整版| 免费亚洲婷婷| 午夜精品理论片| 久久久水蜜桃| 亚洲图片自拍偷拍| 国产日韩欧美一区二区| 欧美区一区二区三区| 在线免费精品视频| 在线视频精品一| 亚洲国产成人不卡| 久久久www成人免费精品| 国产精品美女久久久久久久| 国产精品久久久久久久久久免费| 国产一区二区三区免费在线观看| 欧美日韩国产色综合一二三四| 午夜一区二区三视频在线观看| 一本色道久久| 欧美一区日本一区韩国一区| 玖玖在线精品| 日韩天堂在线视频| 国产自产高清不卡| 亚洲一区二区不卡免费| 欧美视频在线观看 亚洲欧| 国产精品99一区二区| 欧美日韩第一区日日骚| 久久精品国产精品亚洲| 欧美日韩在线一区| 中国成人黄色视屏| 欧美日韩福利视频| 香蕉久久一区二区不卡无毒影院| 亚洲承认在线| 91久久嫩草影院一区二区| 99国产欧美久久久精品| 亚洲欧洲精品一区二区精品久久久| 亚洲第一中文字幕在线观看| 在线观看欧美视频| 狠狠色狠狠色综合人人| 国产精品v欧美精品v日本精品动漫| 欧美亚洲视频在线观看| 欧美日韩精品二区第二页| 欧美区在线播放| 免费看黄裸体一级大秀欧美| 亚洲开发第一视频在线播放| 999在线观看精品免费不卡网站| 日韩视频第一页| 欧美日韩国产欧美日美国产精品| 亚洲美女一区| 欧美1区2区视频| 国产精品二区三区四区| 久久精品99国产精品酒店日本| 欧美大片在线观看一区二区| 99成人免费视频| 欧美影院久久久| 韩国精品久久久999| 亚洲欧美在线观看| 欧美精品日韩www.p站| 国产精品私人影院| 亚洲欧美在线播放| 另类人畜视频在线| 欧美一区二区三区在线看| 欧美激情一区二区三区四区| 国产欧美日韩视频一区二区三区| 亚洲午夜精品网| 久久亚洲影音av资源网| 国产午夜精品视频免费不卡69堂| 99天天综合性| 欧美日韩国产精品一区二区亚洲| 欧美国产一区在线| 欧美视频一区| 亚洲视频在线视频| 亚洲电影在线播放| 久久精品国产亚洲一区二区| 亚洲人成高清| 一本色道精品久久一区二区三区| 亚洲欧美国产日韩天堂区| 欧美精品九九99久久| 欧美日韩国产综合在线| 免费视频一区| 国产一区二区三区在线观看精品| 亚洲三级视频在线观看| 国产一区欧美日韩| 欧美暴力喷水在线| 国产一区二区三区精品欧美日韩一区二区三区| 久久一二三区| 久久久国产一区二区| 你懂的亚洲视频| 亚洲一区二区三区精品在线| 久久久91精品国产一区二区精品| 国产精品v欧美精品v日韩精品| 欧美三级午夜理伦三级中文幕| 亚洲欧洲综合另类在线| 久久国产精品亚洲va麻豆| 国产精品成人免费精品自在线观看| 国产在线精品二区| 欧美日韩在线视频一区| 欧美日韩精品一区二区在线播放| 欧美高清不卡| 在线中文字幕不卡| 国产麻豆精品久久一二三| 欧美国产日韩一区二区在线观看| 亚洲韩国日本中文字幕| 欧美色视频日本高清在线观看| 欧美图区在线视频| 一区免费视频| 国外成人免费视频| 亚洲国产成人精品久久久国产成人一区| 亚洲一区影音先锋| 亚洲另类视频| 欧美aaaaaaaa牛牛影院| 欧美日本高清一区| 亚洲人被黑人高潮完整版| 亚洲视频导航| 国模精品娜娜一二三区| 久久久人成影片一区二区三区| 精品成人a区在线观看| 亚洲精品国产精品乱码不99| 国产精品久久影院| 久久亚洲春色中文字幕久久久| 国产日韩欧美在线视频观看| 亚洲国产综合91精品麻豆| 欧美成人三级在线| 欧美国产激情二区三区| 久久精品盗摄| 欧美一级二区| 国产精品欧美经典| 99视频一区二区| 久久精品中文字幕一区| 国内在线观看一区二区三区| 极品尤物一区二区三区| 欧美日韩1区2区| 欧美视频在线观看一区二区| 国产亚洲一区精品| 亚洲女性裸体视频| 欧美日韩第一页| 国产精品麻豆成人av电影艾秋| 久久国产精彩视频| 欧美综合二区| 欧美啪啪一区| 国产欧美日本| 国内欧美视频一区二区| 欧美日韩一区二区在线播放| 欧美性猛交一区二区三区精品| 亚洲一区二区精品在线观看| 一区二区三区自拍| 欧美一级一区| 欧美高清视频在线播放| 欧美成人精品在线观看| 女生裸体视频一区二区三区| 亚洲理伦电影| 这里只有精品丝袜| 国产精品永久免费观看| 午夜影视日本亚洲欧洲精品| 欧美综合国产精品久久丁香| 欧美人与禽性xxxxx杂性| 午夜精品久久久久久久男人的天堂| 亚洲免费一在线| 国产美女一区二区| 亚洲桃花岛网站|