010-68421378
sales@cogitosoft.com
当前您所在的位置:首页>新闻中心>新品发布

Wowza: 如何实时地修改播放请求中的StreamName?

发布时间:2021/03/31 浏览量:1796
这个例子是一个IMediaStreamNameAliasProvider2接口的实现,它提供了一个基本的框架...

这个例子是一个IMediaStreamNameAliasProvider2接口的实现,它提供了一个基本的框架,当Wowza Streaming Engine接收到一个播放请求后,它可以拦截这个请求并将流的名字(Stream Name)或者说路径修改为另一个名字。 

这个接口提供了几个resolvePlayAlias方法,当播放器每一次开始播放一个流时,根据不同协议,就会触发其中一个resolvePlayAlias方法。 播放请求中的Stream name会被传递到这个方法中,并返回一个新的Stream Name 

这个接口还提供了几个resolveStreamAlias方法,当你用Wowza StreamingEngine 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;

importcom.wowza.wms.httpstreamer.model.IHTTPStreamerSession;

importcom.wowza.wms.mediacaster.IMediaCaster;

import com.wowza.wms.module.*;

import com.wowza.wms.rtp.model.RTPSession;

import com.wowza.wms.stream.IMediaStream;

importcom.wowza.wms.stream.IMediaStreamNameAliasProvider2;

importcom.wowza.wms.stream.livepacketizer.ILiveStreamPacketizer;

 

public class ModuleStreamNameAliasExampleextends ModuleBase implements IMediaStreamNameAliasProvider2 {

 

         publicvoid onAppStart(IApplicationInstance appInstance) {

                   Stringfullname = appInstance.getApplication().getName() + "/"

                                     +appInstance.getName();

                   getLogger().info("onAppStart:" + fullname);

                  

                   appInstance.setStreamNameAliasProvider(this);

        

         }

 

         publicString resolvePlayAlias(IApplicationInstance appInstance,

                            Stringname, IClient client) {

                   getLogger().info("ResolvePlay Flash: " + name);

                  

                   returnname;

         }

 

         publicString resolvePlayAlias(IApplicationInstance appInstance,

                            Stringname, IHTTPStreamerSession httpSession) {

                   getLogger().info("ResolvePlay HTTPSession: " + name);

                            returnname;

         }

 

         publicString resolvePlayAlias(IApplicationInstance appInstance,

                            Stringname, RTPSession rtpSession) {

                   getLogger().info("ResolvePlay RTPSession: " + name);

                   returnname;

         }

 

         publicString resolvePlayAlias(IApplicationInstance appInstance,

                            Stringname, ILiveStreamPacketizer liveStreamPacketizer) {

                   getLogger().info("ResolvePlay LiveStreamPacketizer: " + name);

                   returnname;

         }

 

         publicString resolveStreamAlias(IApplicationInstance appInstance,

                            Stringname, IMediaCaster mediaCaster) {

                   getLogger().info("ResolveStream Mediacaster: " + name);

                   returnname;

         }

 

         publicString resolvePlayAlias(IApplicationInstance appInstance, String name) {

                   getLogger().info("ResolvePlay: " + name);

                   returnname;

         }

 

         publicString resolveStreamAlias(IApplicationInstance appInstance,

                            Stringname) {

                   getLogger().info("ResolveStream: " + name);

                   returnname;

         }

}

将以上代码编译后,在/conf/[app-name]/Application.xml文件的列表中添加下面的Module: 

 

         ModuleStreamNameAliasExample

         ModuleStreamNameAliasExample

         com.wowza.wms.example.module.ModuleStreamNameAliasExample


 

Wowza Streaming Engine 4是业界功能全面、API接口丰富的流媒体Server产品,采用它作为流媒体服务器产品的案例很多,直播、在线教育、IPTV都有它的用武之地。

下一篇:Strand7 非线性静力求解器 :分析考虑有非线性特性的结构
上一篇:"黄道十二宫杀手"的340个字符密码的 Wolfram 解决方案

                               

 京ICP备09015132号-996网络文化经营许可证京网文[2017]4225-497号 | 违法和不良信息举报电话:4006561155

                                   © Copyright 2000-2023 北京哲想软件有限公司版权所有 | 地址:北京市海淀区西三环北路50号豪柏大厦C2座11层1105室

                         北京哲想软件集团旗下网站:哲想软件 | 哲想动画

                            华滋生物