+ All Categories
Home > Technology > Erlyvideo v3

Erlyvideo v3

Date post: 27-Jun-2015
Category:
Upload: guestb9e92a
View: 1,559 times
Download: 2 times
Share this document with a friend
Description:
Доклад по erlyvideo — видеостриминговому серверу на erlang.
Popular Tags:
27
Erlyvideo — видеостриминг на erlang Макс Лапшин [email protected] http://erlyvideo.org / Tuesday, April 13, 2010
Transcript
Page 1: Erlyvideo v3

Erlyvideo —видеостриминг на

erlang

Макс Лапшин[email protected]

http://erlyvideo.org/

Tuesday, April 13, 2010

Page 2: Erlyvideo v3

Телевизор был удобным

• Включил и смотри;• Быстро и удобно переключать каналы.

Tuesday, April 13, 2010

Page 3: Erlyvideo v3

А так ли удобен интернет?

• Как долго стартует просмотр видео в интернете?• Почему такая медленная перемотка по роликам на ютубе?

• На что тратится такая мощь и скорость каналов?• Что выберет ваша бабушка: телевизор Рубин или ютуб?

Tuesday, April 13, 2010

Page 4: Erlyvideo v3

Плата за возможность смотреть то, что хочешь

• Телевизор показывает то, что подготовили для всех;

• Телебашня вещает миллионам одно и то же.

• В интернете выбираем сами;

• Сервер для каждого выполняет персональные действия.

Tuesday, April 13, 2010

Page 5: Erlyvideo v3

Какие проблемы в интернете?

• Большое время открытия видео с сервера;• Сложность алгоритмов сжатия видео;• Невозможность покадровой перемотки;• Чувствительность к потерям данных;

• Неравномерная скорость сети.

Tuesday, April 13, 2010

Page 6: Erlyvideo v3

Все способы трансляции видеов интернете имеют плюсы и

минусы.

Какие?

Tuesday, April 13, 2010

Page 7: Erlyvideo v3

Файлы по HTTP

• Путь, выбранный youtube.com;

• Прекрасное решение для 10-минутных роликов;

• Самые низкие стартовые траты на ПО и аппаратуру;

• Мучительная перемотка;• Неравномерное использование канала;• Непригодность для трансляции прямого эфира.

Tuesday, April 13, 2010

Page 8: Erlyvideo v3

«Бесконечные» файлы по HTTP

• Несложный способ раздачи прямого эфира;

• Проблемы с антивирусами;

• Невозможность отмотки назад (timeshift);

• На паузе можно держать не больше чем позволит жесткий диск;

• Невозможно транслировать видео на сервер с камеры;

• Невозможность контролировать буфер проигрывания.Tuesday, April 13, 2010

Page 9: Erlyvideo v3

RTMP (Adobe streaming)

• Оптимальное использование ширины канала;

• Быстрая перемотка;• Быстрый старт проигрывания;• Возможность видеоконференции.

• Закрытый протокол;• Проблемы с антивирусами;

• Сервер обязан присылать видеокадры в реальном времени.

Real Time Media Protocol

Tuesday, April 13, 2010

Page 10: Erlyvideo v3

Существующий у меня опыт

• Есть успешная реализация RTMP сервера на ObjectiveC;

• Сложности с таймаутами, утечками памяти, многоядерностью;

• Возникло предположение, что многие проблемы — артефакты платформы.

Tuesday, April 13, 2010

Page 11: Erlyvideo v3

Гипотеза об эффективности erlang

Предположение: язык erlang даст сосредоточиться на бизнес-логике.

Результат: erlyvideo — открытый видеостриминговый сервер.

Tuesday, April 13, 2010

Page 12: Erlyvideo v3

Почему именно erlang?

Tuesday, April 13, 2010

Page 13: Erlyvideo v3

Много ядер — много ниток• Языки C++, Java и т.п. дают возможность разрушить приложение одновременным доступом к памяти из разных ниток;

• Ошибка в одной нитке может разрушить остальные.

• В erlang-е существует полная изоляция данных и кода по псевдопроцессам (сотни тысяч в одной программе);

• Ошибка в одном псевдопроцессе не обрушит остальные;

Tuesday, April 13, 2010

Page 14: Erlyvideo v3

Утечки памяти

• Сложность инструментов (valgrind) для нахождения утечек на C;

• Дороговизна полного устранения утечек в программе на С.

• Иная природа утечек памяти в erlang упрощает устранение: оно сводится к локализации и проблемой не является.

Tuesday, April 13, 2010

