Wowza cannot access Media Engine Api

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>

Hi,

Try setting your host address to include /v2 in the URL.

'WOWZA_HOST'=>'http://35.158.34.28:8087/2',

Also, you have set digest authentication on your server, but I don’t see where you are enabling digest auth in your PHP configuration. Please try setting this to none.

<AuthenticationMethod>none</AuthenticationMethod>

Michelle

  1. $setup =new \Com\Wowza\Entities\Application\Helpers\Settings();
  2. $setup->setHost($host);
  3. $setup->setUsername($username);
  4. $setup->setPassword($password);

He’s using the php library for REST api for WOWZA, in which, it has auth digest enabled by default when initializing $setup = new \Com\Wowza\Entities\Application\Helpers\Settings();

He also sets up the username and password, so changing the auth to None is not the solution, since you’ll open your REST web server for anybody.

I’m having the same issue when using their library. After setting up the credentials, it still says unable to connect.