本篇博客继续在上篇《在Ubuntu 12.04 64bit上搭建Crtmpserver视频点播服务》
http://blog.csdn.net/tao_627/article/details/18909075
的基础上,搭建基于开源框架的视频直播服务,仍然使用root用户操作。基本框架图示如下:
下面分为几个步骤说明如下:
1.实时转码服务器构建
这里为了充分挖掘开源项目的优势,我使用ffmpeg来进行实时转码。为此,在Ubuntu 12.04上安装最新的ffmpeg静态生成包。参见下面的链接
http://ffmpeg.gusari.org/static/64bit/
下载下来最新的源码包后,解压到系统目录中
cd /usr/local/src
wget http://ffmpeg.gusari.org/static/64bit/ffmpeg.static.64bit.2014-02-05.tar.gz
tar zxvf ffmpeg.static.64bit.2014-02-05.tar.gz -C /usr/local/bin
这样将解压出的两个可执行文件ffmpeg和ffprobe复制到系统的/usr/local/bin下面,以后我们可以直接在系统的任何路径使用ffmpeg命令就可以了,我们先看看
将要提供直播服务的视频文件《星月神话》xinyueshenhua.flv存放到Crtmpserver服务器的指定目录/home/taoyx/视频/下面,我们这里为了简单,只使用flv格式的视频文件来进行实时流化,提供直播服务,使用下面的命令实时转码
ffmpeg -re -i "/home/taoyx/视频/xinyueshenghua.flv" -vcodec copy -acodec copy -f flv rtmp://192.168.0.106/live/cuoai
相关说明:
上面的命令将一个本地文件流化为一个名为cuoai.flv(.flv可以省略)的实时流,通过rtmp协议播放。
这里采用ffmpeg而非Flash Media Live Encoder等其它工具,是希望尽可能采用开源解决方案,同时不受其它商业因素制约.另外一点是,ffmpeg本身功能非常强大,它值得我们去投入精力去挖掘它的自身强大功能.
这里采用静态库安装的方式,是为了获取最新版的ffmpeg代码,同时不想从源码编译,因为各种库的依赖关系比较复杂,而且ffmpeg目前不是我们研究的重点.为了尽快达到我们的目的,我选择最快的方式,就是采用静态库的方式.目前ffmpeg在Ubuntu上的ppa提供的版本比较旧,只是ffmpeg1.0,不是最新的ffmpeg2.1,不符合我的要求.
2.使用新版的JWPlayer(官网http://www.jwplayer.com/)来提供网页端的flash播放器
我们从如下网址
https://account.jwplayer.com/#/account
下载最新版的JWPlayer源码,注意初次下载时,你需要先注册一个账号。然后下载self-hosted player版本,同时,你会得到一个Self-Hosted Player License Key,对免费版来说,它不是必须的,但是它可以给你的账户定期反馈使用JWPlayer的统计信息。
将下载得到的压缩包加压后,放到Apache服务器的根目录/var/www,参见如下目录结构
我将它上传到下面的网址
http://download.csdn.net/detail/tao_627/6899945
下面是live_jwplayer.html 的代码
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Crtmpserver Video Demo</title> <script type="text/javascript" src="jwplayer.js"></script> <script type="text/javascript">jwplayer.key="hB1eSAlsWoG5Q0Hg8BN4lkJn+6gNwfm5KFodug==";</script> </head> <body> <div id='mediaspace'>Loading the JWPlayer...</div> <script type="text/javascript"> jwplayer("mediaspace").setup({ flashplayer: "jwplayer.flash.swf", file: "rtmp://192.168.0.106/live/cuoai", image: "poster.jpg", height: 720, width: 1680 }); </script> </body> </html>
3.开启直播流和crtmpserver服务器
ffmpeg -re -i "/home/taoyx/视频/xinyueshenghua.flv" -vcodec copy -acodec copy -f flv rtmp://192.168.0.106/live/cuoai
./crtmpserver/crtmpserver crtmpserver/crtmpserver.lua
4.从网页端观看直播流,
http://192.168.0.106/jwplayer6/live_jwplayer.html
下面是使用截图
当然,也可以同时观看点播节目,比如输入如下网址
http://192.168.0.106/jwplayer6/test_jwplayer.html
下面是使用截图
这样的话,我们通过本地文件来模拟产生实时直播流来搭建Crtmpserver的直播基本完成,剩下的工作就是结合该demo去深入研究它内部的代码.请继续参见后面的博文描述.