API прямой трансляции с камеры для Spring BackendJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 API прямой трансляции с камеры для Spring Backend

Сообщение Anonymous »

Мы работаем над интеграцией с нашим мобильным приложением, где пытаемся создать серверный API прямой трансляции, который подключается к URL-адресу RTSP и возвращает некоторые видеоданные.
Мы подумали о следующем процессе:

мобильное приложение -> /api/realtime/camera -> запускает процесс FFMPEG, который подключается к URL-адресу RTSP -> записывает входной поток процесса в ответ API с помощью webflux.
Это фрагмент кода:

Код: Выделить всё

----------- process init -----------------------------
ProcessBuilder ffmpegBuilder = new ProcessBuilder(
"ffmpeg",
"-rtsp_transport", "tcp",
"-i", rtspConnection,
"-c:v", "libx264",
"-preset", "ultrafast",
"-tune", "zerolatency",
"-b:v", "2000k",
"-an",
"-f", "mp4",
"-movflags", "frag_keyframe+empty_moov+default_base_moof",
"pipe:1");

------------- process read & push to spring reactive Sink ------------------
try (var inputStream = ffmpegProcess.getInputStream()) {
byte[] buffer = new byte[8192];
int bytesRead;

while ((bytesRead = inputStream.read(buffer)) != -1) {
DataBuffer dataBuffer = new DefaultDataBufferFactory().wrap(copyOf(buffer, bytesRead));
sink.emitNext(dataBuffer, Sinks.EmitFailureHandler.FAIL_FAST);
}
} catch (Exception e) {
sink.emitError(e, Sinks.EmitFailureHandler.FAIL_FAST);
} finally {
this.dispose();
}

----------------- API that will eventually transform previous sink as flux -----------
@GetMapping(value = "/{deviceId}/camera", produces = "video/mp4")
public Flux streamCamera(@PathVariable Long deviceId) {
// return previous sink as flux
}
Проблема в том, что мы поняли, что в веб-контексте, если несколько пользователей откроют соединение с этим API, это в конечном итоге запустит множество фоновых процессов и может вызвать OOM или другие проблемы с нашей машиной.
Правильно ли использовать такую ​​функцию? Или мобильное приложение должно подключаться напрямую к URL-адресу RTSP?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ng-backend
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»