Name is required.
Email address is required.
Invalid email address
Answer is required.
Exceeding max length of 5KB

Cloudfront HTTP pseudostreaming & seeking => HTTP 1.1 headers?


Because to my question:
"Which CDN is the best (value for money) for HTTP-pseudo streaming?
I was planning to use CloudFront (my application is running on EC2) but it seems not to support HTTP-pseudo streaming... :-/"

Someone answered:
"I can confirm that Amazon S3 and CloudFront offers HTTP 1.1 protocol support in our application. This delivers byte-range seeking over HTTP if your player/client are sending the HTTP 1.1 headers. You can confirm this by pressing Ctrl+U in Windows Media Player and entering a supported video formatted URL for playback. You will find that you can skip around the video with no issues."

The question is now:
"How do we send the HTTP 1.1 headers using Jwplayer?"

PS: Note that I'm currently embedding the player using JW Embedder and dynamic bitrate switching, something like:

bc.. jwplayer("player").setup({
flashplayer: "/player.swf",
width: 624,
height: 351,
levels: [
{ bitrate: 288, height: 180, file: "http://a1234bcde5fg6h.cloudfront.net/70_180.mp4"},
{ bitrate: 777, height: 360, file: "http://a1234bcde5fg6h.cloudfront.net/70_360.mp4"},
],
});

15 Community Answers

JeroenW

JW Player Support Agent  
0 rated :

There’s a difference between Flash and HTML5 here:

  • For Flash, you indeed need servers that support a dedicated “pseudostreaming” querystring parameter. This because Flash has no HTTP 1.1 range-request support.
  • For HTML5, HTTP 1.1 range requests are supported by all browsers, including iOS and Android. Pseudostreaming is basically working from any server.

Various CDN’s (like Edgecast, Limelight and NetDNA) support Flash pseudostreaming. They’re all fairly cheap, but not as easy to get started and including other cloud services like Cloudfront.

For Cloudfront + JWPlayer, what you could do is use HTTP for HTML5 streaming and RTMP for Flash streaming. Cloudfront supports both, and you can connect multiple distributions to a single S3 bucket. Here’s a tutorial on how to set RTMP Flash and HTTP HTML5 with Cloudfront and JW Player:

http://www.longtailvideo.com/support/jw-player/jw-player-for-flash-v5/49/using-cloudfront

JW Player

User  
0 rated :

Hi JeroenW,

Thank you for your reply, it's very informative.

CloudFront supports byte-range requests through the "Accept-Range" HTTP 1.1 header.

Is there any chance to get this included so pseudo-streaming on CloudFront can start working? See here for more information: https://forums.aws.amazon.com/thread.jspa?threadID=70053

Cheers,
Nick

JeroenW

JW Player Support Agent  
0 rated :

CloudFront indeed supports range requests, and as stated above this works great in HTML5 (iOS/Android/Chrome/IE/Safari if you have MP4 files).

Unfortunately, the Flash plugin does not support range requests, which is why the “Pseudo streaming” feature I talked above is frequently used in Flash. There’s no way to work around it.

JW Player

User  
0 rated :

Thanks for your response JeroenW.

JWPlayer can do Flash pseudo-streaming with other CDNs, such as Akamai. Do I have this right by saying Akamai is accepting a special (and perhaps non-standard) "dedicated pseudostreaming query string parameter" and CloudFront isn't? If that's the case, what is this parameter that CloudFront needs to accept? It is probably trivial for them to apply.

Essentially in all my research I've never read, technically, how CloudFront doesn't support it.

Thanks again!

JeroenW

JW Player Support Agent  
0 rated :

That’s correct. Some CDNs support this feature and others don’t. CloudFront indeed does not. They will also likely not implement it, since it’s not a trivial update. Their servers then need to be able to parse MP4 MOOV atoms to map time positions to byte ranges and glue a custom MOOV + MDAT section together.

JW Player

User  
0 rated :

JeroenW, do you happen to know what is that special "dedicated pseudostreaming query string parameter" that Akamai uses, and how can I set it up on my JW Player configuration for Flash pseudostreaming?

JeroenW

JW Player Support Agent  
-1 rated :

I don’t think Akamai (and ClouFront) support pseudostreaming. Only Limelight, Edgecast and Bitgravity AFAIK.

JW Player

User  
0 rated :

CloudFront absolutely supports pseudostreaming using byte-range. In our company, we are using Flowplayer & Pseudostreaming plug-in, with CloudFront (set to progressive) CDN and it works flawlessly.

JeroenW

JW Player Support Agent  
0 rated :

Let me clarify: Cloudfront does not support Pseudo-streaming using a querystring parameter (for Flash). They do support it using byte-ranges (for HTML5) indeed.

JW Player

User  
0 rated :

@Nir Azuelos ,can you help me , how to configure in flowplayer & pseudostreaming plugin with cloudfront
I have flowplayer and plugin and cloudfront mp4 video, But not get real pseudostream like htm5 player
let me guide configure setting use in flowplayer + plugin ?(if possible)

Ethan Feldman

JW Player Support Agent  
0 rated :

This is not a forum for Flowplayer…

JW Player

User  
0 rated :

can you share me or guide to how to cloudfront video ( i.e mp4 or flv) work for jw as http pseudostreaming ?

Ethan Feldman

JW Player Support Agent  
0 rated :

http://www.longtailvideo.com/support/jw-player/jw-player-for-flash-v5/12534/video-delivery-http-pseudo-streaming

http://www.longtailvideo.com/support/jw-player/jw-player-for-flash-v5/49/using-cloudfront

JW Player

User  
0 rated :

Thank you for your reply ,In HTM5 player pseudostreaming working well
But in flash plugin its not work well as pseudostreaming by http
Can you suggest me how to achieve this feature in jw flash ?

Ethan Feldman

JW Player Support Agent  
0 rated :

Link ?

This question has received the maximum number of answers.