video

Публикация видео из флэш плеера с кодеком H.264

Ну вот дошли руки попробовать публикацию с кодеком H.264

Тема гуглится, но до конца, пошагово, нигде толком не описано. Поэтому пишу тут:

Потребители видео

Ну вот, наконец, видео доставлено некоему клиенту, который готов его воспроизводить. Что это может быть за клиент? Рассмотрим в этой роли флэш плеер, html5 с тегом <video>, iPhone/iPad и другие мобильники.

Content Delivery Network

CDN -- это сеть серверов, предназначенная для быстрой доставки контента большому числу пользователей. Состоит из связанных друг с другом серверов, географически расположенных в разных местах. Это позволяет равномерно распределить нагрузку между серверами, и отдавать пользователю данные с ближайшего к нему сервера.

Краткий обзор возможностей медиа серверов

Медиа сервера, как это ни странно, несколько отличаются друг от друга. Отличаются производительностью, надежностью, количеством поддерживаемых форматов видео, способностью объединяться в сети. Ну и, конечно, ценой.

Их существует не так уж и мало, но мы рассмотрим только 4. Это будет широко известная тройка -- FMS, Wowza, Red5, и пока мало известный новичок -- Erlyvideo.

Мультибитрэйт

Мультибитрейт, или Adaptive Bit Rate -- это технология, позволяющая передавать пользователю видео, адаптирующееся под его ширину канала.

Итак, чтобы видео у пользователя воспроизводилось без задержек, нужно отдавать ему данные, закодированные с разным битрейтом, разным разрешением и другими настройками в зависимости от ширины канала пользователя. Причем желательно реагировать на изменения этой ширины канала, и переключать пользователя на поток с соотвествующим битрейтом.

UDP, MPEG-TS, RTSP

UDP

Быстрый протокол без лишних накладных расходов, что отличает его от протоколов, основанных на TCP. Цена этой быстроты и легкости такова, что доставка данных не гарантируется, часть пакетов может пропадать.

К сожалению, из-за характера работы кодеков -- наличия I и P кадров, потеря даже небольшой части информации может привести к проблемам. Напомню, что I-кадр -- ключевой, и содержит целую картинку. А P-кадр, промежуточный, и содержит только изменившуюся информацию относительно предыдущего кадра.

RTMP

Для более эффективной работы с видео нужен узкоспециализированный протокол, разработанный специально для передачи больших объемов данных в реальном времени.

В чем принципиальная разница между веб-сервером и медиа сервером? Медиа сервер держит постоянное двустороннее соединение с клиентом. Веб сервер обслуживает каждый HTTP-запрос отдельно. Медиа сервер хранит видео данные в оперативной памяти и выдает всем клиентам. Веб сервер по каждому запросу открывает файл, читает данные, отдает клиенту и закрывает файл. Для следующего запроса повторяет все заново.

HTTP

Думаю не ошибусь, если скажу, что в нынешние времена веб-программирование занимает львиную долю всего программирования, а HTTP это кровь и нервы веба.

Использование HTTP дает много преимуществ:

Протоколы передачи видео

Теперь, когда видео закодировано и упаковано в контейнер, его можно хранить и доставлять пользователю. А доставлять можно по разному. И вот мы подошли к протоколам передачи данных.

Рассмотрим HTTP, RTMP и его разновидности, UDP, MPEG-TS и RTSP. Понятно, что на этом список не исчерпывается, но это самые актуальные на сегодняшний день протоколы.

Тулы для транскодирования и перепаковки видео

Нередко бывает так, что имеющийся формат видео чем-то не устраивает, или нужно иметь одно и то же видео в нескольких форматах -- сжатое разными кодеками, с разным битрейтом, с разным разрешением, упакованное в разные контейнеры.

Часто говорят о перекодировании или конвертировании видео, хотя это не точное понятие. Если нужно перекодировать видео другим кодеком, то это правильнее называть транскодированием. А если нужно переложить видео из одного контейнера в другой, оставив без изменения закодированные данные, то это называют перепаковкой.

Pages

Subscribe to RSS - video