2 Darwin Streaming Server
3 流媒体服务器 Open Streaming Server4 MPEG4IP5 开源流媒体平台 FreeCast
6 流媒体服务器 Yass
7 开源流媒体平台 Stream-2-Stream
8 Flumotion 流媒体服务器9 icecast10 WEB自动点唱机 netjukebox
11 流媒体解决方案 live555
12 Helix DNA Platform
13 电视流媒体服务器 Tvheadend14 OpenAMF15 【商业】流媒体服务器 xmoovStream
16 Java流媒体服务器 JRoar
17 webcamFLV
18 【商业】流媒体服务器软件 Helix Server
19 Free UPnP Entertainment Service
20 流媒体服务器 Tunapie
21 pulpTunes
22 流媒体服务器 TivoServer
23 m3w网站的流媒体服务器 m3w24 m9u25 音频流记录器 DarkIce26 Java实现的RTMP Flazr (zwtchy123)
realserver
qvod
gvod
webplayer9
viewgood
都用过,realserver不说了,老牌流媒体,不过性能一般般
最快的是viewgood,但比较复杂,而且正式使用的话,有版权纠纷(没免费版)
最稳定是qvod
webplayer9有点像山寨的viewgood,不过用着还行
新生势力是gvod,迅雷出的,客户端太大.
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())
}
}
}
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)