1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xingshuang-iot-communication

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README-WebVideo-EN.md 4.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 5 месяцев назад de05304

Веб-мониторинг видео: руководство

НАЗАД К ДОМУ

Введение

  • Используется схема RTSP + H264 + FMP4 + WebSocket + MSE + WEB.
  • Поддержка отображения видеопотока RTSP с камер Hikvision и DaHua на веб-странице для мониторинга в реальном времени.
  • Получение видеопотока поддерживает два способа передачи данных: TCP/UDP, которые можно произвольно переключать в зависимости от состояния сети.
  • Чистая разработка на JAVA, без каких-либо зависимостей, лёгкая.
  • Задержка видео < 1 с, почти без задержки, высокая степень реального времени.
  • Предоставляется код библиотеки js, связанный с MSE + WebSocket.

Советы

  • Браузеры должны поддерживать MSE и WebSocket.

Пример

  • Использование режима клиентского агента FMP4 + RTSP.
  • Видеопоток H264 автоматически преобразуется во внутренний формат FMP4.
  • По умолчанию используется TCP + синхронная обработка данных, также поддерживаются UDP и асинхронная обработка данных.
public class RtspFMp4ProxyTcpSync {

    public static void main(String[] args) {
        // rtsp адрес камеры
        URI uri = URI.create("rtsp://192.168.3.1:554/h264/ch1/main/av_stream");
        // идентификационная аутентификация
        UsernamePasswordCredential credential = new UsernamePasswordCredential("admin", "123456");
        DigestAuthenticator authenticator = new DigestAuthenticator(credential);
        // создать экземпляр клиента RTSP и использовать здесь режим связи TCP
        RtspClient client = new RtspClient(uri, authenticator, ERtspTransportProtocol.TCP);
        // создать прокси FMP4, здесь в синхронном режиме
        RtspFMp4Proxy proxy = new RtspFMp4Proxy(client);
        // установить событие приёма данных FMP4
        proxy.onFmp4DataHandle(x -> {
            // *****обработка данных*****
            System.out.println(x.length);
        });
        // устанавливает события данных формата кодека
        proxy.onCodecHandle(x -> {
            // *****обработка данных*****
            System.out.println(x);
        });
      proxy.onDestroyHandle(() -> System.out.println("close"));
        // закрыто асинхронно, написано перед запуском, потому что это тестовый пример
        CompletableFuture.runAsync(() -> {
            try {
                TimeUnit.SECONDS.sleep(5);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            proxy.stop();
        });
        // запуск, возврат асинхронного будущего
        CompletableFuture<Void> future = proxy.start();
        // цикл ожидания завершения
        while (!future.isDone()) {
            try {
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

Фронтенд-видео ДЕМО

  • Веб-сервер WebSocket можно разработать самостоятельно и отправить видеопоток в сеть.
  • Ссылка на учебное пособие по примеру: https://github.com/xingshuangs/rtsp-websocket-server.

rtsp-websocket.png

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/xingshuang-iot-communication.git
git@gitlife.ru:oschina-mirror/xingshuang-iot-communication.git
oschina-mirror
xingshuang-iot-communication
xingshuang-iot-communication
master