关于java中项目中的流媒体服务器处理?

关于java中项目中的流媒体服务器处理?,第1张

你的问题的重点是项目启动时创建socket,只要socket创建成功就能通过tcp或udp协议进行访问了。如何项目启动时创建可以有2种方法:创建一个继承了ServletContextListener接口的类,在contextInitialized方法里建立socketserver端新建一个Servlet,并设置0,在service方法里建立socketserver端。

java可以转行流媒体开发。因为计算机专业可以参与流媒体服务器架构的设计与开发,java对于实现直播、短视频系统子系统架构和开发,有明显的帮助。对于技术难点的攻关和预研工作有相关的帮助。

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())

}

}

}


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/253576.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存