淺析live555媒體庫之工作流程介紹

來源:互聯網
上載者:User

標籤:

     live555項目的原始碼包括四個基本的庫,各種測試代碼以及Media Server。

工作模組

           四個基本的庫分別是: UsageEnvironment  TaskScheduler, groupsock, liveMedia和BasicUsageEnvironment。

    官網英文的基本介紹如下:

   

   雖是英文的,但是難度不大,能看懂大致意思。這裡多說一句,程式員還是要接觸並學習英文,畢竟好的技術都是國外引進的。簡單說下我的理解

UsageEnvironment  

        該類庫是對系統內容的抽象,包括UsageEnvironment 和TaskScheduler。UsageEnvironment  主要用於訊息的輸入輸出和使用者功能,TaskScheduler實現事件的非同步處理,事件處理函數的註冊等。它通過維護一個非同步讀取源實現如訊息到達等事件的處理,通過使用DelayQueue實現其他註冊函數的延時調度。另外,還有一個HashTable類定義了一個通用的hash表,其它代碼要用 到這個表。我們在使用時可以自訂該類的抽象類別的子類,就可以再特定的環境下運行如嵌入式或者GUI等。不需要進行太多的修改。

groupsock

        該類是對網路介面的封裝,用於收發資料包。groupsock主要是面向多播資料的收發,它也同時支援單播資料的接收。

liveMedia

         該類是live555的核心模組,各種媒體的封裝和資料的發送。其中基類為Medium,其他的類都派生自該類。如MediaSession,RTP會話類,一個 session又可以包含多個subsession。還有比較重要的兩個衍生類別Source和Sink,Source抽象了需要發送的資料,Sink則抽象資料的寄件者,資料的流動可以經過多個source和sink,兩者又通過session聯絡在一起。我們在開發的過程中,可以通過繼承這些類,實現自己需要的相關功能。

BasicUsageEnvironment

         該類主要針對簡單控制台的應用程式,利用select實現事件的擷取和處理。


工作流程

       live555首先會建立一個RTSP服務(具體的實現可以參看mediaServer裡的服務)。在服務建立過程中,會先調用setUpOurSocket建立tcp的串連,並監聽對應傳入的port,用於等待client請求的rtsp協議的互動,然後會把串連處理控制代碼已經socket控制代碼都傳入TaskScheduler當中,等待事件觸發。

簡單並查看網上的一些網友的總結,畫了一個UML圖分享一下:


 live555中有幾個比較重要的類,在二次開發使用live555過程中,需要繼承其中比較重要的幾個類,如mediaSubsession,FramedSource等。在下手之前,則需要先理清楚其類的繼承關係,我依照官網中的類圖,把幾個比較重要的類分離出來來,畫出UML如下:


大致幾個重要的類圖關係就是這樣的一個流程。後面文章繼續分享如何繼承自己的子類來實現的檔案讀取和即時資料流的播放等功能。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

淺析live555媒體庫之工作流程介紹

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.