影院平台搭建 - (5)Wowza确实是个好东西

在页面代码没有确定下来的日子里,我一天到晚琢磨着FlowPlayer和Wowza。

FlowPlayer很一般,自从破解后,玩了些插件,觉得就那个样子,比较简单。

Wowza就不同了。作为一个Media Delivery System,它要起很重要的作用。
一直在摸索如何保证文件不会被下载。RTMP协议肯定是不行的,NetTransport, Orbit, Replay Media Catcher都可以下载这种协议的文件。然后我就把目光放到了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要快不少。

类别:影院平台搭建 查看评论
posted @ 2009-06-25 01:10  ayanamist  阅读(2134)  评论(1编辑  收藏  举报