一直在摸索如何保证文件不会被下载。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 Streaming Engine 4 (也就是著名的Wowza Media Server®)是一个高性能、可扩展的流媒体服务器软件,支持直播、VOD、在线视频聊天、远程录制功能, 它也支持多种播放器技术,包括:Adobe® HTTP Dynamic Streaming (HDS). Adobe Flash® 播放器
Apple® HTTP Live Streaming (HLS). iPhone®, iPad®, iPod touch®, Safari® 浏览器, QuickTime® 播放器
Microsoft® Smooth Streaming. Microsoft Silverlight®
MPEG-DASH streaming. DASH clients.
Real Time Streaming Protocol (RTSP/RTP). QuickTime 播放器, VLC 媒体播放器, 以及许多移动终端
MPEG-2 Transport Streams (MPEG-TS). 机顶盒和IPTV 解决方案
安装Java
Wowza Streaming Engine 4 是一个基于Java 6 (也就是 1.6) 和Java 7 (也就是 1.7)的应用程序,需要先安装Java Runtime Environment (JRE) 6 或以上版本。
Wowza Streaming Engine可以使用下面的Java安装包:
Java Development Kit (JDK). 这个JDK 包含了完整的JRE 并可以让Java 开发人员开发和调试服务端应用。
Java Server JRE. 这个Server JRE 是一个完整的JRE。如果你只是要运行Java程序,而不是开发和调试,那么可以用这个安装包。
第三方的Java虚拟机环境、 用户端的Java JRE、以及32位的客户端环境,这些都不是运行Wowza server 软件所需要的服务端环境。 你可以在32位的Java JRE上运行Wowza Streaming Engine,但它仅仅只能用于测试环境,此外,还需要一些额外的配置。
为了得到最好的性能,为了能够使用Wowza Transcoder AddOn,我们推荐你将Wowza Streaming Engine 安装在 64位的操作系统和最新的64位Java JDK 或 Server JRE。
注意:
Wowza Transcoder AddOn 只能运行在64位的Windows 和 Linux 操作系统和64位的Java VM。
你可以从Oracle Java SE 下载页面或 所有操作系统下的Java 下载页面下载下载64位Java JDK 或 Server JRE。
根据手册或指南安装Java 环境。
你可以用java –version命令来验证是否已经正确安装了Java。
如果Java已经被正确的安装和配置,命令行或终端窗口会出现Java的版本号,它应该至少是1.6版本。
针对32位Java 客户端环境下运行Wowza Streaming Engine 所需要的配置
如果你下载32位客户端版本的Java JRE,比如在www.java.com页面点击Free Java Download 按钮。 我们不推荐使用这个版本,要使用它,你需要在Wowza Stream Engine 上做如下配置:
在[install-dir]/conf/目录下,用一个文本编辑器打开Tune.xml文件。
删除文件中的<VMOption>-server</VMOption>属性。
保存文件,然后重启Wowza Streaming Engine 。
- 或者 -
在Java的安装目录的bin文件夹下,通常位于[java-install-dir]\bin下,按如下操作
创建一个名字为server的文件夹。
例如,当你的Java安装在C:\Program Files\java\jre7下,那么创建如下文件夹:
Code:
C:\Program Files\java\jre7\bin\server
将[java-install-dir]\bin\client 文件夹下的内容拷贝到[java-install-dir]\bin\server 文件夹下。
确认JAVA_HOME 环境变量能正确匹配你的Java安装根目录([java-install-dir]).
例如,C:\Program Files\java\jre7. 如果这个环境变量设置的不对,请参考After installing latest Java version, java command is still using old Java (fix) 以了解更多如何解决它的信息。
安装Wowza Streaming Engine 4
注意:
在安装Wowza Streaming Engine 4.0.6之前要卸载以前的任何Wowza版本。
到Wowza官网的 安装包下载 页面点击 Download 以下载你需要的操作系统下的Wowza版本。
下载完成后,按以下步骤进行:
Windows: 双击安装文件, WowzaStreamingEngine-4.0.6.exe, 按界面提示进行。
Mac OS: 双击 WowzaStreamingEngine-4.0.6.dmg 文件,然后双击安装包Wowza Streaming Engine 4.0.6.pkg, 按界面提示进行。
Linux: 进入包含安装文件的目录,根据你的平台,执行以下命令:
Red Hat Package Manager (RPM):
打开命令Shell,输入如下命令:
Code:
sudo chmod +x WowzaStreamingEngine-4.0.6.rpm.bin
sudo ./WowzaStreamingEngine-4.0.6.rpm.bin
Debian Package Manager (DEB):
打开命令Shell,输入如下命令:
code:
sudo chmod +x WowzaMediaStreamingEngine-4.0.6.deb.bin
sudo ./WowzaStreamingEngine-4.0.6.deb.bin
其它Linux系统TAR包安装:
打开命令Shell,输入如下命令:
code:
sudo chmod +x WowzaStreamingEngine-4.0.6.tar.bin
sudo ./WowzaStreamingEngine-4.0.6.tar.bin
在安装过程中,你会被要求:
接受授权协议(license agreement)
输入一个合法的产品授权序列号。这个序列号是由Wowza公司通过邮件发给你的,你会在收件箱中找到它。
创建一个管理员账户需要的用户名和密码。你将用这个账号登录基于Web的Wowza Streaming Engine Manager。注意:用户名和密码都是大小写敏感的。
确认或改变安装目录,默认情况下,Wowza Streaming Engine 将被安装在以下目录:
/Applications/Wowza Streaming Engine 4.0.6/
/Library/LaunchDaemons/
/Library/WowzaStreamingEngine/ (an alias)
/Library/WowzaStreamingEngine-4.0.6/
Windows: \Program File(x86)\Wowza Media Systems\Wowza Streaming Engine 4.0.6
Mac OSX:
Linux/Unix: /usr/local/WowzaStreamingEngine-4.0.6
如果你希望在系统启动后自动启动Wowza Streaming Engine 和 Streaming Engine Manager 。 请在提示界面中接受默认的选项 Start Wowza Streaming Engine automatically when the system starts 以及 Launch Wowza Streaming Engine Manager in a web browser ,这样可以使得服务器和管理界面能够在操作系统启动后自动启动,这样会方便很多。 如果你没有接受这些选项,你必须自己启动服务器和管理界面。
启动软件
如果你在安装的时候没有选择自动启动服务和管理界面,你必须手动启动它们。根据不同的操作系统平台,按以下指导进行。
Windows平台上以服务方式启动:
按WIN键 + R
在运行对话框输入 services.msc,然后点击确定。
在Services MMC窗口中,右键Wowza Streaming Engine 4.0.6,然后点击启动。
要确定Wowza Streaming Engine是否已经正常启动,请在Web浏览器访问下面的URL:
http://[wowza-ip-address]:1935
在这里,[wowza-ip-address], 是运行Wowza Streaming Engine的服务器IP地址或域名。例如:
http://localhost:1935
如果已经正常启动,浏览器上会显示Wowza Streaming Engine 的版本号。如果没有,请检查软件是否已经正确安装,在你的路由和防火墙设备以及软件防火墙上的TCP端口是否被打开。
当 Wowza Streaming Engine 服务正常运行后,你再启动Wowza Streaming Engine Manager。
回到Services 窗口, 右键Wowza Streaming Engine Manager 4.0.6, 然后选择e Start.
Mac OS X平台上以服务方式启动
到/Applications/WowzaStreamingEngine-4.0.6/ ,双击 Start Services.
运行Start Services 应用,将Wowza Streaming Engine server software 和 Wowza Streaming Engine Manager 同时作为系统服务启动。
要确定Wowza Streaming Engine是否已经正常启动,请在Web浏览器访问下面的URL:
http://[wowza-ip-address]:1935
在这里,[wowza-ip-address], 是运行Wowza Streaming Engine的服务器IP地址或域名。例如:
http://localhost:1935
如果已经正常启动,浏览器上会显示Wowza Streaming Engine 的版本号。如果没有,请检查软件是否已经正确安装,在你的路由和防火墙设备以及软件防火墙上的TCP端口是否被打开。
Linux平台上以服务方式启动
要在Linux平台以服务方式将启动Wowza 软件,你必须以用sudo命令成为root用户。 如果以下的指导在你的Linux发型版本上不能生效,请咨询您的Linux手册。
在一个终端窗口,输入下面的命令(依赖你的Linux发型版本):
Code:
sudo service WowzaStreamingEngine start
-或-
Code:
/etc/init.d/WowzaStreamingEngine start
要确定Wowza Streaming Engine是否已经正常启动,请在Web浏览器访问下面的URL:
http://[wowza-ip-address]:1935
在这里,[wowza-ip-address], 是运行Wowza Streaming Engine的服务器IP地址或域名。例如:
http://localhost:1935
如果已经正常启动,浏览器上会显示Wowza Streaming Engine 的版本号。如果没有,请检查软件是否已经正确安装,在你的路由和防火墙设备以及iptables上的TCP端口是否被打开。
当 Wowza Streaming Engine 服务正常运行后,你再启动Wowza Streaming Engine Manager。
在一个终端窗口,输入下面的命令(依赖你的Linux发型版本):
Code:
sudo service WowzaStreamingEngineManager start
-或-
Code:
/etc/init.d/WowzaStreamingEngineManager start
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)