FMSPy, релиз Alpha (0.1)

    FMSPy Flash Media Server written in Python (FMSPy) — это еще один RTMP-сервер для приложений на Adobe Flash/Flex/Air. FMSPy является аналогом Adobe Flash Media Server, с гораздо меньшими возможностями, однако FMSPy — совершенно бесплатный проект с открытым исходным кодом. Проект находится на ранней стадии развития, но в активной разработке.

    Итак, что есть на сегодняшний день:
    • Реализация RTMP-протокола: кодирование/декодирование пакетов, разрезание и склеивание из chunks и т.п.
    • Поддержка базового RPC (Invoke) клиент-сервер и сервер-клиент. То есть из Flash-приложения можно вызывать с помощью класса NetConnection методы приложения на стороне сервера, и наоборот со стороны сервера вызывать методы приложения.
    • Инфраструктура для написания приложений (в качестве плагинов к FMSPy) со своим API на Python.


    В ближайших релизах:
    • Стриминг (вещание) с вебкамеры, стриминг видео/аудио с сервера (FLV, MP4, MP3).
    • Поддержка серверных Shared Object.
    • Анализ загрузки, полуавтоматическая кластеризация для распределения нагрузки.

    FMSPy написан на Python с использованием Twisted Framework, приложения на FMSPy реализуются также на Python и им доступны все возможности, которые есть в Twisted: асинхронная сетевая модель, соединения с БД, memcached, различные сервисы и т.п.

    Запуск и установка


    Если у Вас уже установлен Python и setuptools (чаще всего на Unix/Linux это так), достаточно выполнить от имени root:

    easy_install fmspy
    

    Easy_install автоматически установит все необходимые зависимости (если они еще не установлены). Более подробно об установке можно почитать в документации.

    После установки запуск в отладочном режиме (на консоли) осуществляется следующим образом:

    twistd -n fmspy
    

    Для окончания работы сервера достаточно нажать Ctrl+C.

    Примеры



    Вместе с FMSPy устанавливается два примера: эхотест и простенький чат. После запуска откройте страницу http://localhost:3000/examples/ и выберите интересующий вас.

    echotest chat

    Вместо заключения



    Пробуйте, тестируйте, присоединяйтесь к разработке. Любая помощь приветствуется: написание документации, патчи, идеи новых фич, графические материалы! Все это лучше всего отправить в трекер.

    Впереди новые релизы, также в ближайшее время статья о написании приложений для FMSPy.

    Ссылки:

    Краткий FAQ:
    • Как обстоят дела с производительностью? Первое тестирование я уже делал, на микротестах на уровне Red5. Это еще совершенно не оптимизированный код, у меня есть конкретные идеи, как сделать его в 5-10 раз быстрее, так что я надеюсь, что это будет очень и очень эффективная реализация.
    • В ваших докладах на РИТ 2008, упоминалось про pyFMS, оно как-то связано с текущим проектом? Они никак не связаны, я являюсь автором pyFMS, но этот проект остался в недрах компании НетСтрим. FMSPy является реализацией “с нуля”, то есть не имеет общего кода с pyFMS. FMSPy — открытый и бесплатный проект, и он будет несомненно лучше!
    Поделиться публикацией
    Комментарии 26
      –1
      Интересная штука, но всё таки больше склонен к тому что Java больше подойдет для этого(я имею ввиду вместо Python).
        –1
        Хотяя… в общеи настоящие джедаи конечно не меняют своего мнения, но впринципе с Java разработка будет быстрее, а в этом случае это делается именно для того чтобы сделать на Python, а не чтобы сделать быстрее. Запутался :) В общем всё круто, обязательно попробую.
          +5
          Я не думаю, что разработка может быть быстрее на Java или каком-то еще языке программирования. Современные framework'и дают примерно равное время разработки (объем усилий).

          Это делается на Python, потому что для меня так удобнее. Я не вижу недостатков такого решения (или знаю как такие недостатки обойти).
            0
            GIL не сильно смущает? Как он влияет на производительность?
              +3
              Сам сервер однопотоковый, это сильно упрощает дизайн и облегчает производительность (event-driven). RTMP как таковой с трудом можно разделить на нормальную многопоточную обработку, в отдельный поток можно вынести независимую задачу (например, перекодирование видео). План состоит в создании автоматически (или полуавтоматически) кластеризуемого решения. Тогда на одном сервере запускаем столько FMSPy, сколько там ядер. Используем столько серверов, сколько нам нужно. Все это работает как единый организм, распределяя нагрузку внутри себя так, чтобы все сервера были загружены примерно одинаково.

              Так что нет, GIL не смущает.
        0
        И когда допишут стриминг с камеры/сервера, сколько % она по сравнению с red5 выдаст?
          +1
          Пока не допишем, ясно не будет. Целью является сопоставимая или лучшая производительность. Хотя непосредственно оптимизация в планах отложена на чуть более поздний этап оп времени.

          Nerezus, вы можете помочь! Если не непосредственно участием в разработке, то, например, организацией тестирования производительности. Мы (все вместе) смогли бы несомненно сделать его лучше.

          0
          А нет случаем в планах на ближайшее время поддерживать новый RTMFP? Ведь проект Stratus у Adobe пока только в статусе беты, есть шанс опередить :)
            0
            Честно скажу, не было. Если есть идеи, как это реализовать, я был бы рад совместно работать над интеграцией!
            0
            Мне уже нравится идея!

            Если нужна помощь в тестирование, то я могу помочь :)
              0
              Тестируйте, пожалуйста, устанавливайте, пробуйте, ищите баги и т.п.! Все, что получится, пишите в трекер на fmspy.org/ в виде тикетов. (Чтобы создать тикет, надо зарегистрироваться). Спасибо!
            • НЛО прилетело и опубликовало эту надпись здесь
                +1
                Ну, наверное, это не совсем то, что должно входить в ядро FMSPy. Это типичная задача для приложения к FMSPy: мы получаем по RTMP потоковый звук от пользователя, на сервере проделываем микширование и выдаем (публикуем) в качестве стрима. В FMSPy должны быть все возможности для этого: захват живого стрима, публикация стрима. Микширование и кодирование/декодирование потока, наверное, будет выходить за рамки FMSPy, но для этого стоить использовать готовые возможности Python, например, интерфейс с GStreamer.
                0
                Спасибо! Полезное дело.
                  0
                  Сколько сейчас разработчиков вовлечено в проект?
                    +1
                    1 (одна) шт. :)
                      –2
                      Документацию для разработчиков побольше.
                        0
                        Для разработчиков приложений для FMSPy (то есть по API FMSPy) или для разработчиков самого FMSPy?

                        Из неопубликованного есть автоматически сгененированная документация по коду, ее можно и самому легко собрать — git clone, make docs
                          0
                          Разработчиков сервера FMSPy.

                        0
                        Майкл Клишин очень давно зарекался портировать Red5 на руби (или написать с нуля, в подробностях не уверен) — тогда я совсем слабо представлял цель подобного шага.

                        И сейчас мне интересен вопрос, а какова всё-таки цель проекта? Почему не Red5 или Wowza (хоть он и платный, но с божескими ценами и умеет H.264, а не только сраный nellymoser)
                          +2
                          Если брать Wowza/FMS — все-таки есть уверенность, что нужно open-source решение, которое бы позволяло технологию вперед. У FMS/Wowza есть свои проблемы с надежностью и не всегда полной поддержкой.

                          Если брать Red5/rtmpy/Milenia Grafter и другие open-source проекты: Red5 — тормозит и глючит (опыт реального использования под нагрузкой). С моей точки зрения это монстр, который может жить только в руках создателей. Rtmpy — на начальном этапе развития, у FMSPy есть общий код с ним, близкие проекты. Но путь Rtmpy меня не устраивает. Milenia как-то тихо загибается в непонятном пути развития.

                          RTMP — очень полезная технология, которая может иметь множество применений. Нужно только ее развитие. FMSPy — это не только сервер RTMP, это еще и протокол RTMP, который можно использовать в любом Twisted-приложении.
                      0
                      Стриминг бы побыстрее :)
                        0
                        wow! акуительно.
                          0
                          Я уже давно имею дело с Wowza Media Server на работе. Минусов практически нет.
                          Imho, вот что важно реализовать в FMSPy:
                          1. Возможность переопределять как методы play(), publish() и т.д. так и события.
                          2. Ретрансляция. Это очень важно.
                          3. Многопоточность, минимальные блокировки.
                          4. SharedObject'ы.
                          5. Поддержка записи в flv.

                          Ориентироваться лучше на Wowza.
                            0
                            Судя по роадмэпу, работы остановились? :(
                              0
                              Да, пока прогресса нет, к сожалению. Буду рад любому, кто подберет проект — помогу и советом, и делом.

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое