前言 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/)。
#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
#./config --prefix=/usr/local/ssl shared
#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流啦。
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"
啓動