基於live555的ApsaraVideo for Live DM368IPNC RTSP分析

來源:互聯網
上載者:User

文章來自:http://blog.csdn.net/ghostyu/article/details/7485537

本文是 我對TI DM368IPNC RTSP直播部分的程式碼分析。

appro IPNC視頻流直播部分用的RTSP,基於live555,通過改寫wis-streamer實現的,在live555官網上有wis-streamer的代碼下載,appro將其修改,在framedsource中加入了GetAVData介面,這樣ipnc就可以直播了。

感慨:C++ 真的太好用了

現在懶了,文字部分就直接複製出來,來源文件使用的是excel,

文檔:http://www.kuaipan.cn/file/id_48923272389066806.html

基於live555的ApsaraVideo for Live DM368IPNC RTSP分析

一、描述


appro利用live555實現了三種視頻流以及一種音頻流的直播
1、MJPEG Video
2、H264 Video
3、MPEG4 Video
4、PCM Audio

live555是一個開源的RTSP C++類庫,預設實現音視頻檔案的點播,但是可以通過繼承相關類,重寫相關方法實現ApsaraVideo for Live

live555提供的實現直播的通用步驟是:

來自之前的《live555分析與開發.xlsx》

appro也是按照此種方法實現

二、Appro的添加的live555源檔案

之所以檔案複雜,是由於實現了多種音視頻流,如果只留其一,源檔案將非常簡潔

是appro源碼的UML類圖

APPROInput類 類似於設計模式中的簡單原廠模式,用於建立具體的FramedSource,對於WISServerMediaSubsession類來說,處理FramedSource的介面是相同的,
但是對於FramedSource來說,VideoSource與AudioSource的具體的幀擷取是不同的,
這樣,就需要利用APPROInput來分別建立VideoSource和AudioSource。

類APPROInput的videoSource()方法 返回VideoOpenFileSource類的執行個體
類APPROInput的audioSource()方法 返回AudioOpenFileSource類的執行個體

三、重要的FramedSource

FramedSource類的doGetNextFrame()方法用於獲得音視頻的幀資料,子類需要實現這個方法

OpenFileSource中的incomingDataHandler1,調用了虛函數readFromFile,這個函數與底層相關,
所有由OpenFileSource的子類 VideoOpenFIleSource和AudioOpenFileSource類實現

在appro的ipnc中,不管是視頻還是音頻資料,均是通過GetAVData()函數來獲得,
所以VideoOpenFileSource類和AudioOpenFIleSource類的readFromFile方法中封裝了GetAVData()這個函數。

具體獲得哪種類型的資料是由類OpenFileSource中的屬性APPROInput &fInput來傳遞的

在main函數中有關FramedSource操作的所有代碼如,以H264為例
啟示:在移植appro的live555到高清相機中,我認為最好的方法就是按照IPNC的GetAVData()函數結構,
封裝高清相機的GetAVData()函數,高層的live555RTSP部分可不做任何改動

四、RTSP直播 main主程式

這與普通的live555 rtsp service結構並無太多區別,只是由於要傳輸的視頻類型較多,所以多了很多if else,這部分比較簡單,不作分析。

appro也是按照此種方法實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.