一年多以前拿Nginx和Nginx的RTMP模块搭建过一个RTMP服务器。然而一年中沧海桑田,发生了很多事情...好吧,其实是后来因为嫌自己以前自己写的网站界面太丑了,毕竟美化前端是一件相当花心思的事情,而我又是一个懒人...所有后来换用了WordPress,所以就把服务器给格了。
但是随着插件越装越多,网站的访问速度越来越慢。一开始还可以忍受,但是越到后来看着那个圈圈转的时间越来越长就越来越心焦。还有一个原因是我想根据自己的需要实现一些功能,不自己写插件的话效果不好,写插件的话又要花更多的心思和精力。所以我决定让WordPress也成为历史,然后重新回到自己创造的路线上来。在待机了将近一年以后花了一个礼拜把网站的框架基本搭好,美工嘛凑或了,能看就好...
这次重新搭建RTMP服务器的时候考虑了好几个RTMP Server软件,其实主要就是Nginx,ffserver和c++ rtmp server(crtmpserver)。考虑到Nginx是可以替代Apache的优秀的服务器软件,而我已经用Apache搭好了网站,所以我对这两个软件共存在同一台电脑上感觉很不舒服,所以这次首先把Nginx放在了waitinglist上。因为编译安装了ffmpeg,考虑到尽量少的安装程序,ffserver成了这次第一个尝试的RTMP软件。但是花了一整天实践下来发现要想用ffserver实现功能好像还要再花更多的时间,所以今天晚上果断尝试crtmpserver。经过个把小时后成功在网页上看到了rtmp的视频流。下面把过程记录下来备忘。
首先介绍一下crtmpserver是个什么。crtmpserver的全程是C++ RTMP Server,官方主页是http://www.rtmpd.com/。crtmpserver官方的定义如下: crtmpserver it is a high performance streaming server able to stream (live or recorded) in the following technologies:
./run_flvplayback.sh就可以直接运行程序。默认的配置文件可以不需要修改。命令执行后如果看到了屏幕上显示Go!Go!Go!就表示你可以开始往crtmpserver里推送视频音频流了。
我使用ffmpeg来边转码边推送流,执行的命令如下:
# Play a local video file ffmpeg -re -i /path/video.mp4 -acodec copy -vcodec copy -f flv rtmp://localhost/live/live # Stream video & Audio from camera and microphone ffmpeg -r 25 -s 720x546 -f v4l2 -i /dev/video0 -f alsa -ac 2 -ar 44100 -i hw:0 -f flv rtmp://localhost/live/live
网页播放器采用了jw Player,非商业用途的话简单注册一下就可以下载下来。jwplayer的file选项写成
file: "rtmp://www.domain.com/flvplayback/test"就可以实现流的播放。