Erlyvideo —
                          видеостриминг на
                                erlang
                            ...
Телевизор был удобным


                  •       Включил и смотри;

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

                  •       Как долго стартует просмотр видео в интернете?

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

                   •      Телевизор показывае...
Какие проблемы в интернете?
                  •       Большое время открытия видео с сервера;

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

   ...
Файлы по HTTP
                  •        Путь, выбранный youtube.com;

                  •        Прекрасное решение для 1...
«Бесконечные» файлы по HTTP
                  •       Несложный способ раздачи прямого эфира;


                  •       ...
RTMP (Adobe streaming)
                                   Real Time Media Protocol
                • Оптимальное использов...
Существующий у меня опыт

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

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

                  Предположение: язык erlang даст сосре...
Почему именно erlang?




Tuesday, April 13, 2010
Много ядер — много ниток
                  •        Языки C++, Java и т.п. дают возможность разрушить приложение
         ...
Утечки памяти
                  •        Сложность инструментов (valgrind) для нахождения утечек на C;

                  ...
Горячее обновление кода
                  •        На языках C, Java и т.п. задача обновления кода не решена до
          ...
Параметризация функций
               Параметризация по типу входных данных:

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

                  •        Сложность написания линейно масштабирующуейся по ядрам
              ...
Время обучения

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




               •          По информации...
Неужели нет проблем?

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

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

                  •       сложность ручного контроля за па...
Роль erlang в erlyvideo
                  •       Эффективный, отлаженный, взрослый инструмент для создания
              ...
Результаты erlyvideo
                              В короткие сроки получился медиасервер, который умеет:

               ...
Цены на RTMP серверы:
                  •       Erlyvideo 0$ (открыты исходники, MIT)

                  •       Adobe FMS...
Планы развития
                                          erlyvideo
                  •       Раздача прямого эфира на iPho...
Выводы

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

                            Макс Лапшин

                          http://erlyvideo.org/


Tuesday, April 13, 20...
Upcoming SlideShare
Loading in...5
×

Max Lapshin Erlyvideo V2

1,475

Published on

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,475
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
25
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Max Lapshin Erlyvideo V2"

  1. 1. Erlyvideo — видеостриминг на erlang Макс Лапшин 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. Вопросы? Макс Лапшин http://erlyvideo.org/ Tuesday, April 13, 2010
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×