Wowza Community

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

I should rephrase my question. I want to inject data into the outgoing stream from the module. What’s the best way to do that?

I used stream.send instead but looking at the tcpdump captures the data never makes it out of wowza. Is this a side effect of how the push addon works? I want to send data to the CDN and it’s connected clients. Not local clients.

Try stream.sendDirect.

Charlie

That didn’t work either.

Wowza Media Server 2 for Amazon EC2 2.2.3 build26454

I know there is a newer version of the push plugin. Does that contain any changes regarding sending data?

Updating the plugin did not help.

Can someone please confirm that sending data to the outgoing CDN stream does infact work? As I’m not able to produce those results what so ever.

Shouldn’t the outgoing packet dumps at least contain the contents regardless of if the CDN accepts it or not?

From my perception all that has been stated thus far is how you can inject data. There has been no confirmation that the method described actually works WITH pushing to a CDN (any cdn). So before I proceed down the rabbit hole of posting code and such I want confirmation that this actually works.

Hi,

I’ve installed it on an EC2 machine for which we have the EC2 WOWZA subscription, but I still get a License exception error. Can this not be used on EC2 or is some set-up or release required?

WowzaMediaServer-2.0.0.04-i386 (ami-a5d8f3d1)

Looking at it, it seems it not the latest version, might that be the problem?

Hi,

I’ve got the system working where I can send a stream from Wirecast to WOWZA and use the AddOn to push it into BitGravity.

Now what I would truly need is to be able to do the same with a playlist, which obviously is not pushed to a WOWZA server, so there is no onPublish event to get the Push activated.

How can this be set up to work as well?

Hi,

Have been playing around with it a bit more trying to get it to push a SMIL generated playlist into BitGravity, but so far have not had any luck. I see from the code that the push is initiated on an OnPublish event, while the play list is basically a VOD type and thus does not create one of these.

I’ve tried to use both Stream Manager and RTP Push to see if by picking up a stream and forcing a broadcast this would generate the required OnPublish, but have not been successful with that as yet. Either because it can’t be done that way, or I have not found the right way of doing this.

Is it at all possible to use the PushPublish AddOn with a playlist. If so, what would be the way to set that up? Is there a different trigger that can be used to pick up the playlist and start PushPublishing it (something OnAppStart or so?). Or is there a way to generate an OnPublish event from a playlist by doing something similar to Stream Manager or using StartUpStreams.xml in some form?

I’ve also tried using ffmpeg to pick up the playlist and then send it back to an application, and while this works it does result in an error message similar to wha DenisC posted earlier in this thread:

INFO server comment - PushPublisher#IdleHandler.onIdle: validate

INFO server comment - PushPublisher#PingResult.onResult: false

INFO server comment - PushPublisher: ping OK

whereas a successful PushPublish to BG (by streaming Wirecast to the app, did give the PingResult.onResult: true and did get into BG, so maybe it does not like something ffmpeg sends out.

Any pointers on whether what I am trying to do is possible at all and if so, to what would be the way to do it would be much appreciated.

Also if there is a way, but one that requires, some proper development work, we would be willing to compensate for this as getting this to work in some form or another is very important to our broadcast set-up. In those cases please contact me by private message or directly at peterb@wildearth.tv

Hi Alejandro,

It does seem to work now (to our production ingest server on BG). I think yesterday the problem was sending too high a bit rate. (We want to work at 5 Mbps) to BG which causes a temporary blockage of some sort. It’s been running fine from a play list for over an hour now, although admittedly at only 200-300 kbps, but it works in principle, now to see how far we can push it.

Hi Richard,

I’d like to reply to your questions as I’m working with Peter on this problem.

I was wondering - if we can’t exclude Instance Name from the URL, how does Push Publishing work for CDNs which don’t allow nested paths (I think all of them except BitGravity?). Surely they all don’t handle definst in the path?

Is there a way to modify the code, so when we manually set Instance to “”, it’s not included in the final URL (we get two slashes // at the moment).

To give you an example, this is what our URL given to us looks like:

URL: rtmp://webcam.foo.com/videolive?myvalues=ns%2Cid%2Cstart%2Citag&itag=26&ipbits=0&start=2299204761&key=ny_qc&signature=BDA473CE607AF9A12621A27F5645B9065B38AD46.462A43DF08C340FB02B4BB18C618C7F63F2125CC&ns=xp-live&id=RNY6fqSstYY

Stream name: xp-live_RNP9OsSzKDY_39

When I use these values in PushPublish module, the URL shown by Wowza Log is URL/definst/StreamName and the connection is rejected by the server we’re pushing to. I’m thinking it’s because of definst, but could it be something else maybe?

I had a similar problem with ffmpeg pushing to the same server, but the problem there was that the variable used in the code for the URL was 128 bytes, so the URL was cut off. After increasing it to 256 bytes, ffmpeg started working fine. Could there be a similar issue in PushPublish?

Alex

Hi Charlie,

It’s working perfectly, thank you very much!

Alex

Hi again,

I’m trying to put the URL mentioned earlier in Application.xml, so the code doesn’t need to be modified every time the URL changes. However Wowza gives the following error:

loadConfigFile: error parsing application config file: (file:///usr/local/WowzaMediaServer/conf/live/Application.xml) error: org.xml.sax.SAXParseException: The reference to entity “itag” must end with the ‘;’ delimiter.

How should I escape the string, so it’s passed properly to appInstance.getProperties()?

Hi Charlie,

Thanks for that, I’ll give it a shot.

Can I ask another question? PushPublish module is working nicely on on origin servers, which generate onPublish event. How could I get it to work on a liverepeater-edge? In our scenario the origin server is in a remote location, so having more than one connection to or from it is problematic, and I would like to have the edge server do the pushing.

Thanks

Alex

So I can’t use PushPublish to push a repeated stream, I have to go to the origin and get a new stream from there, correct? The idea is to have only one stream from the origin to the edge due to bandwidth limitations.

Ah, now it makes sense, thank you.

I’m now trying to push to UStream and get the following error:

PushPublisher.internalConnect[rtmp://1.6960364.fme.ustream.tv:1935/ustreamVideo/6961364/yfn0Ce4OrYNwkxCGitvYB5SG69dXrWM0]: java.nio.channels.UnresolvedAddressException

This is the code:

publisher.setHostname(“1.6960364.fme.ustream.tv”);

publisher.setPort(1935);

publisher.setDstApplicationName(“ustreamVideo”);

publisher.setDstAppInstanceName(“6961364”);

publisher.setDstStreamName(“yfn0Ce4OrYNwkxCGitvYB5SG69dXrWM0”);

The URL definitely works, and DNS resolves to an IP, could there be something in the module that’s not liking this URL?

Hi,

I was wondering if there any way to set the user agent string when using PushPublish module? What does it use by default?

Regards,

Alex