Как транслировать существующие данные байта [] камеры между двумя устройствами в локальной сети - PullRequest
0 голосов
/ 21 мая 2018

Я хочу открыть камеру устройства для 3 функций:

  • Обнаружение движения

  • Запись видео

  • потоковое видео с помощью rtsp

Я могу выполнить 2 первые функции, инициализировав предварительный просмотр камеры устройства и работая с данными в байтах [] объекта камеры.

mPreviewCallBack = new android.hardware.Camera.PreviewCallback() {
 @Override 
 public void onPreviewFrame(byte[] data, android.hardware.Camera camera) {
                       // motion detection 
                       detectMotion(data);
                       // auto record video if motion detection
                       recordVideo(data);
                       // stream preview to client device
                       ??? 
}

но я пока не могу выполнить третью функцию.Я попробовал некоторые ОС (libstreaming, rtmp-rtsp-stream-client-java, ..), но они оба снова откроют предварительный просмотр с новой камеры, чтобы сделать поток.

Есть ли у вас какие-либо комментарии о том, как транслировать только rtsp байт камеры [] данных существующего предварительного просмотра камеры?

1 Ответ

0 голосов
/ 21 мая 2018

Если вы загляните внутрь библиотеки rtmp-… , вы можете найти реализацию onPreviewFrame () .Вы можете расширить этот метод, добавив свое обнаружение.Если я правильно понимаю, эта библиотека может обрабатывать видеозаписи для вас.

Если вы (по праву) предпочитаете использовать более устоявшуюся библиотеку, ваш выбор должен быть WebRTC.Но подключить ваше распознавание лиц к WebRTC может быть сложнее, и может потребоваться C ++.

С другой стороны, если ваша задача очень ограничена, и два устройства используют одну и ту же беспроводную локальную сеть с минимальными помехами, вы неВ качестве RTSP нужен расширенный транспортный протокол.Прямой сокет TCP (для закодированных кадров) может быть достаточно, и это может быть добавлено довольно безболезненно.

...