Order Now AdSolution Sign Up | Login » Bits on the Run Sign Up | Login »

Forums

/

JW player with HighWinds CDN

36 replies [Last post]

<hi all,
I'm currently using JW player with MP4 in html (progressive download, not true streaming)
Now I can have access to a real stream serveur (http://highwinds.com/) (FMS) and I don't know how to whange my html and xml to enable true streaming (i use chapters in my xml).
On the CDN website, no indication about any rtmp stuff...
hTx

You will have to get the RTMP URL from your service provider. No one can invent or dream that up for you.

ok, thx. i'll try to get that from him.
Thx again

so, the adresse HighWinds gave me is : (he told me it's the same the http one)

rtmp://hwcdn.net/b3b9i6f2/fms/Teaser.mp4.xml

Should I put that in my XML file with the Jw player ?

You should use the http version of the URL:

http://hwcdn.net/b3b9i6f2/fms/Teaser.mp4.xml

This will return a playlist, with the first element pointing to the actual edge that holds the conent:

<smil>
<head>
<meta base="rtmp://69.16.184.164/b3b9i6f2/_definst_" />
</head>
<body>
<video src="mp4:fms/Teaser.mp4?doppl=164314e15ee747c8&amp;dopsig=c04e4ad606f640d9524fd4e5e722b0ec" />
</body>
</smil>

This is an SMIL playlist, which should be supported by the JW player (according to the docs on http://code.jeroenwijering.com/trac/wiki/FlashFormats). If you prefer an XSPF-formatted playlist (also should be supported), just change the extension to:

http://hwcdn.net/b3b9i6f2/fms/Teaser.mp4.xspf

After the player loads and parses the playlist, it should fetch the stream and start playing.

So thx,

I actually have that kind of playlist that rules my JW player

<?xml version="1.0" encoding="UTF-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
<trackList>
<track>
<creator>none</creator>
<title>Mary</title>
<location>http://download.blogotheque.net/SAE2/Noah.mp4</location>
<image>http://download.blogotheque.net/SAE2/player/Noah1.jpg</image>
</track>
<track>
<creator>none</creator>
<title>Five Years Time</title>
<location>http://download.blogotheque.net/SAE2/Noah.mp4</location>
<image>http://download.blogotheque.net/SAE2/player/Noah2.jpg</image>
<meta rel="start">318</meta>
</track>
<track>
<creator>none</creator>
<title>Rocks & Daggers</title>
<location>http://download.blogotheque.net/SAE2/Noah.mp4</location>
<image>http://download.blogotheque.net/SAE2/player/Noah3.jpg</image>
<meta rel="start">570</meta>
</track>
<track>
<creator>none</creator>
<title>Don't Look Back</title>
<location>http://download.blogotheque.net/SAE2/Noah.mp4</location>
<image>http://download.blogotheque.net/SAE2/player/Noah4.jpg</image>
<meta rel="start">900</meta>
</track>
</trackList>
</playlist>

that was with an old http classic server,
now, what should i change in that xml ?

works in flash CS3 with this location :
rtmp://69.16.184.164/b3b9i6f2/mp4:fms/Teaser.mp4
should I just change that in my xml file (instead of m http actual links)

N,

You can't use the IP from the playlist, as the file isn't guaranteed to be on that edge server, and your customers won't receive any load balancing. You must use the playlist. Nested playlists are most likely supported by JW, though I haven't tested it. Simply replace the contents of the location tag with the playlist URL.

thx thx !
Just one more...
rtmp or http link ?

and if I get you, I should use the "rtmp://hwcdn.net/b3b9i6f2/fms/Teaser.mp4.xml" in the location of my xml that rules the JW player ? (so : <location>rtmp://hwcdn.net/b3b9i6f2/fms/Teaser.mp4.xml</location>)

@N@t,

Chris is saying that you should use:

<location>http://hwcdn.net/b3b9i6f2/fms/Teaser.mp4.xml</location>

which is a nested playlist and may not be supported by the JW FLV Media Player. You will have to test it.

@N@t,

I couldn't get the SMIL playlist from here: http://hwcdn.net/b3b9i6f2/fms/Teaser.mp4.xml

<smil>
  <head>
    <meta base="rtmp://69.16.133.164/b3b9i6f2/_definst_" />
  </head>
  <body>
    <video src="mp4:fms/Teaser.mp4?doppl=15c7e0d85d632879&amp;dopsig=23c7ac933d861159c05ba20c92eaa2c5" />
  </body>
</smil>

to work in player code or in the location element of an XSPF playlist.

This does work, but as Chris stated, is not the correct way to request a stream:

  streamer:             'rtmp://69.16.133.164/b3b9i6f2/_definst_',
  file:                       encodeURIComponent('mp4:fms/Teaser.mp4?doppl=15c7e0d85d632444&dopsig=e8edfe8650115743f88786ebf6417d94'),
  type:     'video',

If JW does support nesting, it may not be happy with XSPF on the outside and SMIL on the inside. Try using:

<location>http://hwcdn.net/b3b9i6f2/fms/Teaser.mp4.xspf</location>

Which should return an XSPF-formatted playlist.

<?xml version="1.0" encoding="UTF-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
<trackList>
<track>
<location>rtmp://69.16.184.154/b3b9i6f2/_definst_</location><identifier>mp4:fms/Teaser.mp4?doppl=1b455d7553e18271&amp;dopsig=056f202382a51e345b30e3779d247153</identifier><meta rel="type">rtmp</meta> </track>
</trackList>
</playlist>

@Chris,

The problem is that we need two values:

1) The streamer flashvar value, which is the URL to the stream [application & instance (if used)] and is global (only used once in the player code),

2) the file flashvar value, which is the path/filename, with/without an extension (the identifier element in your XSPF playlist example).

The only way that I can see to do this, especially if the RTMP URL is changing, is to request the playlist through a page generation/proxy script on the server, then use the RTMP URL and the file (the identifier element in your XSPF example) to instantiate/re-instantiate the player with the new values, especially the streamer value. This could also be done with AJAX, but we will still have to re-instantiate the player if the RTMP URL has changed.

so thanks guys...

I've tried all you sugested
the only thing that work is
<track>
<creator>none</creator>
<title>Five Years Time</title>
<location>rtmp://69.16.188.157/b3b9i6f2/mp4:fms/Noah.mp4</location>
<image>http://download.blogotheque.net/SAE2/player/Noah2.jpg</image>
<meta rel="start">318</meta>
<meta rel="type">rtmp</meta>
</track>

is that a problem ;-) ?
the just problem for my is that the timeline of the player seems nuts (i use chapters)

N@t

Unfortunately, while that will work for your test, it won't work for general deployment. The reason is that the CDN consists of a number of servers, each with their own IP address. These servers are clustered into 7 CDN POPs throughout the US and Europe, and are augmented by 15 additional network-only POPs. The front-end load balancing system uses an anycasted address, so you hit the closest server to you (based on hop count) via HTTP and get back a playlist that contains an IP address of an edge server. The address chosen is based on a number of factors. 69.16.188.157 is in Amsterdam, so if you use that in your playlist then only that one server in that one POP will ever be hit. You'll loose all load balancing and there is no guarantee that the file will remain on any given edge server indefinitely. I may remain on the CDN but disappear from that particular server at any time.

I would recommend using something like PHP or Perl to make a call out one or more playlist URLs via HTTP, parse the playlists, and use the addresses from those playlists to generate your master playlist. As long as you use these addresses immediately (you can't pre-generate these lists), then you should be fine.

Also note that if the JW player supports HTTP redirection you can drop your images into the CDS folder (instead of FMS) and serve those off of the CDN as well.

Good luck.

@Chris,

So if a user had 8 videos, they couldn't put them in one playlist unless the POPs were all the same.

What we really need is to have the streamer flashvar in the playlist, so one playlist could have several POPs, if needed.

Well, you could do that now, by putting the RTMP URL in a meta element of the playlist, but it still means re-instantiating the player if the RTMP URL changes.

Another thought... you really want the client IP to be used, rather than the page source site's IP, so the POP closest to the client is used, rather than the originating site. Right??? That means requesting the SMIL or XSPF playlist on the client and feeding the RTMP URL of the closest POP to the player on the client.

Well, you could, you would just have to pre-resolve 8 links before generating the unified playlist. At least two copies of every file on the CDN are in every POP.

That's a great point about the IP of the originating request -- you're absolutely right. I recall now that we've had some internal discussions on this topic in the past. The right way to address this would be to set up a web service on the server side that could mass-resolve a bunch of URLs all at the same time. I'll talk to engineering about that, but for the moment you would need to do this using AJAX on the client side as you say.

N@t

We updated the JWPlayer to parse Highwinds SMIL files from a playlist

You can send us an email at dev(AT)inwicast.com to get a copy of the player (for free of course)

so tanks Fabrice
I sent you a mail...

Were a lot of changes needed? If not, I can add it to the default player.SMIL support is already in there...

Jeroen,

Yes that would be really great to add HIGHWINDS CDN support to the default player !

The following changes were needed:

- SMIL format is used to point on video but with a .xml extension, so SMIL isn't recognized by the default player
- the SMIL file contains a link to rtmp server and streaming id that have to be parsed and dispatched between "file" and "streamer" variables
- SMIL files within playlist were not supported

We added several files to your source code in order to support highwinds cdn: hwcndparser.as, hwcdnevent.as and hwcdnplaylister.as. But those files could be easily merged into your code (it was easier for us to keep them out for updates).

I will email you the files asap with explanations about the changes that were applied to the original code.

Hello i am trying to do true streaming highwids rtmp links using JW player. can anyone check my set up is correct?? please

This is my javascript code in my html page

<script type='text/javascript' src='swfobject.js'></script>
<script type='text/javascript'>
var s1 = new SWFObject('mediaplayerhw.swf','mediaplayerhw','400','300','9');
s1.addParam('allowfullscreen','true');
s1.addParam('allowscriptaccess','always');
s1.addParam('flashvars','file=http://mywebsite.com/hw-jwplayer/5044-Testing.xml');
s1.write('preview');
</script>

and my xml page is this


<smil>
<head>
<meta base="rtmp://fli001.dc1.hwcdn.net/abcdefg/_definst_"/>
</head><body>
<video src="fls/60000-NewTest?doppl=abcdefg1234&dopsig=1234567890abcdefghijklmnop"/>
</body>
</smil>

and i am getting error most of the time or when i click play button the player dont show me anything.. i think player freezes.. [note: rtmp link is fake]

Did I do something wrong? is my coding wrong?

can someone help me please... thanks in advance

Alwin,

The xml link in file flashvar should be the one provided by striketracker when you select a video in the fms directory. ie "hwcdn.net/.../myvideo.flv.xml". This file should be hosted on hwcdn.net as the server included in the xml file can be different depending on user's location.

For live streaming just pass the .smil file of your live event...

We've sent the source code to jeroen so that the highwinds and we hope that the highwinds support will be soon integrated in the standard player.

First, Thanks Fabrice for your help.

i thought i need to upload the xml file again to my website server.now i got HW generated smil file..
http://hwcdn.net/a5x2c2y4/fls/5044-Testing.smil
let me plugin in javascript and let u know the results.

Any update on Highwinds support for regular player??

Can we get an update on this please? Highwinds is selling off space to other cdns so this will help playback with other cdns that use highwinds service.

Thanks

Cancel that ;)
4.4 trunk currently supports highwinds using "highwinds" as a type.
Did a little searching through the code and the Model was added 2 weeks ago with some fixes to outstanding bugs.
http://developer.longtailvideo.com/trac/browser/trunk/as3/player.swf

I have just tried using both Highwinds and the JW player. I have got it to work with a single file and with a live stream. Highwinds provide links to the files you put on their system using a SMIL playlist. This allows them to load share and edge serve the files.

What I have yet to do is to create a playlist, which I would prefer to be a "nested playlist" ie. a playlist of the individual Highwind URLs (each of which is an SMIL playlist) that I can send to the JW player and that will result in the correct file being played.

Any advice or sample playlists would be appreciated.

Here is a playlist that will work if you replace the "SMIL" links with your own.

<?xml version="1.0" encoding="UTF-8"?>

<playlist version="1" xmlns="http://xspf.org/ns/0/">

<trackList>

<track>

<location>http://hwcdn.net/q9999/fms/Elektra-HighRes.flv.smil</location><meta rel="type">highwinds</meta> </track>

<track>

<location>http://hwcdn.net/q9999/fms/Elektra-HighRes.flv.smil</location><meta rel="type">highwinds</meta> </track>

</trackList>

</playlist>

ie. The Playlist itself needs to have the Flashvars type set. (note the actual link above doesn't work)

I am having the same issue as (CumbriaLive) above. I simply want to create a playlist of the individual Highwind URLs (each of which is an SMIL playlist) that I can send to the JW player and that will result in the correct file being played.

Any advice or sample playlists would be appreciated.

Hi Webdude, the answer is posted above you. Apr24th. it's a single XSPF playlist example with the Highwinds SMIL playlists as the URL/Location, but make sure you include <meta rel="type">highwinds</meta> for each track. It will work fine.

the meta type for highwinds does not seem to work if the stream is URL signed. Is there anything else that needs to be added?

Yes I too would like to know how to get it to work if the URL is signed.

We're investigating

a solution for smil playlist ?

Thanks

We have limited support for SMIL playlists, but we recommend you use MRSS or ATOM.

nvm found the info