最近在弄android推送實時視頻流到darwin流媒體服務器,現(xiàn)在的思路是在android端實現(xiàn)rtsp client,推送實時視頻流到darwin,并在movies文件夾下生成sdp文件,vlc通過請求rtsp://darwin流媒體服務器ip:554/test.sdp的方式實現(xiàn)實時播放。
大致有3種思路:
第1種:移植live555到android上,借助live555里的代碼:從本地讀取mpg文件推送到darwin,改成從實時流推送到darwin服務器,大致思路是派生一個h264videoSource,從android錄制獲取流,通過pipe管道發(fā)送流,把該流推送到darwin。網(wǎng)上有個https://github.com/boltonli/ohbee/tree/master/android/streamer這個例子,但自己沒測試通過,可以借鑒其實現(xiàn)思路。live555個人建議移植新版,可以參考文章 http://blog.csdn.net/baby313/article/details/7289489
第2種:網(wǎng)上有個rtspcamera的開源項目,源代碼地址 :https://github.com/spex66/RTSP-Camera-for-Android ,可以學學該代碼。個人推薦的是 由代碼引申的這個帖子 https://github.com/spex66/RTSP-Camera-for-Android/issues/1 ,里面有人成功過實現(xiàn)把h264流推送到darwin流媒體服務器。個人嘗試發(fā)現(xiàn),這個代碼也存在一些問題,表現(xiàn)在sdp文件生成的格式不對,通過修改代碼SDP文件格式的形式,能出現(xiàn)效果,但延時很嚴重。
第3種:就是我以前研究的spydroid開源項目了,項目主頁為http://code.google.com/p/spydroid-ipcamera/,可以在此https://github.com/fyhertz/spydroid-ipcamera下載最新源代碼。我推薦的是這篇帖子http://code.google.com/p/spydroid-ipcamera/issues/detail?id=49&q=dss ,據(jù)說可以把h264實時流推送到darwin,但自己測試沒通過。
其實第2種和第3種帖子的作者都是同一個,思路很好,可以供自己借鑒學習。
這段時間我才發(fā)現(xiàn),使用rtsp協(xié)議實現(xiàn)音視頻多路上傳多路觀看也有不錯的解決方案,可能是我當初思維短路了,一直糾結服務器端口怎么處理的問題上,現(xiàn)在想想這不是問題。android端:實現(xiàn)rtsp client,以sdp文件名為標識,區(qū)分不同的流,把該流推送到darwin流媒體服務器,darwin流媒體服務器實現(xiàn)轉播,并把接收的流通過ffmpeg轉存為文件,其實可以參考vlc保存串流為文件的做法,vlc就可以通過請求darwin流媒體服務器實現(xiàn)多路觀看的效果。
這些只是自己的一些初步思路,能不能行得通還待驗證。
后記:在android推送實時視頻流到darwin流媒體服務器 的過程中,需要解決防火墻的問題,畢竟在企業(yè)應用中,防火墻肯定說開啟的。越過防火墻,按照官方的說法,在編譯darwin源代碼的時候添加代理服務器參數(shù),并設置代理服務器。這個只是官方的說法,能不能真正解決沒有嘗試過。