簡單的RTSP伺服器和手機推流伺服器
阿新 • • 發佈:2019-02-12
本文相關程式碼位於:點選開啟連結
整個伺服器基於我自己封裝的跨平臺網路中介軟體k_util開發,包含手機推流伺服器和RTSP伺服器。實現的功能就是,手機採集音視訊流推到伺服器,再通過RTSP客戶端向伺服器請求觀看手機採集流。
推流伺服器與我之前開發的Android採集音視訊流客戶端配合,它們之間互動用的是我定的私有協議。但信令部分還是用的Json格式,Json解析通過整合JsonCpp程式碼實現。音視訊流都通過RTP打包,這樣後面的RTSP伺服器只需要透傳RTP包即可。視訊為H264裸流,音訊為AAC,採用RFC3640打包方式。裡面還打包括H264裸流寫檔案的測試程式碼,主要是在程式碼除錯階段看手機端視訊編碼打包是否正確的。H264拼幀的程式碼是參考FFmpeg的相關程式碼。還包括AAC寫檔案的測試程式碼,這個只有AAC編碼後打上ADTS頭才有效,也是用於除錯階段看音訊編碼是否正確的。在確認程式碼正確後,AAC碼流就沒有打ADTS頭了,而是打上了AU Header,這樣AAC寫檔案的測試程式碼就沒用了。
RTSP伺服器實現得比較簡單,只支援RTP Over TCP方式。協議解析都是我自己實現的,沒有參考第三方程式碼。Describe返回SDP資訊在網上找了一個樣例再自己修改的,AAC的fmtp資訊的構造參考了網上的程式碼。RTSP伺服器通過Vlc,ffplay和我自己寫的RTSP播放器都測試通過。
Android採集音視訊流客戶端程式碼在這裡:點選開啟連結
我自己寫的RTSP播放器程式碼在這裡:點選開啟連結