[wowza]FMS与wowza中使用RTMPE加密协议
遇到一个问题,FMS与WOWZA中如何使用RTMPE加密协议。
Wowza作为一个Media Delivery System,它要起很重要的作用。一直在摸索如何保证文件不会被下载。RTMP协议肯定是不行的。然后我就把目光放到了RTMP协议的众多变体上。
首 先是RTMPT协议,用HTTP协议封装的RTMP协议。不知道怎么回事,服务器似乎不能很好的接受RTMPT协议,不知道是设置问题还是别的什么。而且 在Wowza官方论坛上,Wowza的开发者也不建议使用RTMPT协议,因为它需要500ms轮询一次,而且服务器的CPU开销(协议封装需要消耗 CPU)和带宽开销(封装成HTTP协议时需要额外内容)都比较大,唯一的优点就只有可以突破带有协议扫描的防火墙。
然后就是RTMPS和RTMPE。前者是用SSL协议加密的,后者是Adobe自己的128位加密算法。Wowza和Adobe都推荐后者,因为使用简单无需设置。而RTMPS需要设置证书等比较复杂的设置,而且安全性据说也不比RTMPE协议高。
最后就是RTMPTS和RTMPTE协议,看名字也知道是怎么回事了。
最后我选择了RTMPE协议,简单就是美。
接 下来的问题是如何屏蔽RTMP协议。不像Red5和Adobe Flash Media Server那样可以通过修改端口来简单的屏蔽,Wowza的RTMP,RTMPE,RTMPT协议是捆绑在一个端口上的。因为这个问题我甚至一度放弃了 Wowza而改用Adobe Flash Media Interactive Server,不过怎么都读取不到内容。
仔细研究了一下Wowza的论坛,发现原来官方发布过一个源码可以只使用RTMPE,RTMPS,RTMPTS这一类加密的协议。然后自然就是下载Wowza IDE,建了个工程,把代码粘贴进去,保存后再把自动生成的jar文件复制到服务器上。然后把application.xml文件修改一下,大功告成!
这样设置后如果尝试使用RTMP协议,会提示拒绝连接,要求加密。而且现有的所有下载工具都不能下载RTMPE协议。连网址变换都可以不用做了。
不得不赞叹一下Wowza的接口,确实很强大,而且是Java的。虽然FMIS也有接口,不过ActionScript语言毕竟是门冷门语言。
最后附上代码:
- package com.wowza.wms.plugin.forcertmpe;
- import com.wowza.wms.amf.*;
- import com.wowza.wms.client.*;
- import com.wowza.wms.module.*;
- import com.wowza.wms.request.*;
- public class RequireSecure extends ModuleBase {
- public void onConnect(IClient client, RequestFunction function,
- AMFDataList params) {
- if (!client.isEncrypted())
- {
- client.rejectConnection("Secure connection required.");
- getLogger().info("ModuleRequireSecureConnection.onConnect: rejectConnection: clientId:"+client.getClientId());
- }
- }
- }
这里大赞一下Wowza IDE,基于Eclipse 3.3,启动速度比官方Eclipse3.4要快不少。
FMS,也可以应用RTMPE协议,直接禁用FMS的RTMP协议,启用RTMPE协议,即可。
OK。完成,那么,如何调用RTMPE协议的视频呢?经测,极酷阳光播放器也是支持rtmpe协议的,用法:
很简单,只须改成rtmpe协议服务器地址,就可以了,如下。
- <script type="text/javascript" src="/player/images/swfobject.js"></script>
- <div class="video" id="CuPlayer"> <b> <img src="/player/images/loading.gif" /> 网页视频播放器加载中,请稍后...</b> </div>
- <script type="text/javascript">
- var so = new SWFObject("/player/player.swf","ply","980","460","9","#000000");
- so.addParam("allowfullscreen","true");
- so.addParam("allowscriptaccess","always");
- so.addParam("wmode","opaque");
- so.addParam("quality","high");
- so.addParam("salign","lt");
- <!-- HTML代码参数/Begin -->
- so.addVariable("JcScpServer","rtmpe://www.cuplauyer.com/vod"); //注意:这里用的是rtmpe地址
- so.addVariable("JcScpVideoPath","mp4:test.mp4"); //wowza视频文件地址
- so.addVariable("JcScpImg","/player/Images/start.jpg");
- so.addVariable("JcScpFile","/player/CuSunV2Set.xml");
- <!-- HTML代码参数/End -->
- so.write("CuPlayer");
- </script>
热门文章推荐
- [rtmp]流媒体协议RTMP,RTSP与HLS有什么不同?
- [Wowza]流媒体服务器Wowza Media Server的安装与启动教程
- [wowza]wowza推流发布和播放(推流RTMP流)介绍
- [wowza]Wowza Streaming Engine 4的安装与配置教程
- [wowza]Wowza Media Server 安装教程(含windows/Linux平台)
- [wowza]RTP直播流推送到另一个远端的服务器
- [AS3]Wowza Media Server服务器
- [wowza]wowza推RTSP流要求用户名密码