The basic situation:
- There are multiple schools connected to a country wide network. (Some thousand schools.)
- We need to deliver e-learning content to them using a network that was created specifically for these schools. There are POPs in different counties, and all of these schools are accessing the internet through these points.
- Big part of the overall network traffic will be educational videos that are uploaded to Vimeo. Smaller part will be images, and finally static HTML/CSS files and REST API calls.
- These videos are embedded into web pages. (Pages representing lessons in online books.) We already have a business Vimeo account that allows us to embed videos into web pages, without displaying advertisements.
- Most schools will teach the same lesson at a given time, so they will need (about the) same videos at the same time.
The total network traffic could be reduced effectively by caching these videos at the POPs. This is especially important, because the total bandwidth is not enough to stream videos to all clients simultaneously, without caching. But I'm not sure how to do this. Using squid would be a very good solution if we could install them separately for every school. Unfortunately, it is not possible. These schools do not have the infrastructure to operate a squid server 24/7, they have very different networks, with different devices and local admins have very different skills. It would probably be better to cache the content at the POPs.
Here are some questions:
- What protocol is used for video streaming nowdays? What I see from the logs is that the player is downloading m4s files (mp4 video segments?) using HTTPS protocol.
- Is it possible to cache these videos transparently? If it uses https then it seems impossible to do (but I might be wrong).
- Can you suggest something that can reduce the required network bandwidth? It might be possible to write a special web page that plays these videos from a cache.
Https is end-to-end encrypted, the caching proxy would have to essentially break tls infrastructure by installing a root certificate on the end-user machines which is highly discouraged.
Is there any reason not to host the videos yourself, allowing you to cache with an actual ssl certificate you own?
With the help of their support, we found a solution. The most cost effective solution is to write a web based video player that uses their direct links. Vimeo provides direct links for low, medium and high quality versions and also for http streaming of all uploaded videos. We will have to create our own video player that downloads these videos through a configurable proxy server. It will take a while to develop a video player like this, but this way we can place the proxies anywhere we want.