Java-разработчик
Удаленно
до 300 000
  • О компании:
    Компания занимается разработкой и внедрением собственного продукта — медиасервера Web Call Server, программной платформы для онлайн трансляций, вебинаров, аудио и видео звонков между браузерами и мобильными приложениями, SIP устройствами, IP камерами.

    Работа ведется над двумя основными продуктами:
    1. Мультипротокольный сервер потокового видео для трансляций и конференций. Модель «Star».
    2. Сервер конференций вроде Zoom и приложение к нему. Модель «SFU, SVC».
    Бэкенд выполнен на Java SE без использования фреймворков типа Spring, Hibernate.
    Из основных библиотек, активно используется Netty.
    Netty позволяет принять или отправить сетевой пакет, который представляет собой буфер байт.
    Код сервера занимается тем, что получает трафик по различным протоколам: WebRTC (SRTP, ICE, DTLS), RTMP, RTSP, SRT, SIP, MPEG-TS, VoD, и т. д., далее обрабатывает полученный трафик: депакетизация, процессинг (запись, декодирование, транскодинг, пакетизация, и т. д.) и раздает уже по другим протоколам, которые используются для воспроизведения: WebRTC (SRTP, ICE, DTLS), RTMP, SRT, SIP, HLS, LL HLS, RTSP, MSE.
    Основной задачей будет работа с текущим кодом, который имплементирует все вышеописанные протоколы.
  • СТЭК:
    Java SE, Linux, C++, Multithread Programming, WebRTC
  • Задачи:
    • Багфикс. Например, трафик проходит через сервер некорректно, нарушена синхронизация между аудио и видео пакетами. Устройство, отправляющее трафик на сервер, пакетизирует его таким образом, что сервер не может его раскрыть (депакетизировать). Вышла новая версия браузера Chrome, который не может корректно подключиться к серверу по WebRTC и пройти offer/answer - стадию обмена SDP. И другие баги.
    • Имплементация новых фич и моделей, например поддержка SVC.
    • Имплементация новых протоколов, например SRT.
    • Внедрение поддержки новых кодеков, внедрение поддержки работы с GPU Nvidia через JNI.
    • Оптимизация и рефакторинг существующей кодовой базы, приведение кусков кода к более читаемому виду и изменение архитектуры в лучшую сторону. Покрытие кода интеграционными тестами.
    • Профайлинг. Написание нагрузочных тестов, профилирование работы системы под нагрузкой, нахождение и устранение узких мест, утечек, многопоточных блокировок.
  • Ожидания:
    • Java SE, от 3-х лет коммерческой разработки
    • Linux на уровне продвинутого пользователя
    • Опыт работы с сетями и сетевыми протоколами
    • Опыт работы с потоковым видео, WebRTC
    • Опыт имплементации сетевых или транспортных протоколов на Java или С++
    • Опыт имплементации многопоточных серверных бэкендов на Java или C++
  • Предложения:
    • Удаленная работа из любой страны мира
    • Много возможностей технического развития на мировом уровне
    • Оплата в $, если вы работаете не из России