Page 15: Erlyvideo v3

Горячее обновление кода

• На языках C, Java и т.п. задача обновления кода не решена до конца;

• Отсутствует простой способ обновления кода без отключения клиентов.

• Горячее обновление кода из коробки без усилий программиста даже в работающих процессах;

• Жестко детерминированные точки обновления кода.

Tuesday, April 13, 2010

Page 16: Erlyvideo v3

Параметризация функций

Параметризация по типу входных данных:

• не всегда отражает детали бизнес-логики;• порождает мифы о непригодности ООП.

Параметризация по значениям входных данных:

• ближе к бизнес-логике;• дает удобный синтаксис для работы с бинарными данными.

Tuesday, April 13, 2010

Page 17: Erlyvideo v3

RPC• Задача вызова функций на другом компьютере для семейства языков C за 30 лет не решена до конца;

• Проблемы с передачей объектов, ссылок на них, распределенной сборкой мусора.

• Замена в erlang классических объектов и ссылок на них на процессы, PID-ы которых прозрачно передаются по сети в сообщениях;

• Надежный мониторинг состояния процессов на других нодах.Tuesday, April 13, 2010

Page 18: Erlyvideo v3

Масштабирование по ядрам

• Сложность написания линейно масштабирующуейся по ядрам программы на C из-за синхронизации доступа к общим данным.

• erlang даёт линейное масштабирование по количеству ядер на рассматриваемых задачах без усилий программиста.

Tuesday, April 13, 2010

Page 19: Erlyvideo v3

Время обучения

• Пары месяцев на C++ вряд ли хватит.

• По информации от различных источников: 2 недель хватит;

• Программист может учиться «в бою» и писать плохой код: он не разрушит работу чужого кода.

Tuesday, April 13, 2010

Page 20: Erlyvideo v3

Неужели нет проблем?

Есть — и о некоторых стоит знать заранее.

Tuesday, April 13, 2010

Page 21: Erlyvideo v3

Стоит учесть:

• медленную арифметику;

• сложность ручного контроля за памятью;

• отсутствие штатного менеджера пакетов;• много церемонии при использовании библиотеки на C;

• непригодность для embedded: 10МБ RAM минимум для erlang.

Tuesday, April 13, 2010

Page 22: Erlyvideo v3

Роль erlang в erlyvideo

• Эффективный, отлаженный, взрослый инструмент для создания сетевого сервера;

• более быстрое развитие, чем у аналогичного сервера на Java: Red5;

• мало коммитеров как из-за специфики предметной области, так и из-за редкого языка;

• сложности со скриптингом: lua/руби в erlang не встроишь;

• больше концентрации на предметной области, чем на языке.

Tuesday, April 13, 2010

Page 23: Erlyvideo v3

Результаты erlyvideoВ короткие сроки получился медиасервер, который умеет:

• Брать видео из файлов, с плат захвата, программ транскодирования и аппаратных перекодировщиков, с IP-вебкамер и обычных камер;

• Раздавать видео как флеш-клиентам по RTMP и endless flv, так на iPhone и телеприставки;

• Организовывать видеоконференции через веб;

• Выполнять функции на сервере;

• Показывать прямые трансляции с отмоткой назад;

• Справляется с обслуживанием 1800 пользователей, раздавая 1 гигабит видео с одного компьютера.

Tuesday, April 13, 2010

Page 24: Erlyvideo v3

Цены на RTMP серверы:

• Erlyvideo 0$ (открыты исходники, MIT)

• Adobe FMS 4500$ (995$ за крайне урезанный вариант) (закрытый)

• Wowza 995$ (закрытый)

• Red5 0$ (открыты исходники, LGPL)

Tuesday, April 13, 2010

Page 25: Erlyvideo v3

Планы развитияerlyvideo

• Раздача прямого эфира на iPhone из буфера таймшифта;

• Сохранение и показ бесконечных потоков с камер видеонаблюдения;

• Серверное эхоподавление (с веб-страницы нельзя проводить конференцию без гарнитуры).

Tuesday, April 13, 2010

Page 26: Erlyvideo v3

Выводы

• Erlang — эффективная как по скорости разработки, так и стабильности работы среда;

• Вполне обосновано использование erlang вместо классического выбора (C++/Java);

• Доказательством тому является полнофункциональный, развивающийся видеостриминговый сервер erlyvideo.

Tuesday, April 13, 2010

Page 27: Erlyvideo v3

Вопросы?

http://erlyvideo.org/

Макс Лапшин

[email protected]

Tuesday, April 13, 2010


Recommended