Erlyvideo v3
-
Upload
guestb9e92a -
Category
Technology
-
view
1.597 -
download
2
description
Transcript of Erlyvideo v3
Erlyvideo —видеостриминг на
erlang
Макс Лапшин[email protected]
http://erlyvideo.org/
Tuesday, April 13, 2010
Телевизор был удобным
• Включил и смотри;• Быстро и удобно переключать каналы.
Tuesday, April 13, 2010
А так ли удобен интернет?
• Как долго стартует просмотр видео в интернете?• Почему такая медленная перемотка по роликам на ютубе?
• На что тратится такая мощь и скорость каналов?• Что выберет ваша бабушка: телевизор Рубин или ютуб?
Tuesday, April 13, 2010
Плата за возможность смотреть то, что хочешь
• Телевизор показывает то, что подготовили для всех;
• Телебашня вещает миллионам одно и то же.
• В интернете выбираем сами;
• Сервер для каждого выполняет персональные действия.
Tuesday, April 13, 2010
Какие проблемы в интернете?
• Большое время открытия видео с сервера;• Сложность алгоритмов сжатия видео;• Невозможность покадровой перемотки;• Чувствительность к потерям данных;
• Неравномерная скорость сети.
Tuesday, April 13, 2010
Все способы трансляции видеов интернете имеют плюсы и
минусы.
Какие?
Tuesday, April 13, 2010
Файлы по HTTP
• Путь, выбранный youtube.com;
• Прекрасное решение для 10-минутных роликов;
• Самые низкие стартовые траты на ПО и аппаратуру;
• Мучительная перемотка;• Неравномерное использование канала;• Непригодность для трансляции прямого эфира.
Tuesday, April 13, 2010
«Бесконечные» файлы по HTTP
• Несложный способ раздачи прямого эфира;
• Проблемы с антивирусами;
• Невозможность отмотки назад (timeshift);
• На паузе можно держать не больше чем позволит жесткий диск;
• Невозможно транслировать видео на сервер с камеры;
• Невозможность контролировать буфер проигрывания.Tuesday, April 13, 2010
RTMP (Adobe streaming)
• Оптимальное использование ширины канала;
• Быстрая перемотка;• Быстрый старт проигрывания;• Возможность видеоконференции.
• Закрытый протокол;• Проблемы с антивирусами;
• Сервер обязан присылать видеокадры в реальном времени.
Real Time Media Protocol
Tuesday, April 13, 2010
Существующий у меня опыт
• Есть успешная реализация RTMP сервера на ObjectiveC;
• Сложности с таймаутами, утечками памяти, многоядерностью;
• Возникло предположение, что многие проблемы — артефакты платформы.
Tuesday, April 13, 2010
Гипотеза об эффективности erlang
Предположение: язык erlang даст сосредоточиться на бизнес-логике.
Результат: erlyvideo — открытый видеостриминговый сервер.
Tuesday, April 13, 2010
Почему именно erlang?
Tuesday, April 13, 2010
Много ядер — много ниток• Языки C++, Java и т.п. дают возможность разрушить приложение одновременным доступом к памяти из разных ниток;
• Ошибка в одной нитке может разрушить остальные.
• В erlang-е существует полная изоляция данных и кода по псевдопроцессам (сотни тысяч в одной программе);
• Ошибка в одном псевдопроцессе не обрушит остальные;
Tuesday, April 13, 2010
Утечки памяти
• Сложность инструментов (valgrind) для нахождения утечек на C;
• Дороговизна полного устранения утечек в программе на С.
• Иная природа утечек памяти в erlang упрощает устранение: оно сводится к локализации и проблемой не является.
Tuesday, April 13, 2010
Горячее обновление кода
• На языках C, Java и т.п. задача обновления кода не решена до конца;
• Отсутствует простой способ обновления кода без отключения клиентов.
• Горячее обновление кода из коробки без усилий программиста даже в работающих процессах;
• Жестко детерминированные точки обновления кода.
Tuesday, April 13, 2010
Параметризация функций
Параметризация по типу входных данных:
• не всегда отражает детали бизнес-логики;• порождает мифы о непригодности ООП.
Параметризация по значениям входных данных:
• ближе к бизнес-логике;• дает удобный синтаксис для работы с бинарными данными.
Tuesday, April 13, 2010
RPC• Задача вызова функций на другом компьютере для семейства языков C за 30 лет не решена до конца;
• Проблемы с передачей объектов, ссылок на них, распределенной сборкой мусора.
• Замена в erlang классических объектов и ссылок на них на процессы, PID-ы которых прозрачно передаются по сети в сообщениях;
• Надежный мониторинг состояния процессов на других нодах.Tuesday, April 13, 2010
Масштабирование по ядрам
• Сложность написания линейно масштабирующуейся по ядрам программы на C из-за синхронизации доступа к общим данным.
• erlang даёт линейное масштабирование по количеству ядер на рассматриваемых задачах без усилий программиста.
Tuesday, April 13, 2010
Время обучения
• Пары месяцев на C++ вряд ли хватит.
• По информации от различных источников: 2 недель хватит;
• Программист может учиться «в бою» и писать плохой код: он не разрушит работу чужого кода.
Tuesday, April 13, 2010
Неужели нет проблем?
Есть — и о некоторых стоит знать заранее.
Tuesday, April 13, 2010
Стоит учесть:
• медленную арифметику;
• сложность ручного контроля за памятью;
• отсутствие штатного менеджера пакетов;• много церемонии при использовании библиотеки на C;
• непригодность для embedded: 10МБ RAM минимум для erlang.
Tuesday, April 13, 2010
Роль erlang в erlyvideo
• Эффективный, отлаженный, взрослый инструмент для создания сетевого сервера;
• более быстрое развитие, чем у аналогичного сервера на Java: Red5;
• мало коммитеров как из-за специфики предметной области, так и из-за редкого языка;
• сложности со скриптингом: lua/руби в erlang не встроишь;
• больше концентрации на предметной области, чем на языке.
Tuesday, April 13, 2010
Результаты erlyvideoВ короткие сроки получился медиасервер, который умеет:
• Брать видео из файлов, с плат захвата, программ транскодирования и аппаратных перекодировщиков, с IP-вебкамер и обычных камер;
• Раздавать видео как флеш-клиентам по RTMP и endless flv, так на iPhone и телеприставки;
• Организовывать видеоконференции через веб;
• Выполнять функции на сервере;
• Показывать прямые трансляции с отмоткой назад;
• Справляется с обслуживанием 1800 пользователей, раздавая 1 гигабит видео с одного компьютера.
Tuesday, April 13, 2010
Цены на RTMP серверы:
• Erlyvideo 0$ (открыты исходники, MIT)
• Adobe FMS 4500$ (995$ за крайне урезанный вариант) (закрытый)
• Wowza 995$ (закрытый)
• Red5 0$ (открыты исходники, LGPL)
Tuesday, April 13, 2010
Планы развитияerlyvideo
• Раздача прямого эфира на iPhone из буфера таймшифта;
• Сохранение и показ бесконечных потоков с камер видеонаблюдения;
• Серверное эхоподавление (с веб-страницы нельзя проводить конференцию без гарнитуры).
Tuesday, April 13, 2010
Выводы
• Erlang — эффективная как по скорости разработки, так и стабильности работы среда;
• Вполне обосновано использование erlang вместо классического выбора (C++/Java);
• Доказательством тому является полнофункциональный, развивающийся видеостриминговый сервер erlyvideo.
Tuesday, April 13, 2010
Вопросы?
http://erlyvideo.org/
Макс Лапшин
Tuesday, April 13, 2010