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

前言 php

      Adobe的FMS(Flash Media Server)是很好用。但對應着分級受權的是money和有限功能開放。商業的東西既然用不起,也阻礙了咱們的技術進步,那就只能求助於開源社區了。而crtmpserver就是FMS的替代者之一linux


1. crtmpserver簡介bootstrap

    crtmpserver的功能總來講:服務器

  • 支持推送給它的rtmp流的接收與播放器請求的分發;網絡

  • rtmp流媒體服務器樹狀網絡集羣的構建;app

  • 支持iPhone,Android。tcp

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

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

  • 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. #./config --prefix=/usr/local/ssl shared

  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.   {

  5.     ip="0.0.0.0",

  6.     port=80,

  7.     protocol="inboundRtmp"

  8.    },

  9.    {

  10.      ip="0.0.0.0",

  11.      port=1935,

  12.      protocol="inboundRtmp"

  13.    },

  14.    ...

  15.   }

  16. }

  重啓服務就能夠看到端口生效,就能夠從「80「接收rtmp流啦。




若是須要把crtmpserver安裝到其餘目錄下,須要修改編譯的過程

cmake -DCMAKE_BUILD_TYPE=Release -DCRTMPSERVER_INSTALL_PREFIX=<install-dir>
make
make install

我把它安裝到/usr/local/rtmp下,下面有4個子目錄etc,lib,man,sbin

安裝過程不完善,須要到源碼的/builders/cmake/applications/appselector目錄下把證書拷走
cp server.key server.crt /usr/local/rtmp/lib/crtmpserver/applications/appselector/

 

修改配置文件
cd /usr/local/rtmp/etc
cp crtmpserver.lua.sample crtmpserver.lua
vi crtmpserver.lua
把applications中的rootDirectory改爲絕對路徑
rootDirectory="/usr/local/rtmp/lib/crtmpserver/applications"

 

啓動

相關文章
相關標籤/搜索