Wowza Community

Push Publishing AddOn package to push stream to CDNs and service providers

As a debugging step, try publishing to a Wowza application on the same server or a server on your LAN.


Try adding this call before you start publishing:



Looks right. Do you have a URL to Akamai stream that I can test? If you don’t want to post here, send to Include a link to this thread for reference.


(Deleted mistaken post)

Sounds and looks good. Thanks for the update


Can you connect to that RTMP address? Test with SimpleVideoStreaming.


Take a look at the code they sent, it should handle authentication. You might have to insert credentials.


Are you using MediaCaster stream, an IP camera or mpegts encoder for example? In that case starting the stream in StreamManager replaces starting the encoder.


I can’t tell from what i have been able to read in a couple of 2010 announcements. If you can publish with an RTMP encoder, it can work with PushPublish.


If no authentication was required when you connected to a CDN server with FMLE, try the basic example. See if it just works.


There is a basic example included. To build you need the Wowza IDE


Do you have a very recent copy of the Push Publish addon? If not, re-download it and try it.


You can also involve Akamai, look at logging on their side.


Are you sure re-downloaded the latest Push Pub package and copied the latest jar from that package, and re-started Wowza after adding the jar? And there is new code example in the included javadocs


To integrate an alarm, an email alert for example, you would have to use the PushPublish API. Take a look at the /sample folder in the Push package as a starting place. Then you can add IPushPublisherRTMPNotify interface to detect problems and add email alert. Take a look at this post for an example of using IPushPublisherRTMPNotify


I’m not sure how to integrate external system in JMX. In Wowza you can connect to a database in a notifier (such as IPushPublisherRTMPNotify or IMediaStreamActionNotify3)

Other options are logging directly to a database, but that can be fragile (best to have the database on same machine). Or the log4j UDP appender which is commented out in the /conf/ (I don’t have any info or examples on client for the UDP appender)


Using the PushPublish addon, when I run PushPublish I see a 1st level (under mbeans) branch “PushPublish” which shows the application/app instance/stream name for active push streams when expanded. If you are using the Push API take a look at this guide to expose attributes and methods thru JMX


Is there a chance that one day it could work with Highwinds ?

Ok, it works with single destination and no authentication at all.

Didn’t try multiple destination and authentication yet …

For HW, seems that for authentication to succeed, credentials must be in the streamname using this pattern : [STREAM_NAME]?encoderuser=[XXX]&encoderpassword=[XXX]

When using PushPublishRTMPAuthProviderAdobe with HW, PushPublisher.callConnect adds “?authmod=adobe&user=[XXX]” to stream name.

Result is:

PushPublisher#StreamOnStatus.onCallback…: NetStream.Failed

PushPublisher#StreamOnStatus.onCallback…: NetStream.InvalidArg

Actually, there’s no need to use PushPublishRTMPAuthProviderAdobe with HW:

PushPublisher.callConnect[rtmp://XXX:1935/XXX/definst/XXX?encoderuser=XXX&encoderpassword=XXX]: XXX/definst

PushPublisher#ConnectResult.connect[rtmp://XXX:1935/XXX/definst/XXX?encoderuser=XXX&encoderpassword=XXX]: result: NetConnection.Connect.Success description:Connection succeeded.

But creating stream fails:


PushPublisher#StreamCreateResult.onResult[rtmp://XXX:1935/XXX/definst/XXX?encoderuser=XXX&encoderpassword=XXX]: publishStream:

PushPublisher#StreamOnStatus.onCallback[rtmp://XXX:1935/XXX/definst/XXX?encoderuser=XXX&encoderpassword=XXX]: NetStream.Failed

PushPublisher#StreamOnStatus.onCallback[rtmp://XXX:1935/XXX/definst/XXX?encoderuser=XXX&encoderpassword=XXX]: NetStream.InvalidArg

PushPublisher#StreamOnStatus.onCallback[rtmp://XXX:1935/XXX/definst/XXX?encoderuser=XXX&encoderpassword=XXX]: NetStream.InvalidArg

This works with FMLE: no credentials, streamname using pattern [XXX]?encoderuser=[XXX]&encoderpassword=[XXX].

@DenisC: How could StreamNameAlias resolve the issue ? When using this module, at the end, it will still try to create stream fitting pattern. So I guess it will still fail.

@Charlie: When I stop sending stream with FMLE, I still have these logs every 30s:

PushPublisher#IdleHandler.onIdle: validate

PushPublisher#PingResult.onResult: true

PushPublisher: ping OK


Thx guys!