Life is designed so that showing and processing digital video is always more difficult than digital photos:
- Video content takes up much more space.
- All video manipulations (compression, scaling, transcoding) require immeasurably more resources than photo conversion.
- Due to the larger amount of content, the total video traffic strongly overtakes the traffic of all other resources, and also requires good bandwidth.
Typical video hosting (such as YouTube) allows you to:
- Download video
- Show videos in different sizes / formats
However, to make uploading videos as fast and effective as the photos on Flickr will not work. Hostings never store originals of video, and for its correct display it is necessary to convert the original video (transcode) to other formats: for Flash-players, for mobile phones, for iPhone / Android, etc. This transcoding consumes a lot of CPU time. Therefore, all video hosting sites have the concept of a
queue where uploaded videos are awaiting processing.
The queue processing speed is determined by how many processor resources the hosting has. Do not be surprised if during peak periods the video will have to wait several hours.
An approximate scheme of hosting operation may look like this:
')

Here is what we conditionally call the
backend , i.e. everything that is not visible to the user.
- Absolutely necessary thing are still images (they are thumbnails) - they are present in almost every link to the video.
- Often, during video processing, an intermediate format is used, which is convenient to transfer to multiple transcoder processes at once.
- The video can be stored both on your own hosting servers and in the CDN (Content Delivery Network). Large hosting companies use all possible storage options at the same time. Remember that traffic is money, and video traffic is VERY big money!
There are several basic ways to deliver video to users:

- Transfer via HTTP to a Flash application (player) - as a rule, each hosting develops its own player, taking into account its own specifics. It is clear that HTTP is very convenient and cheap to maintain on the server.
- Transfer via HTTP to a browser with HTML5 support (<video> tag) - in this case, a link to the file is explicitly transmitted to the browser, and the (unapproved) HTML5 standard provides the playback functions. Naturally, not all browsers are delighted with the <video> tag.
- Transfer via HTTP to mobile phones and smartphones (iPhone, Android, etc.) - in this case, a direct link to the video file is transmitted to the phone / smartphone. The fact that different devices support completely different codecs and formats (for example, iPhone supports <video>, but only partially) makes it very difficult.
- Transfer via RTMP to a Flash application. This is a more controlled delivery option when using the “streaming” protocol RTMP (TCP), the entire content is not directly available. This option requires much more server resources and significantly more difficult to develop (compared to HTTP). In addition, it is extremely difficult to carry out such delivery from the CDN.
The most simple and minimalistic option 1, where you can use one of the ready-made free players (JWPlayer, FlowPlayer).
So, in order to do video hosting, you will need:
- File servers for storing videos
- Good channel or arrangement with CDN
- Backend - most likely will have to develop from scratch
- Flash-player (to save money, you can take a free).