Wowza Community

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

  1. No need to use PushPublishRTMPAuthProviderAdobe actually. This is really interesting. Not working but could be useful …

  2. Ok.

  3. Thx.

Oups, seems to also have an issue with FMLE. Will investigate on this and let you know …

EDIT: Need to specify encoder IP address on HW side. My bad …

1/ Ok, it works now with Highwinds. With or without authentication. Credentials are set directly in stream name, using pattern [XXX]?encoderuser=[XXX]&encoderpassword=[XXX].

2/ @dptekco @rrlanham: This works:

publishers.put(stream, publisher1);

publishers.put(stream, publisher2);

But when publishers.remove(stream) is called, I still have these lines:

PushPublisher#IdleHandler.onIdle: validate

PushPublisher#PingResult.onResult: true

PushPublisher: ping OK

Guess WMS is still connected to one destination. Actually, this is not clear to me:

synchronized(publishers)

{

PushPublisherRTMP publisher = publishers.remove(stream);

if (publisher != null)

publisher.disconnect();

}

If I put several publishers, how can I disconnect them all ??

Thank you.

Up … (Never thought I would have to say that on WMS forums one day …)

Using Push Publishing Addon, can I push 1 stream to 2 destinations ?

Thank you Richard.

@Austin: The previous pages explain how to use this for Highwinds. Please read them …

Try:

publisher.setHostname(“fli003.dc1.hwcdn.net”);

publisher.setPort(1935);

publisher.setDstApplicationName(“zzz”);

publisher.setDstStreamName(“fli/444444-test2?encoderuser=user**&**encoderpassword=password”);

Weird. This is exactly how I used Highwinds last month and it worked.

Easy Charlie, I’m not complaining, just trying to help Austin.

No issue here with push and Highwinds …

Austin, what you need to know is not so far (Page 5) starting here.

You need to set encoder IP address on HW side, no need to use PushPublishRTMPAuthProviderAdobe, credentials are set in stream name and finally don’t forget ampersand …

Would it be possible to have the logging configured in such a way as to have the category of “pushPublish” rather than INFO server comment. If you were to change that then we wold be able to use something like

pushPublish appender

log4j.appender.pushPublish=org.apache.log4j.DailyRollingFileAppender

log4j.appender.pushPublish.DatePattern=’.'yyyy-MM-dd

log4j.appender.pushPublish.File=${com.wowza.wms.ConfigHome}/logs/wowzamediaserver_pushPublish.log

log4j.appender.pushPublish.layout=com.wowza.wms.logging.ECLFPatternLayout

log4j.appender.pushPublish.layout.Fields=date,time,tz,x-event,x-category,x-severity,x-status,x-ctx,x-comment

log4j.appender.pushPublish.layout.OutputHeader=true

log4j.appender.pushPublish.layout.QuoteFields=false

log4j.appender.pushPublish.layout.Delimeter=tab

log4j.appender.pushPublish.layout.CategoryInclude=pushPublish

etc. Unless there is another way with log4j magic?

Thanks, Joe

To see published streams in JConsole you have to add IMediaStream to /conf/Server.xml /AdminInterface /ObjectList

Richard

I have done that and new tree item MediaStream appears, still no status or info for published streams

Two questions:

  1. What is the recommended way to configure multiple publishers for a single stream?

Should the publishers all be configured in the : onPublish -> synchronized(publishers) {} block? How would this be done because won’t publishers.put(), publishers.remove() only allow one unique stream in the collection?

i.e. this won’t work right?

publishers.put(stream, publisher1);

publishers.put(stream, publisher2);

  1. What is the recommended back-off implementation mentioned earlier in this thread to stagger publisher connections?

Thanks!

We haven’t had a chance to breakout the IDE and a test environment to try this yet. We just got a copy of the package and I was reviewing the sample for our use case, and noticed the possible issue.

Hi,

We are trying to use this module to push a stream to a destination that takes the form:

rtmp://(IP address]:1935/[app name]/[stream name] or

rtmp://(IP address]:1935/[app name]?[parameter list]/[stream name]

We try to achieve this with this bit of code:

// Destination stream

publisher.setHostname("[IP address]");

publisher.setPort(1935);

publisher.setDstApplicationName("[app name](?[parameter list])");

publisher.setDstStreamName("[stream name]");

It seems that doing so the module inserts an additional level definst to make the final URL: rtmp://(IP address]:1935/[app name](?[parameter list])/definst/[stream name].

Is it possible to not have this level automatically inserted? And if so, how should we modify the destination stream definition to do so?

Two further questions would be:

  • is there a maximum length that the application or stream name can have, and

  • can push-publish handle a parameter list preceded by a question mark

    Thanks,

    Peter

Hi Peter,

I have the module working with BitGravity, they don’t allow to transmit from this module to the Production origin.

If you need support please contact me.

Regards,

Alejandro

www.wmconsulting.info

Peter,

The BG guys, in my case don’t allow to transmit to the Principal Origin, they disconnect me, I have talking with them and they are changed my Origin URL to uno PREWIEV Origin, this way works much better.

Possible you can have a similar issue, talk with them about your needs, they have a very good support too.

Regards,

Ale

Hi Austin, I have the module working with bitGravity, I can try to modify for use Highwinds, but i don’t have one account, contact me in private if you can give me one account for test.

Regards,

Ale

wmconsulting.info

Thanks Charlie,

I have the same issue… I have made a workarround using the /etc/hosts file into my linux system this way never need go to DNS but of course this workarround is horrible…

Regards,

Ale