Live555學習

       過段時間又要上新項目,在板子上加個RTSP服務器,支持實時視頻流播放。這兩天一直在看Live555的源碼,默認只能編譯成靜態庫,自己修改了下搞成了動態庫。雖然花了點時間,但是對了解Live555的結構是有好處的,編譯一通不過就知道哪些模塊相互關聯了,呵呵。

      關於Live555的分析,有前輩已經寫了文章了,地址是http://blog.csdn.net/nkmnkm/article/category/1066093/1。有用的是最後幾篇。想要改造Live555就只要改寫source就行了。live555不支持多線程,所以寫source的時候不要搞多線程,絕對會掛。

      我們面臨的項目是從板子上取實時流,但是live555內實現的服務器都是文件服務器,所以有必要增加源碼,主要是增加一個從設備讀取數據的source,以及一個mediaSubSession.今天聽同事說,在live555源碼中有從音頻設備獲取數據的source的示例,想來可以借鑑一番。

      最複雜的是TaskScheduler+虛函數+回調的數據和請求處理流程,這裏還沒有探索清楚,暫且記下,還需繼續深入:)

     ####新增加####

     這兩天看了一下wis-streamer,是一個從攝像頭獲取音頻和視頻實時streamer的程序,也是在Live555上面。不過程序裏是軟編碼之後作爲mjpeg發出來的,說白了就是連續的jpeg圖像。好在我們的項目可以硬編碼。攝像頭的驅動比較重要,有了驅動,設備在live555下面就可以像文件一樣open,close,我們要做的修改也就只是需要更改下驅動名稱以及修改下獲取數據的命令。

     昨天和今天都看了一下幾個http服務器的代碼,發現大部分工作都集中在跨平臺的移植上,而且也都做得比較完整了。所以以後要做跨平臺的工作的話,還是先參考一下現有的工作,像apache裏的apr庫,還有nginx。對網絡,IO,內存映射,線程都做了跨平臺封裝,以後用C語言代碼,能用則用。感覺現在覈心程序開發工作應該是兩類,一類是搞算法,搞核心模塊的,另一類是搞設計,搞架構的,整合現有資源,生產出一個叫軟件的產品。在目前國內的環境下,大部分程序猿無緣第一類工作,但是第二類工作,還是可以做好的,而且我個人覺得,產品是比技術更重要的!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章