1. 程式人生 > >crtmpserver流媒體伺服器的介紹與搭建 (轉載)

crtmpserver流媒體伺服器的介紹與搭建 (轉載)

原文地址:http://www.cnblogs.com/lidabo/p/3906061.html

前言

      Adobe的FMS(Flash Media Server)是很好用。但對應著分級授權的是money和有限功能開放。商業的東西既然用不起,也阻礙了我們的技術進步,那就只能求助於開源社群了。而crtmpserver就是FMS的替代者之一   1. crtmpserver簡介     crtmpserver的功能總來說:
  • 支援推送給它的rtmp流的接收與播放器請求的分發;
  • rtmp流媒體伺服器樹狀網路叢集的構建;
  • 支援iPhone,Android。

 

 

    下面是官網首頁的功能與應用介紹(http://www.rtmpd.com/)

    crtmpserver it is a high performance streaming server able to stream (live or recorded) in the following technologies:

  • To and from Flash (RTMP,RTMPE, RTMPS, RTMPT, RTMPTE)
  • To and from embedded devices: iPhone, Android
  • From surveillance cameras
  • IP-TV using MPEG-TS and RTSP/RTCP/RTP protocols

    Also, crtmpserver can be used as a high performance rendes-vous server. For example, it enables you to do:

  • Audio/Video conferencing
  • Online gaming
  • Online collaboration
  • Simple/complex chat applications
2. crtmpserver流媒體伺服器的搭建(linux平臺)          它的編譯與build環境要求先安裝一些linux工具 2.1 cmake的安裝     下載最新的cmake( http://www.cmake.org/)。
  1. #tar -zxvf cmake-2.8.7.tar.gz
  2. #cd cmake-2.8.7
  3. #./bootstrap
  4. #gmake
  5. #make install
2.2 openssl的安裝     下載openssl-0.9.8版(crtmpserver暫只支援這個版本,我用的是openssl-0.9.8t。 http://www.openssl.org/
  1. #tar -zxvf openssl-0.9.8t.tar.gz
  2. #cd openssl-0.9.8t
  3. #./Configure
  4. #make .
  5. #make install
2.3 crtmpserver的編譯與安裝
  1. #svn co --username anonymous --password "" https://svn.rtmpd.com/crtmpserver/branches/1.0 crtmpserver
  2. #cd crtmpserver
  3. #sh ./cleanup.sh
  4. #cd builders/cmake
  5. #cmake .
  6. #make
  7. #./crtmpserver/crtmpserver ./crtmpserver/crtmpserver.lua
   NOTE:    A. 如果make成功,最後一行命令是以“./crtmpserver/crtmpserver.lua”為配置指令碼啟動“crtmpserver"服務。    B. 最後一行命令的目錄是在"builders/cmake"下。   2.4 測試流的接收與分發     最後一行命令執行後,可以看到預設指令碼配置下啟動的服務和對應的埠。如“RTMP”協議對應的是“1935”埠。     如下所示: --- --------------- ----- ------------------------- ------------------------- |tcp|       0.0.0.0 |1935|       inboundRtmp   |            appselector| --- --------------- ----- ------------------------- ------------------------- 推送:          可以使用Adobe 的FMLE(Flash Media Live Encoder)給這個伺服器推送rtmp流。成功後會有相應的log資訊提示。      也可以使用ffmpeg給這個伺服器推送rtmp流。成功後會有相應的log資訊提示。但是請注意,ffmpeg推送rtmp流給它一定要使用"librtmp"才能成功。使用ffmpeg自帶的rtmp推送會導致失敗。原因應該是ffmpeg自帶的rtmp程式不完整,解析不了第二次握手時服務傳送來的包資訊。 觀看:      推送成功後,使用者端就可以用flash播放器或能播放rtmp流的播放器(如 http://flv-player.us/index_mdv.php)看你推送的節目啦。     也可以使用像rtmpdump的軟體將rtmp流錄成檔案。    3. 簡單的配置修改     有時伺服器會對某些埠做限制,這時就需要自己指定埠,如"80"埠。這個需求可以通過修改它的配置指令碼“crtmpserver/crtmpserver.lua”來實現。      如要新增“80”埠的"rtmp"服務,可以給“crtmpserver/crtmpserver.lua”新增如下程式碼。(包含“port=80"的第一層大括號的程式碼是要新增的)
  1. default=true, 
  2. acceptors = 
  3.   { 
  4.     ip="0.0.0.0", 
  5.     port=80, 
  6.     protocol="inboundRtmp" 
  7.    }, 
  8.    { 
  9.      ip="0.0.0.0", 
  10.      port=1935, 
  11.      protocol="inboundRtmp" 
  12.    },
  13.    ...
  14.   }
  15. }
  重啟服務就可以看到埠生效,就可以從“80“接收rtmp流啦。