Перенаправить RTSP с IP-камеры с Node Media Server на http/ws и отобразить его в формате html

Цель

Моя цель - отобразить поток вывода RTSP моей IP-камеры на стандартной HTML-странице (html5 + css3 + vanilla javascript, без магии = без плагинов). HTML-страница должна быть размещена на веб-сервере NGINX на моем Raspberry Pi.

Мое оборудование

Я использую установку Raspberry Pi 3 B+ с пакетом Rasbian OS, Node.js и Node-Media-Server, NGINX (но я не верю, что NGINX важен для моей проблемы? Я не выполнил никаких настроек для узла -Медиа-сервер в нем все равно.) IP-камера и браузер.

Что я пробовал

Файл readme в проекте Node-Media-Server-project подробно описан, и есть руководство, описывающее почти точно, что я хочу сделать. В частности, есть пример разметки о том, как можно получить доступ к живому потоку:

<html>

<head>
    <title>Camera</title>
</head>

<body>
    <script src="https://cdn.bootcss.com/flv.js/1.4.0/flv.min.js"></script>
    <video id="videoElement"></video>
    <script>
        if (flvjs.isSupported()) {
            var videoElement = document.getElementById('videoElement');
            var flvPlayer = flvjs.createPlayer({
                type: 'flv',
                url: 'http://localhost:8000/live/uterum.flv'
            });
            flvPlayer.attachMediaElement(videoElement);
            flvPlayer.load();
            flvPlayer.play();
        }
    </script> 
</body>

</html>

Вот так я запускаю медиа-сервер на моем Raspberry PI, kommandoran-mediaserver.js:

const { NodeMediaServer } = require('node-media-server');

const config = {
    logType: 3, // 3 - Log everything (debug)
    rtmp: {
        port: 1935,
        chunk_size: 60000,
        gop_cache: true,
        ping: 60,
        ping_timeout: 30
    },
    http: {
        port: 8000,
        allow_origin: '*'
    },
    relay: {
        ffmpeg: '/usr/local/bin/ffmpeg',
        tasks: [
            {
                app: 'cctv',
                mode: 'static',
                edge: 'rtsp://<USER>:<PASSWORD>@10.0.0.111/live1.sdp',
                name: 'uterum',
                rtsp_transport : 'tcp' //['udp', 'tcp', 'udp_multicast', 'http']
            }
        ]
    }
};

var nms = new NodeMediaServer(config)
nms.run();

Моя проблема и вопрос

Когда я пытаюсь просмотреть camera.html (см. разметку выше) через браузер Chromium на Raspberry Pi (то есть на локальном хосте) ничего не отображается. В Инспекторе отладки Chromium нет ошибок javascript, но я получаю это:
GET http://localhost:8000/live/uterum.flv net::ERR_EMPTY_RESPONSE

Вот скриншот с узла терминала: Красная область иллюстрирует вывод, когда я пытаюсь сделать запрос http://localhost:8000/live/uterum.flv,

Я полагаю, что я пытаюсь достичь неправильной конечной точки, но что является правильным? Документация гласит http://localhost:8000/live/STREAM_NAME.flv, Что такое " STREAM_NAME " в моем случае?

1 ответ

Решение

Как видно из конфигурации, ваш поток RTSP отправляется в приложение cctv.

Таким образом, ваш адрес воспроизведения должен быть:

RTMP:// локальный / Видеодомофон /uterum
или же
HTTP:// локальный: 8000 / Видеодомофон /uterum.flv

Другие вопросы по тегам