Python java nginx google mysql Android php 程序员 Ubuntu 编程 Windows 云计算 wordpress 微软 linux shell Firefox 开源 apache centos

crtmpserver流媒體服務器的介紹與搭建

前言

      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/)。
#tar -zxvf cmake-2.8.7.tar.gz
#cd cmake-2.8.7
#./bootstrap
#gmake
#make install
2.2 openssl的安裝
    下載openssl-0.9.8版(crtmpserver暫只支持這個版本,我用的是openssl-0.9.8t。http://www.openssl.org/)
#tar -zxvf openssl-0.9.8t.tar.gz
#cd openssl-0.9.8t
#./Configure
#make .
#make install
2.3 crtmpserver的編譯與安裝
#svn co --username anonymous --password "" https://svn.rtmpd.com/crtmpserver/branches/1.0 crtmpserver
#cd crtmpserver
#sh ./cleanup.sh
#cd builders/cmake
#cmake .
#make
#./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"的第一層大括號的代碼是要添加的)
default=true, 
acceptors = 

  { 
    ip="0.0.0.0", 
    port=80, 
    protocol="inboundRtmp" 
   }, 
   { 
     ip="0.0.0.0", 
     port=1935, 
     protocol="inboundRtmp" 
   },
   ...
  }
}
  重啟服務就可以看到端口生效,就可以從“80“接收rtmp流啦。

延伸阅读

    评论