原创 live555學習筆記8-RTSPClient分析

八 RTSPClient分析 有RTSPServer,當然就要有RTSPClient。 如果按照Server端的架構,想一下Client端各部分的組成可能是這樣: 因爲要連接RTSP server,所以RTSPClient要有TCP so

原创 live555學習筆記5-RTSP服務運作

五 RTSP服務運作 基礎基本搞明白了,那麼RTSP,RTP等這些協議又是如何利用這些基礎機制運作的呢? 首先來看RTSP. RTSP首先需建立TCP偵聽socket。可見於此函數: DynamicRTSPServer* DynamicR

原创 live555學習筆記6-建立RTP會話

六 建立RTP會話 首先更正一個概念: ServerMediaSession原先說代表一個流,其實是不準確的。它代表的是server端的一個媒體的名字,而說ServerMediaSubsession代表一個Track是準確的。以後流指的是

原创 live555學習筆記13-RTPInterface詳解

十三:RTPInterface詳解 好幾天沒寫blog了。看源碼真累啊,還要把理解的寫到紙上,還要組織混亂的思想,令人頭痛,所以這需要激情。不過,今

原创 live555學習筆記3-消息循環

三 消息循環 看服端的主體:live555MediaServer.cpp中的main()函數,可見其創建一個RTSPServer類實例後,即進入一個函數env->taskScheduler().doEventLoop()中,看名字很明顯是

原创 live555學習筆記9-h264 RTP傳輸詳解(1)

九 h264 RTP傳輸詳解(1) 前幾章對Server端的介紹中有個比較重要的問題沒有仔細探究:如何打開文件並獲得其SDP信息。我們就從這裏入手吧。 當RTSPServer收到對某個媒體的DESCRIBE請求時,它會找到對應的Serv

原创 live555學習筆記7-RTP打包與發送

七 RTP打包與發送 rtp傳送開始於函數:MediaSink::startPlaying()。想想也有道理,應是sink跟source要數據,所以從sink上調用startplaying(嘿嘿,相當於directshow的拉模式)。 看

原创 live555學習筆記4-計劃任務(TaskScheduler)深入探討

四 計劃任務(TaskScheduler)深入探討我們且把三種任務命名爲:socket handler,event handler,delay ta

原创 live555學習筆記2-基礎類

二 基礎類 講幾個重要的基礎類: BasicUsageEnvironment和UsageEnvironment中的類都是用於整個系統的基礎功能類.比如UsageEnvironment代表了整個系統運行的環境,它提供了錯誤記錄和錯誤報告的功

原创 live555學習筆記10-h264 RTP傳輸詳解(2)

十 h264 RTP傳輸詳解(2) 上一章並沒有把打開文件分析文件的代碼找到,因爲發現它隱藏得比較深,而且H264的Source又有多個,形成了連環計。所以此章中就將文件處理與H264的Source們並在一起分析吧。 從哪裏開始呢?從s

原创 live555學習筆記16-幾個重要對象的生命期

十六 幾個重要對象的生命期 live555中很多類,類與類之間的關係複雜,從屬關係不明顯,層次上看起來也有些亂.所以源代碼讀起來比較困難,對於一些對象生命的來龍去脈也很難釐清. 但這並不能說明live555的架構不好,最適合的纔是最好的,

原创 live555學習筆記11-h264 RTP傳輸詳解(3)

十一  h264 RTP傳輸詳解(3)書接上回:H264FUAFragmenter又對數據做了什麼呢? void H264FUAFragmenter

原创 Live555學習筆記14-live555多線程論

十四:live555多線程論 江湖傳聞:live555如果不改爲多線程,在多核心機器上效率會降低. 雖然我沒做過測試,但比較相信此傳聞的真實性 . 所以在我試論述一下live555如何對多核進行支持,其實就是改爲多線程,嘿嘿. 先看此文:

原创 live555學習筆記15-RTCPInstance類小結

十五:RTCPInstance類小結 RTCPInstance是對rtcp通信的封裝.RTCP主要是功能是統計包的收發爲流量控制提供依據.RTCPInstance統計數據的取得僅依賴於RTPSink的一些函數(因爲RTPSink發送RT

原创 live555學習筆記12-h264 rtp包的時間戳

十二 h264 rtp包的時間戳 這次我們一起來分析一下live555中是怎樣爲rtp包打時間戳的.就以h264爲例吧. void H264VideoRTPSink::doSpecialFrameHandling(unsigned /*f