这个接口提供了几个resolvePlayAlias 方法,当播放器每一次开始播放一个流时,根据不同协议,就会触发其中一个resolvePlayAlias方法。 播放请求中的Stream name会被传递到这个方法中,并返回一个新的Stream Name
这个接口还提供了几个resolveStreamAlias 方法,当你用Wowza Streaming Engine Manager管理界面、StartUpStreams.xml 或 MediaCaster API 去启动一个MediaCaster(Wowza Streaming Engine的一个内部负责从远端拉流的模块)类型的流时,系统会调用这些方法。 当你在使用Live repeater、SHOUTcast/IceCast re-streaming 以及 RTSP/RTP re-streaming 功能时,系统会用到这个功能。它通常被用于将一个复杂、较长的流地址转变为一个简单而短小的流名字。 例如你要拉一个SHOUTcast音乐流,Url地址是http://192.168.1.7/myradiostation ,那么你可以创建一个别名,叫做myradiostation。 你可以用这个新的别名代指这个SHOUTcast流。
注意:在使用SMIL文件配置的多码率流时,smil的名字会先被解析,然后才会继续解析Smil里面的每一个流的名字。
注意: 在你使用了IMediaStreamNameAliasProvider2接口后,就不能使用Wowza StreamNameAlias模块或.stream文件,因为它们本来就是这个IMediaStreamNameAliasProvider2的一个实现。
注意: 这个功能只能改写流的名字(stream name),它不会去做重定向之类的事。
package com.wowza.wms.example.module; import com.wowza.wms.application.*; import com.wowza.wms.client.IClient; import com.wowza.wms.httpstreamer.model.IHTTPStreamerSession; import com.wowza.wms.mediacaster.IMediaCaster; import com.wowza.wms.module.*; import com.wowza.wms.rtp.model.RTPSession; import com.wowza.wms.stream.IMediaStream; import com.wowza.wms.stream.IMediaStreamNameAliasProvider2; import com.wowza.wms.stream.livepacketizer.ILiveStreamPacketizer; public class ModuleStreamNameAliasExample extends ModuleBase implements IMediaStreamNameAliasProvider2 { public void onAppStart(IApplicationInstance appInstance) { String fullname = appInstance.getApplication().getName() + "/" + appInstance.getName(); getLogger().info("onAppStart: " + fullname); appInstance.setStreamNameAliasProvider(this); } public String resolvePlayAlias(IApplicationInstance appInstance, String name, IClient client) { getLogger().info("Resolve Play Flash: " + name); return name; } public String resolvePlayAlias(IApplicationInstance appInstance, String name, IHTTPStreamerSession httpSession) { getLogger().info("Resolve Play HTTPSession: " + name); return name; } public String resolvePlayAlias(IApplicationInstance appInstance, String name, RTPSession rtpSession) { getLogger().info("Resolve Play RTPSession: " + name); return name; } public String resolvePlayAlias(IApplicationInstance appInstance, String name, ILiveStreamPacketizer liveStreamPacketizer) { getLogger().info("Resolve Play LiveStreamPacketizer: " + name); return name; } public String resolveStreamAlias(IApplicationInstance appInstance, String name, IMediaCaster mediaCaster) { getLogger().info("Resolve Stream Mediacaster: " + name); return name; } public String resolvePlayAlias(IApplicationInstance appInstance, String name) { getLogger().info("Resolve Play: " + name); return name; } public String resolveStreamAlias(IApplicationInstance appInstance, String name) { getLogger().info("Resolve Stream: " + name); return name; } }将以上代码编译后,在/conf/[app-name]/Application.xml文件的<Modules>列表中添加下面的Module:
<Module> <Name>ModuleStreamNameAliasExample</Name> <Description>ModuleStreamNameAliasExample</Description> <Class>com.wowza.wms.example.module.ModuleStreamNameAliasExample</Class> </Module>