Nikita Lysenok

Nikita Lysenok

🔧 Стройка · Вебинар на 85 минут в MP3 за полторы минуты

 

Пет-проект выходного дня, который вырос в две программы с открытым кодом.

Задача звучала просто: получить запись вебинара MTS Link одним файлом. Готовые решения на GitHub нашлись, но одно ради звука качало видео целиком, другое собирало общий экран часами. Мне нужен был звук, и быстро.

🧩 Почему это не «скачать файл»

Запись вебинара это не один ролик. У каждого участника своя дорожка со своим временем начала: в тестовой записи их 18, и звучат они одновременно. Склеить их подряд нельзя, их нужно свести на общей шкале времени, как звукорежиссёр сводит микрофоны.

Дальше инженерия, знакомая по торговым системам:

• качаются только звуковые куски, видео по запросу;

• сведение и кодирование идут прямо во время загрузки;

• кусок, которого ждёт микшер, запрашивается вне очереди;

• скачанное кэшируется, и другой формат или отрезок той же записи берётся с диска.

Ъ

⚡️ Цифры

85 минут в MP3 за 1 мин 28 с с пустого кэша. Это ночью, днём сервер нагружен и выходит от 2 до 2,5 минут. MP3 плюс видео всех участников за 1 мин 40 с.

В той же серии замеров открытые аналоги справились за 4 и 29 минут, третий не закончил за полчаса. Оговорка: двое из них решают другую задачу и собирают одно общее видео с перекодированием.

🛠 Две версии

• webinar-downloader: первая, на Python. Дашборд в браузере, докачка после обрыва, видео «все камеры на одном экране».

• webinarip: быстрая, на Rust. Один файл около 4 МБ без зависимостей, macOS, Linux и Windows, веб-интерфейс, отдельные дорожки участников и проект для монтажа.

🧭 Как принимал решения

Вёл проект по той же системе, что и канал: каждое решение с замером и датой, критерий остановки записан до эксперимента. Пример: HTTP/2 казался очевидным ускорением, а на замере оказался в 7,7 раза медленнее. Идея ушла в архив вместе с цифрой.

🤝 Этика

Только для своих записей или с разрешения организатора. У числа соединений жёсткий потолок, а когда сервер сигналит о перегрузке, программа сбавляет темп. Ключ к закрытой записи живёт только в памяти и на диск не пишется. Проект независимый и с MTS Link не связан.

 

👉 Дальше

Стенограмма с именами спикеров. Раз у каждого участника своя дорожка, понятно, кто говорит, и угадывать по голосу не нужно. Распознавание локально на Mac.

Код открыт, лицензия MIT. Если работаете с вебинарами, попробуйте и напишите, что сломалось 🙂

#Стройка@nilysenok