Comments 10
Будьте аккуратны, если используете проксирование траффика в nginx: может так получиться, что в кэш попадёт файл, который запрашивали с Range заголовком, а потом он будет отдаваться клиентам.
Организовывать HTTPшную отдачу, но при этом обязывать клиента ходить к нестандартному порту… Уж лучше по rtmp отдавать тогда — старт и перемотка быстрее. Да и алгоритм докачки очередной порции видео довольно странный, посмотрите как реализации html5 video в браузерах запрашивают куски видеофайла, они ориентируются по ключевым кадрам.
Ну а про проблемы html5 video (отдача по заголовку Range:) и http pseudo streaming (через параметры GET-запроса) давно известно — невозможность нормального кэширования на промежуточных серверах и у клиента. Единственный случай, когда такие варианты работают хорошо, это в случае стримминга файлов напрямую с сервера-хранилища, тогда блочный файловый кэш справляется неплохо.
Послушайте тов. erlyvideo, используйте HTTP Live Streaming (HLS) внутри флэша, а многие мобильные устройства его и без флэша понимают
Ну а про проблемы html5 video (отдача по заголовку Range:) и http pseudo streaming (через параметры GET-запроса) давно известно — невозможность нормального кэширования на промежуточных серверах и у клиента. Единственный случай, когда такие варианты работают хорошо, это в случае стримминга файлов напрямую с сервера-хранилища, тогда блочный файловый кэш справляется неплохо.
Послушайте тов. erlyvideo, используйте HTTP Live Streaming (HLS) внутри флэша, а многие мобильные устройства его и без флэша понимают
843 порт это стандартный порт для отдачи политики безопасности сокета при кроссдоменом доступе и и объект flash'а Socket запрашивает политику автоматически при соединении. И задача была реализовать без использования медиа-серверов тем более платных.
Для отдачи HLS совершенно необязательно использовать медиасервер, подготавливайте и храните контент в соответствующем формате, а отдается он любым HTTP-сервером как обычные файлы. Бесплатных сегментеров для HLS достаточно, а с конвертированием (ремуксом, вернее) видео в MPEG-TS отлично справляется ffmpeg. Минус там только один — на андроид 2.х придется проигрывать через флэш, т.к. нативная поддержка HLS есть только начиная с 3его андроида.
Почему не рассмотрели как вариант HDS?
Я так понимаю по данной схеме будет невозможен preload видео — когда у пользователя слабое интернет-соединение и он жмет паузу чтобы подгрузить видео для комфортного просмотра. Почему нельзя просто ограничить скорость отдачи видео в nginx?
Возможно, у нас реализован хитрый алгоритм диагностики канала и плеер автоматом переключается между режимами загрузки поток или дискретный, но это уже подпадает под корпоративную тайну и я не могу про него написать.
У нас в nginx скорость была ограничена но при большом количестве коннектов это не помогает.
Sign up to leave a comment.
Оптимизация псевдостриминга FLV-видео