Как стать автором
Обновить

Как устроен видео-хостинг

Время на прочтение2 мин
Количество просмотров6.1K
Жизнь устроена так, что показывать и обрабатывать цифровое видео всегда сложнее, чем цифровые фото:
  • Видео-контент занимает гораздо больше места.
  • Все манипуляции с видео (сжатие, масштабирование, перекодировка) требуют неизмеримо больше ресурсов, чем преобразование фото.
  • Из-за большего объема контента суммарный видео-трафик сильно перегоняет трафик всех остальных ресурсов, да еще и требует хорошей пропускной способности.
Типичный видео-хостинг (такой, как YouTube) позволяет:
  • Загрузить видео
  • Показать видео в разных размерах/форматах
Однако сделать загрузку видео такой же быстрой и эффектной, как фотографий на Flickr, не получится. Хостинги никогда не хранят оригиналы видео, а для его правильного показа необходимо исходное видео конвертировать (транскодировать) в другие форматы: для Flash-проигрывателей, для мобильных телефонов, для iPhone/Android и т.п. Это транскодирование потребляет очень много процессорного времени. Поэтому у всех видеохостингов есть понятие очереди, где загруженные видео ожидают обработки.

Скорость обработки очереди определяется тем, сколько у хостинга процессорных ресурсов. Не удивляйтесь, если в пиковые периоды видео придется ждать несколько часов.

Приблизительная схема работы хостинга может выглядеть, например, так:

Видео-хостинг

Здесь изображено то, что мы условно называем backend, т.е. все, что пользователю не видно.
  • Совершенно необходимой вещью являются стоп-кадры (они же thumbnails) — они присутствуют почти в каждой ссылке на видео.
  • Часто при обработке видео используется промежуточный формат, который удобно передавать сразу нескольким процессам-транскодерам.
  • Видео может хранится как на собственных серверах хостинга, так и в CDN (Content Delivery Network). Большие хостинги используют все возможные варианты хранения одновременно. Помним, что трафик — это деньги, а видео-трафик — ОЧЕНЬ большие деньги!
Есть несколько основных способов доставки видео пользователям:

Доставка видео пользователю

  1. Передача по HTTP во Flash-приложение (плейер) — как правило, каждый хостинг разрабатывает свой собственный плейер с учетом своей специфики. Понятно, что HTTP очень удобно и дешево поддерживать на сервере.
  2. Передача по HTTP в браузер с поддержкой HTML5 (тега <video>) — в этом случае браузеру в явном виде передается ссылка на файл, а функции проигрывания обеспечивает (неутвержденный) стандарт HTML5. Естественно, далеко не все браузеры в восторге от тега <video>.
  3. Передача по HTTP в мобильные телефоны и смартфоны (iPhone, Android и т.п.) — в этом случае в телефон/смартфон передается прямая ссылка на видео-файл. Сильно затрудняет дело то, что разные устройства поддерживают совершенно разные кодеки и форматы (например, iPhone поддерживает <video>, но лишь частично).
  4. Передача по RTMP в Flash-приложение. Это более управляемый вариант доставки, когда используется «потоковый» протокол RTMP (TCP), сам контент целиком при этом напрямую недоступен. Этот вариант требует гораздо больше серверных ресурсов и существенно сложнее в разработке (по сравнению с HTTP). Кроме того, крайне затруднительно осуществить такую доставку из CDN.
Наиболее прост и минималистичен вариант 1, где можно воспользоваться одним из готовых бесплатных плейеров (JWPlayer, FlowPlayer).

Итак, для того, чтобы сделать видео-хостинг, вам потребуется:
  • Файл-серверы для хранения видео
  • Хороший канал или договоренность с CDN
  • Backend — скорее всего придется разрабатывать с нуля
  • Flash-player (для экономии средств можно взять бесплатный).
Теги:
Хабы:
Всего голосов 22: ↑21 и ↓1+20
Комментарии16

Публикации