Я создаю интерактивное приложение для изучения языка, которое будет использоваться в классной комнате.Идея состоит в том, что учитель должен иметь возможность разговаривать со студентами (= аудиопоток всем ученикам), позволять ученикам общаться друг с другом (= аудио P2P) в группах по два или более, пусть ученики смотрят видео изDVD-плеер или с медиа-сервера.Должна быть возможность сохранять аудио / видео потоки.Преподаватель также должен иметь возможность контролировать, захватывать или блокировать рабочий стол учеников.Платформа - Windows, и это настольное приложение, а не веб-приложение.Задержка звука должна быть минимальной и минимальной.При желании ученик, сидящий дома, должен быть поддержан, но это не является высоким приоритетом.
Теперь я закончил с частью контроля приложения в классе (вход в систему, монитор, блок, ...) и хочу начатьаудио и видео часть.Я оценивал несколько вариантов, таких как DirectX, GStreamer и SIP, но теперь мне нужно принять решение.
DirectX кажется очевидным выбором для платформы Windows, но позволяет только захватывать и воспроизводить аудио и видео.Кодирование / декодирование / сетевая часть, которую я должен сделать сам.
GStreamer содержит все виды опций для захвата / кодирования / потока / сохранения аудио и видео потоков.Я немного поэкспериментировал с ним (ossbuild), и, похоже, он требует много проб и ошибок, чтобы заставить что-то работать: - захват микрофона (через directsoundsrc) создает шумы на некоторых компьютерах - загрузчик rtpL16 не работает хорошо -потоковое аудио по сети, работающее только с частотой дискретизации 8000, не выше - при получении видео mpeg4 (плохой I-кадр) много ошибок, на некоторых компьютерах хуже, чем на других. У меня сложилось впечатление, что основной целью является gstreamerна платформах Linux.Разработка и поддержка платформы Windows, похоже, немного отстают.Тем не менее, это мощная платформа, которая может сэкономить мне месяцы и годы работы.
SIP, кажется, способен делать все, что я хочу, но он нацелен на телефонию и обмен мгновенными сообщениями.Я не знаю, насколько гибкий SIP.Мне кажется, что уровень SIP будет просто накладным, так как у меня уже есть центральное (учительское) приложение, которое может контролировать и настраивать все потоки.Интересными частями фреймворков, такими как opalvoip и freeswitch, являются фактический захват аудио / видео, кодирование и передача.Кто-нибудь знает, как эти интересные части связаны с такой структурой, как gstreamer?Легко ли их интегрировать в пользовательское приложение?Достаточно ли они гибки?
Кто-нибудь имеет опыт работы со всеми или одной из этих технологий?Может быть, есть даже другие варианты, на которые я могу посмотреть?
Большое спасибо за ваш совет