Сабж. Перед выпуском бесплатной версии софтинки хотелось бы отвязать трафик между клиентами и серверами от промежуточного (нашего) сервера.
Задача следующая:
- есть rtsp потоки от камер
- есть сервер который их собирает через ffmpeg и хранит в озу несколько фрагментов пакуя их в мп4, по нужде сливая их на диск
- параллельно ffmpeg шлёт поток в nginx, который организует hls или dash (временный костыль для проверки - логичней формировать список самостоятельно для фрагментов из озу)
- есть десктопный клиент который может напрямую подцеплять rtsp, выдергивать фрагменты с диска сервера через https в мп4 или выдергивать m3u/m4v который организовал nginx (последнее - на пробу)
Основной нюанс - это всё работает без транскодирования и соотв. не грузит процы, позволяя держать сервер на чахлом арме и иметь много камер (основное ограничение - пропускная способность дисков)
Собственно хотелка - организовать приложение под андроид, с возможностью смотреть камерки в живом времени с минимальным лагом.
С выгрузкой готовых мп4 проблем нет - exoplayer нормально принимает и распаковывает
Через dash то-же всё работает но лаг получается 5-6 секунд при крайне оптимистичных настройках (фрагменты по 3 секунды, 3 фрагмента в цикле, куски по 256кб)
На прямки rtsp ессно не работает, но как не странно не взлетело и rtp по tcp
Вопрос - как более оптимально завернуть rtsp в андроид (с прицелом на совместимость с ios) не разбивая это на куски, а нормальным потоком через tcp с общим лагом в 1-2 секунды?
Ну и по возможности прикрыть это шифровалкой встроенной дабы не городить велосипед