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

OSCHINA-MIRROR/xingshuang-iot-communication

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

WEB 视频监控教程

Вернуться к главной странице

Введение

  • Используется схема RTSP + H264 + FMP4 + WebSocket + MSE + WEB.
  • В настоящее время поддерживается отображение RTSP видеопотока с камер наблюдения Hai Kang и Dahua на веб-странице в режиме реального времени.
  • Поддержка получения видеопотока двумя способами: TCP/UDP, можно переключаться произвольно в зависимости от состояния сети.
  • Коммуникационная библиотека разработана исключительно на JAVA, не имеет никаких зависимостей, легковесна.
  • Задержка видеосигнала < 1 с, почти без задержки, высокая степень синхронности.
  • Предоставляются коды библиотеки JavaScript для 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);
            }
        }
    }
}

Фронтенд-видео DEMO

  • Можно самостоятельно разработать сервер 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