Video download from Amazon S3 in India takes too much time - amazon-web-services

I am trying to create a video sharing app for only one country (India). My bucket is in the India region. The size of videos will be of approximately 18MB each.
The video download takes too much time (~4mins) to download even via CloudFront. How can I accelerate my S3 download speed?

Apps that play streaming video do not download an entire video file before playing. Rather, they use a video protocol that only downloads a few seconds at a time. Amazon CloudFront can support these protocols, such Adobe's Real-Time Message Protocols and Microsoft Smooth Streaming.
See: How RTMP Distributions Work
Therefore, the time for the actual file to download is not important. Rather, the time to serve the first portion of the video is most important, followed by the ability to continue serving content as fast as the viewer consumes the content.
Connections speeds will, of course, vary depending upon each user's own Internet connection -- therefore, it is best to test the speed of your application's video playing ability from many different ISPs and types of Internet connections.

Related

What is the difference between S3 video storage and streaming?

I'm hosting videos on aws S3 at the moment. I can place the s3 url into the src attribute of my tags and everything works correctly and plays as though the video is being streamed to my site. These are not small videos either. Some are 1gb in size.
I can also immediately jump to the end of the video as though the entire file wasn't downloaded, but just the part I need.
Whenever I google info on streaming on demand video from aws I get answers that I need a service in front of s3 to do something like this. Is aws automatically doing this for me?
S3 support partial GET requests. This allows clients to request only a specific part of the file. Most modern players (including HTML5) are able to utilize this feature to provide the experience you describe to the users.
Quoting from here:
HTTP range requests allow to send only a portion of an HTTP message
from a server to a client. Partial requests are useful for large media
or downloading files with pause and resume functions, for example.

How to design scalable video streaming architecture using GCP?

I have a video streaming application which does streaming the video from google storage bucket. All the files which reside on the storage bucket are not public. Every time when users click on a video from the front-end I am generating a signed URL using API and load into the HTML5 video player.
Problem
I see if the file size is more than 100 MB it takes around 30-40 sec to load the video on front-end.
When I googled to resolved this problem, some of the articles are saying use cloud CDN and storage bucket then cache the file. As far as I know, to cache the file, the file has to publicly available. I can't make files publicly available.
So my concern is, are there any ways where we can make it scalable/ reduce the initial time?
Cloud CDN will help your latency for sure. Also, with that amount of latency it might be good to look into the actual requests that are being sent to Cloud Storage to make sure chunks are being requested and that the whole video file isn't being loaded before starting to play.
Caching the file does not require that the file is public. You can make the file private and add the Cloud CDN service into your Cloud Storage ACLs (https://cloud.google.com/cdn/docs/using-signed-urls#configuring_permissions). Also, as Kolban noted above, signed cookies might be better for your application to streamline the requests.
Not an exact answer but this site is useful to design solution using GCP.
https://gcp.solutions/diagram/media-transcoding
As mentioned earlier, CDN is right way to go for video streaming with low latency.

bandwidth in Amazon AW2 trying to calculate TCO

Trying to work out TCO for Amazon AWS for network what is 400GB upload and download per month comparable to Mbit/s in the network calculator?
You cannot calculate raw network bandwidth (Mbits per second) of the data centre link from average download rate, or vice versa.
The download rate will depend all all sorts of other factors, including end-to-end network latency, raw bandwidth in the entire network path from client to server, network congestion, the ability of the end points to read / write the data from / to disk, etcetera.
Also, you need to decide if you want your download / uploads to happen quickly or slowly. What "user experience" do you want your users to have?

AWS CloudFront vs Youtube - what's the faster way to load videos on a webpage?

I need to include 42 tutorial videos on a single web page, between 30-90 seconds each. I'm currently uploading them to S3 in mov format and including them in the page with the video tag. 6 videos in, the page loads fast enough but the videos take ages to load.
It looks like I have 2 options to speed this up from the research I've done -
1 - Upload the videos to Youtube, load thumbnail images on the website and replace them with the video when the user clicks on the thumbnail image.
2 - Use Amazon CloudFront to deliver the videos to the user.
Which of these is a faster way of delivering videos to the user? Youtube seems to be the cheaper option with the added advantage of allowing the user to stream videos on Youtube but AWS CloudFront seems like a service specially built for this purpose.
I will suggest if you want less complexity and fast setup use You Tube. Even if AWS CF is build for this purpose you will have to create a infrastructure for hosting those videos, which in case of you tube you have to just embed the video using the embed code.
As per costing goes Youtube is less cheaper almost free. If you create Cloud Front for the distribution you have to pay for Storage of the Videos, Data Transfer Cost and many more. You will get a very good speed for youtube videos worldwide. Also you have to create a video player in your application for video streaming which is again more work.

Akamai Integration

I want to use Akamai to store files. I want to know whether Akamai provides any API (e.g. web services) for us to upload, download, list files? Appreciate if anyone could provide some documents for a newbie.
Another question is, if I upload video files to Akamai, does it provide video streaming capability?
Akamai provide an API to allow your customers to download files.
From their web site it is called "Client-side Downloads"
Client-side Downloads offers the ability to offload a significant
portion of edge delivery onto a managed and secure network of clients
- using client-to-client delivery - to provide a lower cost download
solution that respects the clients. Good uses may include software
downloads, patches, and updates, background software and drivers, and
downloadable video and games used by about a thousand or more people.
http://client.akamai.com/misc/demos
Here is further detail on how to interact with their API
http://client.akamai.com/misc/demos/csd-index.html
I was at their presentation the other day and they spoke about a Video Stream product coming out mid to late 2012.
I ran into another company that did video hosting and streaming called Movideo