Here is an example of how to use ComputeSpectrum with Wowza Pro. This example requires that the FastPlayVideoStreaming example be installed. Once this example is installed, edit the file [install-dir]/conf/fastplay/Application.xml and change the Client/Access/StreamAudioSampleAccess to *.
The basic ActionScript 3.0 code looks like this:
var nc:NetConnection;
var ns:NetStream;
var serverUrl:String = "rtmp://localhost/fastplay";
function ncOnStatus(infoObject:NetStatusEvent)
{
trace("ncOnStatus: "+infoObject.info.code);
if (infoObject.info.code == "NetConnection.Connect.Success")
{
doPlay();
}
}
function doConnect()
{
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, ncOnStatus);
var ncClientObj:Object = new Object();
nc.client = ncClientObj;
trace("connect: "+serverUrl);
nc.connect(serverUrl);
}
function nsOnStatus(infoObject:NetStatusEvent)
{
trace("nsOnStatus: "+infoObject.info.code);
if (infoObject.info.code == "NetStream.Play.Start")
{
setInterval(doCompute, 500);
}
}
function doPlay()
{
ns = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, nsOnStatus);
var nsClientObj:Object = new Object();
ns.client = nsClientObj;
nsClientObj.onPlayStatus = function(infoObject:Object)
{
trace("onPlayStatus: "+infoObject.info.code);
}
ns.bufferTime = 3;
ns.play("Extremists");
}
function doCompute()
{
trace("doCompute: ");
var spectrum : ByteArray = new ByteArray();
SoundMixer.computeSpectrum(spectrum, true);
var spectrumStr:String = "";
var index:Number = 0;
var channelOffset:Number = 0;
for(var i=0;i<2;i++)
{
if (i == 0)
spectrumStr += "Left\n";
else
spectrumStr += "Right\n";
for(var j=0;j<16;j++)
{
var line:String = "";
for(var k=0;k<16;k++)
{
if (line.length > 0)
line += " ";
var currVal:Number = spectrum.readFloat();
line += ""+currVal;
index++;
}
spectrumStr += line + "\n";
}
}
trace(spectrumStr);
}
doConnect();
Here a link to a working example:
Charlie