I am trying to access the Api of the Wowza Media Engine with php.
I am using the php framework Laravel which should not make a big difference.
I am having this issue since 2 weeks and I have no clue how to proceed I googled alot:)
I went through this “tutorial” to set it up : https://github.com/WowzaMediaSystems/wse-rest-library-php
But I does not work, it returns null.
An additional information is that I am using a Streaming Engine trial currently, I did not get a license yet. I want to try it with the trial first.
So far this is my code:
wowza_constants.php:
<?
php return [
'WOWZA_HOST' => 'http://35.158.34.28:8087',
'WOWZA_SERVER_INSTANCE' => '_defaultServer_', 'WOWZA_VHOST_INSTANCE' => '_defaultVHost_', 'WOWZA_USERNAME' => 'wowza', 'WOWZA_PASSWORD' => 'mypassword'
];
?>
And this is my setup function:
public function setup()
{
// from wowza_constants.php
$host = Config::get('wowza_constants.WOWZA_HOST');
$instance = Config::get('wowza_constants.WOWZA_SERVER_INSTANCE');
$vhost = Config::get('wowza_constants.WOWZA_VHOST_INSTANCE');
$username = Config::get('wowza_constants.WOWZA_USERNAME');
$password = Config::get('wowza_constants.WOWZA_PASSWORD');
// It is simple to create a setup object for transporting our settings
$setup = new \Com\Wowza\Entities\Application\Helpers\Settings();
$setup->setHost($host);
$setup->setUsername($username);
$setup->setPassword($password);
//Connect to the server or deal with statistics NOTICE THE CAPS IN COM AND WOWZA
$server = new \Com\Wowza\Server($setup);
$sf = new \Com\Wowza\Statistics($setup);
$response = $sf->getServerStatistics($server);
var_dump($response); // RETURNS NULL
}
And this is my Application.xml file in my Server:
<?xml version="1.0" encoding="UTF-8"?>
<Root version="1">
<Application>
<Name></Name>
<AppType></AppType>
<Description></Description>
<!-- Uncomment to set application level timeout values
<ApplicationTimeout>60000</ApplicationTimeout>
<PingTimeout>12000</PingTimeout>
<ValidationFrequency>8000</ValidationFrequency>
<MaximumPendingWriteBytes>0</MaximumPendingWriteBytes>
<MaximumSetBufferTime>60000</MaximumSetBufferTime>
<MaximumStorageDirDepth>25</MaximumStorageDirDepth>
-->
<Connections>
<AutoAccept>true</AutoAccept>
<AllowDomains></AllowDomains>
</Connections>
<!--
StorageDir path variables
${com.wowza.wms.AppHome} - Application home directory
${com.wowza.wms.ConfigHome} - Configuration home directory
${com.wowza.wms.context.VHost} - Virtual host name
${com.wowza.wms.context.VHostConfigHome} - Virtual host home directory
${com.wowza.wms.context.Application} - Application name
${com.wowza.wms.context.ApplicationInstance} - Application instance name
-->
<Streams>
<StreamType>default</StreamType>
<StorageDir>${com.wowza.wms.context.VHostConfigHome}/content</StorageDir>
<KeyDir>${com.wowza.wms.context.VHostConfigHome}/keys</KeyDir>
<!-- LiveStreamPacketizers (separate with commas): cupertinostreamingpacketizer, smoothstreamingpacketizer, sanjosestreamingpacketizer, mpegdashstreamingpacketizer, cupertinostreamingrepeater, smoothstreamingrepeater, sanjosestreamingrepeater, mpegdashstreamingrepeater, dvrstreamingpacketizer, dvrstreamingrepeater -->
<LiveStreamPacketizers></LiveStreamPacketizers>
<!-- Properties defined here will override any properties defined in conf/Streams.xml for any streams types loaded by this application -->
<Properties>
</Properties>
</Streams>
<Transcoder>
<!-- To turn on transcoder set to: transcoder -->
<LiveStreamTranscoder></LiveStreamTranscoder>
<!-- [templatename].xml or ${SourceStreamName}.xml -->
<Templates>${SourceStreamName}.xml,transrate.xml</Templates>
<ProfileDir>${com.wowza.wms.context.VHostConfigHome}/transcoder/profiles</ProfileDir>
<TemplateDir>${com.wowza.wms.context.VHostConfigHome}/transcoder/templates</TemplateDir>
<Properties>
</Properties>
</Transcoder>
<DVR>
<!-- As a single server or as an origin, use dvrstreamingpacketizer in LiveStreamPacketizers above -->
<!-- Or, in an origin-edge configuration, edges use dvrstreamingrepeater in LiveStreamPacketizers above -->
<!-- As an origin, also add dvrchunkstreaming to HTTPStreamers below -->
<!-- If this is a dvrstreamingrepeater, define Application/Repeater/OriginURL to point back to the origin -->
<!-- To turn on DVR recording set Recorders to dvrrecorder. This works with dvrstreamingpacketizer -->
<Recorders></Recorders>
<!-- As a single server or as an origin, set the Store to dvrfilestorage-->
<!-- edges should have this empty -->
<Store></Store>
<!-- Window Duration is length of live DVR window in seconds. 0 means the window is never trimmed. -->
<WindowDuration>0</WindowDuration>
<!-- Storage Directory is top level location where dvr is stored. e.g. c:/temp/dvr -->
<StorageDir>${com.wowza.wms.context.VHostConfigHome}/dvr</StorageDir>
<!-- valid ArchiveStrategy values are append, version, delete -->
<ArchiveStrategy>append</ArchiveStrategy>
<!-- Properties for DVR -->
<Properties>
</Properties>
</DVR>
<TimedText>
<!-- VOD caption providers (separate with commas): vodcaptionprovidermp4_3gpp, vodcaptionproviderttml, vodcaptionproviderwebvtt, vodcaptionprovidersrt, vodcaptionproviderscc -->
<VODTimedTextProviders>vodcaptionprovidermp4_3gpp</VODTimedTextProviders>
<!-- Properties for TimedText -->
<Properties>
</Properties>
</TimedText>
<!-- HTTPStreamers (separate with commas): cupertinostreaming, smoothstreaming, sanjosestreaming, mpegdashstreaming, dvrchunkstreaming -->
<HTTPStreamers>cupertinostreaming,smoothstreaming,sanjosestreaming,mpegdashstreaming</HTTPStreamers>
<MediaCache>
<MediaCacheSourceList></MediaCacheSourceList>
</MediaCache>
<SharedObjects>
<StorageDir>${com.wowza.wms.context.VHostConfigHome}/applications/${com.wowza.wms.context.Application}/sharedobjects/${com.wowza.wms.context.ApplicationInstance}</StorageDir>
</SharedObjects>
<Client>
<IdleFrequency>-1</IdleFrequency>
<Access>
<StreamReadAccess>*</StreamReadAccess>
<StreamWriteAccess></StreamWriteAccess>
<StreamAudioSampleAccess></StreamAudioSampleAccess>
<StreamVideoSampleAccess></StreamVideoSampleAccess>
<SharedObjectReadAccess>*</SharedObjectReadAccess>
<SharedObjectWriteAccess>*</SharedObjectWriteAccess>
</Access>
</Client>
<RTP>
<!-- RTP/Authentication/[type]Methods defined in Authentication.xml. Default setup includes; none, basic, digest -->
<Authentication>
<PublishMethod>block</PublishMethod>
<PlayMethod>none</PlayMethod>
</Authentication>
<!-- RTP/AVSyncMethod. Valid values are: senderreport, systemclock, rtptimecode -->
<AVSyncMethod>senderreport</AVSyncMethod>
<MaxRTCPWaitTime>12000</MaxRTCPWaitTime>
<IdleFrequency>75</IdleFrequency>
<RTSPSessionTimeout>90000</RTSPSessionTimeout>
<RTSPMaximumPendingWriteBytes>0</RTSPMaximumPendingWriteBytes>
<RTSPBindIpAddress></RTSPBindIpAddress>
<RTSPConnectionIpAddress>0.0.0.0</RTSPConnectionIpAddress>
<RTSPOriginIpAddress>127.0.0.1</RTSPOriginIpAddress>
<IncomingDatagramPortRanges>*</IncomingDatagramPortRanges>
<!-- Properties defined here will override any properties defined in conf/RTP.xml for any depacketizers loaded by this application -->
<Properties>
</Properties>
</RTP>
<MediaCaster>
<RTP>
<RTSP>
<!-- udp, interleave -->
<RTPTransportMode>interleave</RTPTransportMode>
</RTSP>
</RTP>
<StreamValidator>
<Enable>true</Enable>
<ResetNameGroups>true</ResetNameGroups>
<StreamStartTimeout>20000</StreamStartTimeout>
<StreamTimeout>12000</StreamTimeout>
<VideoStartTimeout>0</VideoStartTimeout>
<VideoTimeout>0</VideoTimeout>
<AudioStartTimeout>0</AudioStartTimeout>
<AudioTimeout>0</AudioTimeout>
<VideoTCToleranceEnable>false</VideoTCToleranceEnable>
<VideoTCPosTolerance>3000</VideoTCPosTolerance>
<VideoTCNegTolerance>-500</VideoTCNegTolerance>
<AudioTCToleranceEnable>false</AudioTCToleranceEnable>
<AudioTCPosTolerance>3000</AudioTCPosTolerance>
<AudioTCNegTolerance>-500</AudioTCNegTolerance>
<DataTCToleranceEnable>false</DataTCToleranceEnable>
<DataTCPosTolerance>3000</DataTCPosTolerance>
<DataTCNegTolerance>-500</DataTCNegTolerance>
<AVSyncToleranceEnable>false</AVSyncToleranceEnable>
<AVSyncTolerance>1500</AVSyncTolerance>
<DebugLog>false</DebugLog>
</StreamValidator>
<!-- Properties defined here will override any properties defined in conf/MediaCasters.xml for any MediaCasters loaded by this applications -->
<Properties>
</Properties>
</MediaCaster>
<MediaReader>
<!-- Properties defined here will override any properties defined in conf/MediaReaders.xml for any MediaReaders loaded by this applications -->
<Properties>
</Properties>
</MediaReader>
<MediaWriter>
<!-- Properties defined here will override any properties defined in conf/MediaWriter.xml for any MediaWriter loaded by this applications -->
<Properties>
</Properties>
</MediaWriter>
<LiveStreamPacketizer>
<!-- Properties defined here will override any properties defined in conf/LiveStreamPacketizers.xml for any LiveStreamPacketizers loaded by this applications -->
<Properties>
</Properties>
</LiveStreamPacketizer>
<HTTPStreamer>
<!-- Properties defined here will override any properties defined in conf/HTTPStreamers.xml for any HTTPStreamer loaded by this applications -->
<Properties>
</Properties>
</HTTPStreamer>
<Manager>
<!-- Properties defined are used by the Manager -->
<Properties>
</Properties>
</StreamRecorder>
<Modules>
<Module>
<Name>base</Name>
<Description>Base</Description>
<Class>com.wowza.wms.module.ModuleCore</Class>
</Module>
<Module>
<Name>logging</Name>
<Description>Client Logging</Description>
<Class>com.wowza.wms.module.ModuleClientLogging</Class>
</Module>
<Module>
<Name>flvplayback</Name>
<Description>FLVPlayback</Description>
<Class>com.wowza.wms.module.ModuleFLVPlayback</Class>
</Module>
</Modules>
<!-- Properties defined here will be added to the IApplication.getProperties() and IApplicationInstance.getProperties() collections -->
<Properties>
</Properties>
</Application>
And this is my Server.xml File:
<?xml version="1.0" encoding="UTF-8"?>
<Root version="2">
<Server>
<Name>Wowza Streaming Engine</Name>
<Description>Wowza Streaming Engine is robust, customizable, and scalable server software that powers reliable streaming of high-quality video and audio to any device, anywhere.</Description>
<RESTInterface>
<Enable>true</Enable>
<IPAddress>*</IPAddress>
<Port>8087</Port>
<!-- none, basic, digest, remotehttp, digestfile -->
<AuthenticationMethod>digest</AuthenticationMethod>
<DiagnosticURLEnable>true</DiagnosticURLEnable>
<SSLConfig>
<Enable>false</Enable>
<KeyStorePath></KeyStorePath>
<KeyStorePassword></KeyStorePassword>
<KeyStoreType>JKS</KeyStoreType>
<SSLProtocol>TLS</SSLProtocol>
<Algorithm>SunX509</Algorithm>
<CipherSuites></CipherSuites>
<Protocols></Protocols>
</SSLConfig>
<IPWhiteList>*</IPWhiteList>
<IPBlackList></IPBlackList>
<EnableXMLFile>false</EnableXMLFile>
<DocumentationServerEnable>true</DocumentationServerEnable>
<DocumentationServerPort>8089</DocumentationServerPort>
<!-- none, basic, digest, remotehttp, digestfile -->
<DocumentationServerAuthenticationMethod>digest</DocumentationServerAuthenticationMethod>
<Properties>
</Properties>
</RESTInterface>
<CommandInterface>
<HostPort>
<ProcessorCount>${com.wowza.wms.TuningAuto}</ProcessorCount>
<IpAddress>*</IpAddress>
<Port>8083</Port>
</HostPort>
</CommandInterface>
<AdminInterface>
<!-- Objects exposed through JMX interface: Server, VHost, VHostItem, Application, ApplicationInstance, MediaCaster, Module, Client, MediaStream, SharedObject, Acceptor, IdleWorker -->
<ObjectList>Server,VHost,VHostItem,Application,ApplicationInstance,MediaCaster,Module,IdleWorker</ObjectList>
</AdminInterface>
<Stats>
<Enable>true</Enable>
<Properties>
<Property>
<Name>statsManagerDebugEnable</Name>
<Value>false</Value>
<Type>Boolean</Type>
</Property>
<Property>
<Name>statsDatabaseManagerDebugEnable</Name>
<Value>false</Value>
<Type>Boolean</Type>
</Property>
</Properties>
</Stats>
<!-- JMXUrl: service:jmx:rmi://localhost:8084/jndi/rmi://localhost:8085/jmxrmi -->
<JMXRemoteConfiguration>
<Enable>false</Enable>
<IpAddress>${com.wowza.amazonaws.ec2.AWSEC2_METADATA_PUBLIC_IPV4}</IpAddress>
<!--changed for default Amazon cloud install. <IpAddress>localhost</IpAddress>-->
<!-- set to localhost or internal ip address if behind NAT -->
<RMIServerHostName>${com.wowza.amazonaws.ec2.AWSEC2_METADATA_PUBLIC_HOSTNAME}</RMIServerHostName>
<!--changed for default Amazon cloud install. <RMIServerHostName>localhost</RMIServerHostName>-->
<!-- set to external ip address or domain name if behind NAT -->
<RMIConnectionPort>8084</RMIConnectionPort>
<RMIRegistryPort>8085</RMIRegistryPort>
<Authenticate>true</Authenticate>
<PasswordFile>${com.wowza.wms.ConfigHome}/conf/jmxremote.password</PasswordFile>
<AccessFile>${com.wowza.wms.ConfigHome}/conf/jmxremote.access</AccessFile>
<SSLSecure>false</SSLSecure>
</JMXRemoteConfiguration>
<UserAgents>Shockwave Flash|CFNetwork|MacNetwork/1.0 (Macintosh)</UserAgents>
<Streams>
<DefaultStreamPrefix>mp4</DefaultStreamPrefix>
</Streams>
<ServerListeners>
<ServerListener>
<BaseClass>com.wowza.wms.plugin.amazonaws.ec2.env.ServerListenerEC2Variables</BaseClass>
</ServerListener>
<!--changed for default Amazon cloud install. -->
<ServerListener>
<BaseClass>com.wowza.wms.mediacache.impl.MediaCacheServerListener</BaseClass>
</ServerListener>
<!--
<ServerListener>
<BaseClass>com.wowza.wms.plugin.loadbalancer.ServerListenerLoadBalancerListener</BaseClass>
</ServerListener>
-->
<!--
<ServerListener>
<BaseClass>com.wowza.wms.plugin.loadbalancer.ServerListenerLoadBalancerSender</BaseClass>
</ServerListener>
-->
</ServerListeners>
<VHostListeners>
<!--
<VHostListener>
<BaseClass></BaseClass>
</VHostListener>
-->
</VHostListeners>
<HandlerThreadPool>
<PoolSize>${com.wowza.wms.TuningAuto}</PoolSize>
</HandlerThreadPool>
<TransportThreadPool>
<PoolSize>${com.wowza.wms.TuningAuto}</PoolSize>
</TransportThreadPool>
<RTP>
<DatagramStartingPort>6970</DatagramStartingPort>
<DatagramPortSharing>false</DatagramPortSharing>
</RTP>
<Manager>
<!-- Properties defined are used by the Manager -->
<Properties>
</Properties>
</Manager>
<Transcoder>
<PluginPaths>
<QuickSync></QuickSync>
</PluginPaths>
</Transcoder>
<!-- Properties defined here will be added to the IServer.getProperties() collection -->
<Properties>
</Properties>
</Server>
</Root>