Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Erlyvideo

7.190 Aufrufe

Veröffentlicht am

Доклад про erlyvideo — видеостриминговый сервер на erlang

Veröffentlicht in: Technologie
  • Хорошая презентация! Начинаем тоже использовать Erlyvideo, на наш взгляд у него хорошие перспективы. Даже статью написал с обзором всех серверов, в которой Erlyvideo занимает не последнее место. http://itmultimedia.ru/media-servera-flash-media-server-wowza-erlyvideo-red5/
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

Erlyvideo

  1. 1. Erlyvideo — видеостриминг на erlang Макс Лапшин max@evilmartians.com http://erlyvideo.org/ Tuesday, April 13, 2010
  2. 2. Телевизор был удобным • Включил и смотри; • Быстро и удобно переключать каналы. Tuesday, April 13, 2010
  3. 3. А так ли удобен интернет? • Как долго стартует просмотр видео в интернете? • Почему такая медленная перемотка по роликам на ютубе? • На что тратится такая мощь и скорость каналов? • Что выберет ваша бабушка: телевизор Рубин или ютуб? Tuesday, April 13, 2010
  4. 4. Плата за возможность смотреть то, что хочешь • Телевизор показывает то, что • В интернете выбираем сами; подготовили для всех; • Сервер для каждого • Телебашня вещает выполняет персональные миллионам одно и то же. действия. Tuesday, April 13, 2010
  5. 5. Какие проблемы в интернете? • Большое время открытия видео с сервера; • Сложность алгоритмов сжатия видео; • Невозможность покадровой перемотки; • Чувствительность к потерям данных; • Неравномерная скорость сети. Tuesday, April 13, 2010
  6. 6. Все способы трансляции видео в интернете имеют плюсы и минусы. Какие? Tuesday, April 13, 2010
  7. 7. Файлы по HTTP • Путь, выбранный youtube.com; • Прекрасное решение для 10-минутных роликов; • Самые низкие стартовые траты на ПО и аппаратуру; • Мучительная перемотка; • Неравномерное использование канала; • Непригодность для трансляции прямого эфира. Tuesday, April 13, 2010
  8. 8. «Бесконечные» файлы по HTTP • Несложный способ раздачи прямого эфира; • Проблемы с антивирусами; • Невозможность отмотки назад (timeshift); • На паузе можно держать не больше чем позволит жесткий диск; • Невозможно транслировать видео на сервер с камеры; • Невозможность контролировать буфер проигрывания. Tuesday, April 13, 2010
  9. 9. RTMP (Adobe streaming) Real Time Media Protocol • Оптимальное использование ширины канала; • Быстрая перемотка; • Быстрый старт проигрывания; • Возможность видеоконференции. • Закрытый протокол; • Проблемы с антивирусами; • Сервер обязан присылать видеокадры в реальном времени. Tuesday, April 13, 2010
  10. 10. Существующий у меня опыт • Есть успешная реализация RTMP сервера на ObjectiveC; • Сложности с таймаутами, утечками памяти, многоядерностью; • Возникло предположение, что многие проблемы — артефакты платформы. Tuesday, April 13, 2010
  11. 11. Гипотеза об эффективности erlang Предположение: язык erlang даст сосредоточиться на бизнес-логике. Результат: erlyvideo — открытый видеостриминговый сервер. Tuesday, April 13, 2010
  12. 12. Почему именно erlang? Tuesday, April 13, 2010
  13. 13. Много ядер — много ниток • Языки C++, Java и т.п. дают возможность разрушить приложение одновременным доступом к памяти из разных ниток; • Ошибка в одной нитке может разрушить остальные. • В erlang-е существует полная изоляция данных и кода по псевдопроцессам (сотни тысяч в одной программе); • Ошибка в одном псевдопроцессе не обрушит остальные; Tuesday, April 13, 2010
  14. 14. Утечки памяти • Сложность инструментов (valgrind) для нахождения утечек на C; • Дороговизна полного устранения утечек в программе на С. • Иная природа утечек памяти в erlang упрощает устранение: оно сводится к локализации и проблемой не является. Tuesday, April 13, 2010
  15. 15. Горячее обновление кода • На языках C, Java и т.п. задача обновления кода не решена до конца; • Отсутствует простой способ обновления кода без отключения клиентов. • Горячее обновление кода из коробки без усилий программиста даже в работающих процессах; • Жестко детерминированные точки обновления кода. Tuesday, April 13, 2010
  16. 16. Параметризация функций Параметризация по типу входных данных: • не всегда отражает детали бизнес-логики; • порождает мифы о непригодности ООП. Параметризация по значениям входных данных: • ближе к бизнес-логике; • дает удобный синтаксис для работы с бинарными данными. Tuesday, April 13, 2010
  17. 17. RPC • Задача вызова функций на другом компьютере для семейства языков C за 30 лет не решена до конца; • Проблемы с передачей объектов, ссылок на них, распределенной сборкой мусора. • Замена в erlang классических объектов и ссылок на них на процессы, PID-ы которых прозрачно передаются по сети в сообщениях; • Надежный мониторинг состояния процессов на других нодах. Tuesday, April 13, 2010
  18. 18. Масштабирование по ядрам • Сложность написания линейно масштабирующуейся по ядрам программы на C из-за синхронизации доступа к общим данным. • erlang даёт линейное масштабирование по количеству ядер на рассматриваемых задачах без усилий программиста. Tuesday, April 13, 2010
  19. 19. Время обучения • Пары месяцев на C++ вряд ли хватит. • По информации от различных источников: 2 недель хватит; • Программист может учиться «в бою» и писать плохой код: он не разрушит работу чужого кода. Tuesday, April 13, 2010
  20. 20. Неужели нет проблем? Есть — и о некоторых стоит знать заранее. Tuesday, April 13, 2010
  21. 21. Стоит учесть: • медленную арифметику; • сложность ручного контроля за памятью; • отсутствие штатного менеджера пакетов; • много церемонии при использовании библиотеки на C; • непригодность для embedded: 10МБ RAM минимум для erlang. Tuesday, April 13, 2010
  22. 22. Роль erlang в erlyvideo • Эффективный, отлаженный, взрослый инструмент для создания сетевого сервера; • более быстрое развитие, чем у аналогичного сервера на Java: Red5; • мало коммитеров как из-за специфики предметной области, так и из-за редкого языка; • сложности со скриптингом: lua/руби в erlang не встроишь; • больше концентрации на предметной области, чем на языке. Tuesday, April 13, 2010
  23. 23. Результаты erlyvideo В короткие сроки получился медиасервер, который умеет: • Брать видео из файлов, с плат захвата, программ транскодирования и аппаратных перекодировщиков, с IP-вебкамер и обычных камер; • Раздавать видео как флеш-клиентам по RTMP и endless flv, так на iPhone и телеприставки; • Организовывать видеоконференции через веб; • Выполнять функции на сервере; • Показывать прямые трансляции с отмоткой назад; • Справляется с обслуживанием 1800 пользователей, раздавая 1 гигабит видео с одного компьютера. Tuesday, April 13, 2010
  24. 24. Цены на RTMP серверы: • Erlyvideo 0$ (открыты исходники, MIT) • Adobe FMS 4500$ (995$ за крайне урезанный вариант) (закрытый) • Wowza 995$ (закрытый) • Red5 0$ (открыты исходники, LGPL) Tuesday, April 13, 2010
  25. 25. Планы развития erlyvideo • Раздача прямого эфира на iPhone из буфера таймшифта; • Сохранение и показ бесконечных потоков с камер видеонаблюдения; • Серверное эхоподавление (с веб-страницы нельзя проводить конференцию без гарнитуры). Tuesday, April 13, 2010
  26. 26. Выводы • Erlang — эффективная как по скорости разработки, так и стабильности работы среда; • Вполне обосновано использование erlang вместо классического выбора (C++/Java); • Доказательством тому является полнофункциональный, развивающийся видеостриминговый сервер erlyvideo. Tuesday, April 13, 2010
  27. 27. Вопросы? Макс Лапшин max@evilmartians.com http://erlyvideo.org/ Tuesday, April 13, 2010

×