Module Collection

https://www.wowza.com/docs/utility-modules-for-wowza-streaming-engine-media-server-software

I don’t see ModuleMonitorStream in this list. Am I missing it?

Guys, you have a typo there, ModuelCreateSnapshot class. Please fix.

Thanks!

It’s updated.

Richard

It’s just a typo in the name of the smil file.

Change “streamschedle.smil” to “streamschedule.smil”

Richard

Sounds like you are ready to use the Wowza IDE. You can compile the source which is posted here

https://www.wowza.com/docs/how-to-schedule-streaming-with-wowza-streaming-engine-streampublisher

The Wowza IDE:

http://wowza.com/ide.html

Then you can change the name of the smil file and everything else.

Richard

You can use ftp. See the EC2 guide for accessing the instance with FTP.

Richard

Trini,

Open that page again and do view > source. Then you will see this info in xml. Some browsers do not present this xml very well, so try different browsers.

Richard

Videoeditor,

The FTP server should be running, but check and make sure:

vsftpd start

Richard

I don’t think it will work with S3 or FSS3. It is Java. Here is the source:

package com.wowza.wms.plugin.collection.module;

import com.wowza.wms.amf.*;
import com.wowza.wms.application.IApplicationInstance;
import com.wowza.wms.client.*;
import com.wowza.wms.module.*;
import com.wowza.wms.request.*;
import java.io.File;
import com.wowza.util.FileUtils;
import com.wowza.util.IFileProcess;

public class ModuleVideoNameList extends ModuleBase {

	AMFDataMixedArray recordedMovies = new AMFDataMixedArray();
	String storageDir;
	
	class PutFile implements IFileProcess
	{
		public void onFile(File file)
		{
			String sizeSuffix="";
			String s = storageDir;
			if (file.length()<1024000)
			{
				sizeSuffix = "["+ Math.round((file.length() * .001)) + " kb]";
			}
			else
			{
				sizeSuffix = "["+ Math.round((file.length() * .000001)) + " MB]";
			}
			
			String fileName = file.getName();
			
			String _abpath = file.getAbsolutePath().replace("\\", "/");
			String _parent = file.getParent().replace("\\", "/");
			String _path = file.getPath().replace("\\", "/");
			
			
			
			fileName = fileName.replace(storageDir, "");
			String fn = file.getName().toLowerCase();
			if (fn.indexOf(".m4v")>-1 || fn.indexOf(".mov")>-1 || fn.indexOf(".mp4")>-1 || fn.indexOf(".f4v")>-1)
			{
				fileName="mp4:" + fileName;
			}
			
			if (file.length() > 0 && fileName.indexOf(".")>-1)
			{
				recordedMovies.put(fileName, new AMFDataItem(fileName.replace(".flv", "") + " " + sizeSuffix));
				getLogger().info("fileName: " + fileName);
			}
		}
	}
	
	public void getVideoNames(IClient client, RequestFunction function,
			AMFDataList params) {
		getLogger().info("getFiles");
		storageDir = client.getAppInstance().getStreamStoragePath();
		recordedMovies = new AMFDataMixedArray();
		
		IApplicationInstance app = client.getAppInstance();
		
		PutFile putfile = new PutFile();
		FileUtils.traverseDirectory(new File(app.getStreamStoragePath().replace("_definst_", app.getName())), putfile);
		sendResult(client, params, recordedMovies);
	}
}

To call this from Flash, here is an AS3 version. If you are using Flex, you an use the Bindable ArrayCollection with a ComboBox. In Flash CS you can change it to an Array

netconnection.call("getVideoNames",new Responder(videoNamesHandler));

[Bindable]
privat var recordedStreamsDP = new ArrayCollection();

private function videoNamesHandler(results:Object):void
{	
for( var item:String in results ) 
{
	var obj:ObjectProxy = new ObjectProxy(); // In Flex use ObjectProxy to populate Bindable ArrayCollection.
	obj.label = results[item];
	obj.value = item;
	recordedStreamsDP.addItemAt(obj,0);    
}
}

This should work in Flash AS3 or AS2:

var result:Object = new Object();
result.onResult = function(results:Object)
{
  for( var item:String in results ) 
{
	trace(results[item]);
	trace(item);
}  
}
netconnection.call("getVideoNames", result);

Richard

Right, add this Module to the end of your Application.xml Modules list:

<Module>
<Name>streamcontroller</Name>
<Description>ModuleStreamControl</Description>
<Class>com.wowza.wms.plugin.collection.module.ModuleStreamControl</Class>
</Module>

Updating readme…

Richard

You have to add this property also for the encoder:

<Property>
 <Name>AllowEncoder</Name>
 <Value>Wirecast</Value> <!--FM, Wirecast-->
</Property>

Richard

Shouldn’t be a conflict with MediaSecurity addon. Check the logf files, this module is reporting the value that the enocder is giving for Flashver. Look for a comment like:

Flashver: FM

But it wouldn’t be “FM”, something else. What it is, use that in the Property.

Richard

It would be in the access log. If this module is installed, it will write the Flashver to the log when the encoder starts publishing. So maybe it is the way you are using MediaSecurity package. I would remove the MediaSecurity module to debug.

Richard

This module won’t do it because it is just a snapshot, a point in time. As mentioned, you need to crunch the logs, and Sawmill has a Wowza module for that.

Richard

Removing the security package suggestion is to to step back so you can debug the first problem.

Now go back to the access logs and look for the comment that starts with "Flashver: " followed by something like “FMLE 3.5”, or something similar.

If you don’t see that, then the ModuleLimitConnectionsToApplication is not functioning. Double check the that the jar file is in the /lib folder. And post the whole Application.xml here.

Richard

Yes, all of these have source and they are all in this section along with many other Wowza Modules, HTTProviders and ServerListeners that you can use:

http://community.wowza.com/c/-/10

Richard

You will have install the latest JDK. You can download from here:

http://java.sun.com/javase/downloads/index.jsp

Richard

It should work with Mac. You can install the latest Mac JDK. See this page:

http://www.java.com/en/download/faq/java_mac.xml

(I am supposed to downgrade the Java version on this collection build, but I’ve made a couple of attempts at adjusting my environment that broke everything for me and I had to dig my way out of it and haven’t got back to it yet, sorry.)

Richard

Did you copy the jar file from the package to the Wowza lib folder?

Richard