View Single Post
Old 10-08-2015, 10:14 PM  
JimmyStephans
Confirmed User
 
JimmyStephans's Avatar
 
Industry Role:
Join Date: Mar 2003
Location: Littleton, Colorado. USA
Posts: 558
Jake,

Short on time for all the details now, but you are welcome to contact me directly

I suggest using the Apple designed HLS option. HLS is "HTTP Live Streaming". It can be done very easy from a normal server - by HTTP, not fancy or costly streaming server stuff required.

The basics are this:

It encodes the videos using the H.264 codec in whatever resolutions you select.

I use:

360p at 512k
480p at 1024k
540p at 2048k
720p at 3072k
1080p at 6144k

The end result is one master folder for the video, and 5 sub-folders for the different resolutions / bitrates. The videos in the sub-folders are broken down into 9 second segments, so a 6 minute video may be 40 segments or more. Sounds odd, but read along...

The advantage is that is adopts itself on the fly to the viewers device, screen resolution and bandwidth.

The player doesn't connect directly to a video file. It connects to an index of all those resolutions and segments. When the viewer clicks to play the first two segments are sent from server to player in the highest resolution (1080p in my case) and the video starts, but if the viewer doesn't have 1080p screen size, or the bandwidth to play 6144k perfectly, the system automatically drops down to 720p. And is thats isn't best and smooth for his device / screen / bandwidth is drops to 540p, and on like that.

It can be adjusted - meaning you can tell it to start with 720p and then go up or down depending on what the user can handle. Its automatic to the viewer - he doesn't see the change or have to make any selections.

It also goes back up if his connection / bandwidth improve during the video. This gives the viewer the cleanest video experience for his situation. The HLS player checks his bandwidth every 9 seconds and sends the segments that are best for that particular viewer. It sound weird breaking the video into segments but it doesn't show on screen at all.

It covers all devices. iOS, Android, and all desktop browsers if using an HLS player.

Last month Elevated X upgraded their player to use HLS.

I use the player from JWPlayer. There are several options for players, but not all older Flash based players work.

HLS is HTML5 compliant. Safari (Mac) and Firefox browsers support it without any player - just using the HTML5 video tag.

You select the resolutions you wish to offer and it will go up to 4K (2160p), but not all players do 4K.

Its scalable - meaning you can encode in all resolutions now but not offer them all. Say you have Full HD 1080p originals. Encode in all those sizes, including 1080p, but only offer up to 720p for now but by editing the one index file. The index file is just plain text. Nothing tough at all. Later edit that text file again for each video and you can start streaming higher resolutions without any re-encoding

It can be streamed from devices to a TV if the customer has a Chromecast devices on the TV (max 1080p for this right now).

It works for both recorded videos like you are discussing and live streaming.

Because it is fully HTTP streaming it works on any CDN without extra charge.

KeyCDN, Amazon Cloudfront and CDN77 all offer it for LIVE chat streaming / Live event streaming.

It can be secured - as the format itself includes a root file that limits to certain domains if you wish, and it can serve secure tokens in the player URL so people can't hotlink to the video.

Encoding it a bit different. Not every product creates the segments.

On MAC it is built right into Compressor and there is also a App Store item called something like One-Click HLS.

On Windows I use HLS Encoder from VODOBOX - Votre solution de streaming . Its a frontend for Handbrake / H.264 which works great.

If you have many videos you may wish to consider an online service. Encoding.com does it. For big batches, Amazon is the way to go. Upload the high-res / lightly compressed originals to an S3 bucket, jump over to Amazon's "Elastic Encoder" and set up a job with the bitrates and sizes you want, point it at the S3 bucket containing the originals, click GO and away it flies. Fast, and if you are using Cloudfront it will put the completed files where you say, or if you are using another CDN that pulls from an S3 bucket it will put the files there so your CDN can pull to the network.

Hit me up by email if you have questions. [email protected]
__________________
http://TrueBabes.com/
JimmyStephans is offline   Share thread on Digg Share thread on Twitter Share thread on Reddit Share thread on Facebook Reply With Quote