Приложение для записи видео с вебкамеры на Amazon Web Services

Mike

New Member
Здравствуйте!
У нашей команды стоит задача разработать приложение для проведения онлайн интервью. Соискатель заходит по ссылке, ему задают вопросы, а ответы записываются на вебкамеру, после чего видео сохраняется на AWS.

Amazon Kinesis Video Streams умеет принимать видео через метод putMedia: https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html
Также у них есть официальные продьюсеры на Java и C++. Родного продьюсера на JavaScript нет.
https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk-cpp-gstreamer.html
https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk-cpp-gstreamer-docker.html
Эти продьюсеры [насколько я понял] могут получать видео из 1) статического файла 2) непосредственно с устройства вебкамеры 3) по rtsp://
Нам подходит только вариант 3 (сохранять видео файл на сервере нельзя, доступа к USB нет).

Видео из браузера можно передать двумя способами
1) getUserMedia / mediaRecorder / XMLHttpRequest (поток нарезается на отрезки по 1 сек и отправляется методом POST)
2) WebRTC

Собственно вопрос, как организовать этот процесс.
Вариант 1 - потребуется написать прокси на python, который будет получать поток через XHR POST и проксировать его на AWS. Вариант мне не очень нравится, так как использовать XHR для передачи видео кажется неправильным.
Вариант 2 потребует какого-то решения на сервере, для которого потенциально может потребоваться ваш Web Call Server. То есть нужен некий сервер, который устанавливает webrtc соединение, принимает видеопоток и делает его доступным через rtsp:// (совместимость с продьюсером) и настроить сам продьюсер, чтобы он публиковал видео на AWS.

У меня сложилось предварительное ощущение, что Web Call Server может решить эту задачу. Подскажите, стоит ли копать в этом направлении, и если да то как это решение будет выглядеть.

Спасибо!

PS: Напрашивается еще вариант отправлять WebRTC поток напрямую на AWS. Видел ваш сервер на https://aws.amazon.com/marketplace/pp/B01D1L5EAK , но не понимаю, подходит ли это решение.
 
Last edited:

Max

Administrator
Staff member
Добрый день
Если Amazon Kinesis Video Streams умеет принимать видеопоток по RTSP через продьюсер, можно оешить эту задачу следующим образом: опубликовать поток по WebRTC из браузера на Web Call Server (подробности есть в документации) и настроить продьюсер, чтобы он забирал видео с WCS по RTSP (в документации есть пример, как забрать видео по RTSP при помощи плеера). При необходимости, параметры RTSP-потока можно настроить при помощи файла SDP (в документации приведены настройки по умолчанию).
 

Mike

New Member
Спасибо, буду изучать!
Очевидный недостаток такого метода в том, что весь видео трафик будет идти через мой сервер. Возможно ли публиковать видео напрямую в амазон? У вас есть приложение в их маркетплейсе. Не поможет ли оно в решении этой задачи?
 
Last edited:

Max

Administrator
Staff member
Наш инстанс на Амазоне поможет в том плане, что его можно разместить в одном регионе с сервером, принимающим поток, тогда вносимые задержки и потери в качестве будут минимизированы.
Трафик в этом случае действительно пойдет через сервер, но, если публиковать H264+opus и отдавать по RTSP H264+AAC, то будет транскодироваться только звук, и вычислительная нагрузка на сервер будет небольшой. Если получится отдавать H264+opus, то и транскодинга можно избежать.
Что касается публикации напрямую, у AWS Kinesis есть свое JavaScript API, возможно, оно позволяет решить эту задачу.
 
Top