• IMediaStreamActionNotify2 example

    package com.wowza.wms.plugin.test.module;
    
    import com.wowza.wms.amf.*;
    import com.wowza.wms.application.*;
    import com.wowza.wms.module.*;
    import com.wowza.wms.stream.*;
    import com.wowza.wms.media.model.*;
    
    public class ModuleMediaStreamActionNotify2Example extends ModuleBase
    {
    
    	class StreamListener implements IMediaStreamActionNotify2
    	{
    		public void onMetaData(IMediaStream stream, AMFPacket metaDataPacket)
    		{
    			System.out.println("onMetaData[" + stream.getContextStr() + "]: " + metaDataPacket.toString());
    		}
    
    		public void onPauseRaw(IMediaStream stream, boolean isPause, double location)
    		{
    			System.out.println("onPauseRaw[" + stream.getContextStr() + "]: isPause:" + isPause + " location:" + location);
    		}
    
    		public void onPause(IMediaStream stream, boolean isPause, double location)
    		{
    			System.out.println("onPause[" + stream.getContextStr() + "]: isPause:" + isPause + " location:" + location);
    		}
    
    		public void onPlay(IMediaStream stream, String streamName, double playStart, double playLen, int playReset)
    		{
    			System.out.println("onPlay[" + stream.getContextStr() + "]: playStart:" + playStart + " playLen:" + playLen + " playReset:" + playReset);
    		}
    
    		public void onPublish(IMediaStream stream, String streamName, boolean isRecord, boolean isAppend)
    		{
    			System.out.println("onPublish[" + stream.getContextStr() + "]: isRecord:" + isRecord + " isAppend:" + isAppend);
    		}
    
    		public void onSeek(IMediaStream stream, double location)
    		{
    			System.out.println("onSeek[" + stream.getContextStr() + "]: location:" + location);
    		}
    
    		public void onStop(IMediaStream stream)
    		{
    			System.out.println("onStop[" + stream.getContextStr() + "]: ");
    		}
    
    		public void onUnPublish(IMediaStream stream, String streamName, boolean isRecord, boolean isAppend)
    		{
    			System.out.println("onUnPublish[" + stream.getContextStr() + "]: streamName:" + streamName + " isRecord:" + isRecord + " isAppend:" + isAppend);
    		}
    	}
    
    	public void onStreamCreate(IMediaStream stream)
    	{
    		getLogger().info("onStreamCreate["+stream+"]: clientId:" + stream.getClientId());
    		IMediaStreamActionNotify2 actionNotify = new StreamListener();
    
    		WMSProperties props = stream.getProperties();
    		synchronized (props)
    		{
    			props.put("streamActionNotifier", actionNotify);
    		}
    		stream.addClientListener(actionNotify);
    	}
    
    	public void onStreamDestroy(IMediaStream stream)
    	{
    		getLogger().info("onStreamDestroy["+stream+"]: clientId:" + stream.getClientId());
    
    		IMediaStreamActionNotify2 actionNotify = null;
    		WMSProperties props = stream.getProperties();
    		synchronized (props)
    		{
    			actionNotify = (IMediaStreamActionNotify2) stream.getProperties().get("streamActionNotifier");
    		}
    		if (actionNotify != null)
    		{
    			stream.removeClientListener(actionNotify);
    			getLogger().info("removeClientListener: " + stream.getSrc());
    		}
    	}
    
    }


    If you're having problems or want to discuss this article, post in our forum.