MonaServer 是Cumulus這個項目衍生出來的新項目,前身Cumulus在github中注明了Cumulus已經比較老,希望使用最新的RTMFP的server的話可以嘗試MonaServer,跟着github中的引導,就到了MonaServer的項目目錄中,看了看Readme之類的說明文檔後,發現MonaServer所支援的功能還是比較多的:
點選(此處)折疊或打開
- 1. RTMP 常見的流媒體直播,實時性相對來說還可以
- 2. RTMFP 常見的p2p的流媒體直播,實時性相對來說還可以
- 3. RTMPE 加密RTMP資料
- 4. WebSocket HTML5最近比較火的基于HTTP的Socket通信
- 5. HTTP HTTP傳輸的FLV直播,就是HDL或者HLV
MonaServer的編譯要求相對來說比較簡單,環境需求也比較簡單,依賴包:
- 1. SSL庫
- 2. LUA庫
依賴環境:
- GCC 4.8.x +
CentOS Linux 6.5 預設的編譯器是4.4.7 編譯的話會提示libstdc++支援的錯誤,是以需要更新GCC編譯器。
我是用的源碼編譯的GCC,是以,可以再http:/gcc.gnu.org中找到對應的源碼包,在gcc對應下載下傳目錄的裡面可以找到gmp、mpfr、mpc的對應的檔案,編譯安裝即可;
統一編譯方法:
- ./configure –prefix=/usr –libdir=/usr/lib64;make;make install
接下來編譯gcc
- mkdir build;../configure;make;make install
編譯安裝完GCC之後,在MonaServer目錄中直接編譯即可:
- make;make install
編譯完成之後,會在MonaServer目錄下面看到MonaServer子目錄,裡面生成了一個MonaServer應用程式,
- [root@www MonaServer]# pwd
- /root/MonaServer/MonaServer
- [root@www MonaServer]# ls
- logs Makefile MonaServer MonaServer.vcxproj MonaServer.vcxproj.filters sources tmp www
- [root@www MonaServer]#
以及www目錄,
需要注意的是,如果想使用rtmp,需要先在www目錄下建立一個目錄,以確定可以正常推流,如果想省略這一步,可以修改代碼來完成靈活的支援。
- [root@www MonaServer]# mkdir www/myapp
- [root@www MonaServer]# ls www
- myapp
通過使用推流工具來進行測試,可以使用OBS或者FMLE:
然後點選Connect,及可看到MonaServer輸出的log:
- [root@www MonaServer]# ./MonaServer
- Mona/Protocols.h[68] RTMFP server started on 0.0.0.0:1935 (UDP)
- Mona/Protocols.h[68] RTMP server started on 0.0.0.0:1935 (TCP)
- Mona/Protocols.h[68] HTTP server started on 0.0.0.0:80 (TCP)
- Mona/Protocols.h[68] RTSP server started on 0.0.0.0:554 (TCP)
- sources/Server.cpp[137] 1 clients
可以看到log中多出來一條sources/Server.cpp[137] 1 clients
這個時候點Start,可以看到輸出的log:
- sources/FlashMainStream.cpp[162] Method 'releaseStream' not found on application /myapp
- sources/FlashMainStream.cpp[162] Method 'FCPublish' not found on application /myapp
- sources/Publication.cpp[97] Publication gosun started
- sources/Publication.cpp[256] Write gosun publication properties
- sources/FlashStream.cpp[195] Message 'onFI' unknown on stream 1
這時說明流已經推至MonaServer了,可以通過播放器進行播放确認:
當播放器連接配接上來時,會看到log如下:
- sources/FlashStream.cpp[209] setBufferTime 1000ms on stream 0
- sources/Listener.cpp[211] Properties sent to one listener of gosun publicaition
- sources/FlashStream.cpp[209] setBufferTime 1000ms on stream 1
- sources/Server.cpp[137] 2 clients
- sources/Listener.cpp[164] H264 codec infos sent to one listener of gosun publication
RTMP的播放功能是支援了,那麼RTMP轉HTTP的功能如何,同時也可以驗證:
HTTP的功能同樣可以,看一下server部分的log:
- sources/Writer.cpp[57] writeMedia method not supported by this protocol for 03 type
從此RTMP與HTTP的直播輸出功能已經驗證完畢,這是最基本的功能
阿虎追女仔