Мне нужно отправить некоторые видеоданные с камеры дрона на сервер, а затем на клиентскую веб-страницу. Я работаю над приложением для Android, которое взаимодействует с дроном - оно успешно получает вывод камеры дрона и отображает его. У меня уже есть сервер Java (использующий Легкий HTTP-сервер Java), работающий с клиентской веб-страницей которые можно было бы использовать для этой цели. Я придумал два возможных метода:
h264 и Wowza
У меня есть метод обратного вызова, доступный с камеры дрона, который предоставляет массив байтов в кодировке h264. Это должно быть доступно для потоковой передачи через RTP, однако я не нашел никаких библиотек Android/Java для поддержки потоковой передачи из имеющегося у меня источника (libstreaming поддерживает потоковую передачу только с камеры). Если бы можно было передавать входящие массивы байтов h264 в Wowza, я мог бы выяснить, как получить доступ к Wowza от клиента и визуализировать поток. Этот метод не требует использования существующего сервера.
Выборка растровых изображений. Выходные данные камеры отображаются в виде текстур в приложении для Android. Это может быть выбрано для создания растровых изображений, которые могут быть закодированы как Base64 и отправлены на сервер. Затем сервер передает клиенту последнее растровое изображение, и клиент визуализирует растровое изображение с использованием закодированного Base64:
document.getElementById('drone_feed')
.setAttribute(
'src', 'data:image/png;base64,' + cameraBase64String
);
Я успешно реализовал второй метод - представление текстуры сэмплируется каждые 100 мс, а клиент получает текущее закодированное изображение с сервера каждые 100 мс. Очевидно, что этот метод дает очень низкую задержку и низкий FPS, но он работает.
Итак, у меня есть два вопроса:
1. Возможен ли первый метод (h264 и Wowza), и если да, то как я могу передать входящие видеобуферы h264 в Wowza?
2. Если первый метод невозможен возможно, я могу сделать второй метод более эффективным, или есть альтернативный метод, который я не рассматривал?