創建一個實現錄像的客戶端(保存流媒體)

1、

這個客戶端實現的功能應該是
1、可以將流媒體直接保存爲本地的媒體文件
2、可以將流媒體服務器上的媒體文件保存到本地的媒體文件

2、playCommon

在live555的源程序中,有一個用於測試的程序playCommon.c,該程序就實現了上述的兩個功能
live555中除了實現RESPServer類以外,還有RTSPClient類,用來當做媒體流接收的客戶端(一個控制檯客戶端沒辦法播放視頻,但是可以把視頻保存下來)

3、

暫時不去研究源代碼是怎麼實現的,只是看下主函數是怎麼弄得
1、先傳參傳你希望保存的媒體的URL地址
2、和創建服務器一樣,我們需要創建一個RTSPClient類

ourClient = createClient(*env, streamURL, verbosityLevel, progName);

其內部的實現還是比較麻煩的,需要繼續調用很多函數,要創建錄像文件,同樣和播放視頻一樣也要創建FileLink類來接收文件,FileLink類下根據不同的視頻編碼格式寫了很多不同的子類。
FileSink通過MediaSubsession的FramedSource獲取數據,然後保存到文件中。
同時可以設置錄像的保存時間等等…

4、測試看看

IP(.108)地址是我所在實習公司測試部的一臺大華攝像機,偷偷用來測試一下
main函數的傳入參數
-u後需要給出登錄用戶和密碼
在這裏插入圖片描述

啓動程序,我們看到程序提醒我們我們設置的緩衝區似乎不太夠用,看看這樣保存的視頻是不是有問題呢?
在這裏插入圖片描述
注意,保存下來的視頻直接用播放器播放是大概率播放不了的,我們用格式工廠進行轉格式後播放看看效果
在這裏插入圖片描述
看到保存下來的視頻轉格式後是可以播放的,不過確實畫面出了問題,我們將緩衝區改大後再試一次
在這裏插入圖片描述
我們看到程序沒有再提示緩衝區問題
在這裏插入圖片描述
轉格式後查看視頻,確實完整了
在這裏插入圖片描述

5、live555

不知道live555現在在大型的流媒體處理中是否還有在運用,但是其功能實現毫無疑問是可以的,性能方面聽說源碼是採取單線程的,所以性能還有很大的提高空間,至於處理併發,源碼採用的是select模型

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