寒假几天想着给家里做个视频监控,类似于网页直播的东西。一开始没有思路,在网上搜索解决方案,最后选择red5做服务器,使用RTMP协议,其实我也不知道原理是啥,总之它能支持这个协议,播放媒体流。
网上关于red5的资料的确较少,我后来搜到极酷播放器的网站,给出了很多教程,先大概弄懂这个流程,即red5+FMLE+极酷播放器。Red5提供支持RTMP,极酷播放器能播媒体,如果要直播,接受FMLE给他的RTMP流即可。重要的是,极酷播放器能很方便的嵌入网页,而且官网给出代码,这也是我选择它的原因。
http://help.aodianyun.com/ylmt_soft03.html
按照官网的教程,安装配置red5,设置环境变量,新建工程文件夹,下载player放到其中,测试demo。需要注意的是配置ip,后面如果还需要换ip的话,需要修改的地方包括red的conf文件夹中的property文件(包括http地址、rtmp地址)以及工程文件中lib的property等文件中的ip。
http://www.cuplayer.com/player/PlayerCode/Red5/2014/0509/1316.html
先测试了点播,没问题后用FMLE生成RTMP流,注意设置的RTMP服务器地址和服务名要和html中的script调用一致,用red的vod、live文件夹都行。经PC测试也成功。
本来这样就结束了,但一拿安卓机测试,连播放器的框都没有。后来才知道,网页放视频以前是用flash而不是现在的html5,需要插件,而安卓系统4.4后adobe取消了对flash更新支持,所以我的小米4即使装了最新版的flash插件也不适用,因为已经是安卓4.4版本了。我试了很多浏览器都不行。后来听说海豚浏览器支持,网友们口中的“神器,你懂的”。于是我用海豚浏览器打开,结果播放器框有了,但是加载不出视频,一团黑。
我又是查了很多资料,后来觉得应该是我这播放器的问题,不支持安卓?我专门去官网下了个跨平台版的播放器,里面给了六种方案,而且都给出了条件和测试代码。后来全部换成这个播放器。PC,点播直播无压力,安卓,现在可以点播了,但直播还是不行。于是在安卓端我只能安卓rtmp player来看了。
http://www.cuplayer.com/crossplatform/
从官网给的说明看,直播方案都需要HLS支持,必须用苹果机产生HLS做服务器产生切片?还能转成RTMP?不懂?用windows、linux能支持HLS么?我没有苹果主机啊。
这是一个测试网址,声称支持各个平台?我的安卓机也不行。我表示怀疑。
http://demo.cuplayer.com/PlayerFashion/IPad/IPadV52.html
我把里面的RTMP地址复制到我的代码中,发现安卓机能看(侨乡频道),说明html代码是没有问题的,控制变量法,那真的只能是RTMP源的差别了,需要HLS支持。
先不考虑跨平台了,为了后面能进一步开发,想到red5集成到tomcat中,最简单可行的教程是下载一个war,然后替代tomcat部署文件夹的ROOT(原来的注意备份)。我重新新建工程,把red工程复制过去,用tomcat可运行,原来的s2sh项目等也是正常的。
http://download.csdn.net/detail/g1512161790/7805209#comment
就先告一段落吧,似乎坑挺深,算是初探吧,玩玩视频直播的感觉。
**************************************************************************************************************************
后续16-3-7:实现red5+tomcat在外网的部署:
过程曲曲折折,一开始部署到外网后,只能加载页面,然而视频就是播不出来,就是连点播都点播不了。百度了一下,资料特别少,大概都是说proporties文件的设置。其实也是很巧,想到这个ip到底是填写内网ip还是外网ip呢,然后页面文件中涉及路径也要写ip又是应该写哪一个呢?大概也是排列组合地试了一番,结论如下:
1、总的conf文件夹中的proporties文件,按照内网ip设置;
2、工程文件夹中的似乎不用改;
3、页面文件夹中的路径,要么使用相对路径,要么用外网ip(内网理应也可以呀~);
不解的地方是,直播的缓冲速度比点播快很多,点播要等近三分钟,醉醉的……用html5点播很快!
开森开森~