我希望能够在网络上查看CCTV屏幕

时间:2019-03-12 08:22:24

标签: javascript reactjs nginx ffmpeg hls

我希望能够在网络上查看CCTV屏幕。

我一直在从事一个项目,该项目允许在网络上查看IP摄像机。 然后,我被要求在网络上显示同轴摄像机。 因此,我决定使用DVR。 首先,我将DVR连接到路由器。 然后,DVR接收同轴摄像机的输入,并且DVR通过路由器传输信息。 通过此过程,我确认rtsp可以正常工作。 但这在网络上不起作用。

我当前正在使用Nginx Web服务器。 并使用ffmpeg将rtsp信息发送到我的Nginx Web服务器上的rtmp。 然后,Web服务器会将其转换为hls(index.m3u8)文件。 我认为在此过程中出现了问题。

Nginx RTMP配置

# RTMP Config
rtmp {
    server {
        listen 1935; # Listen on standard RTMP port
        chunk_size 4000;
        application live{
            live on;
            deny play all;
            push rtmp://localhost/play;
            on_publish http://localhost:3001/api/on-live-auth;
            on_publish_done http://localhost:3001/api/on-live-done;
        }
        application play {
            live on;
            # Turn on HLS
            hls on;
            hls_nested on;
            hls_fragment_naming system;
            hls_path /home/banana/nginx/live;
            hls_fragment 3;
            hls_playlist_length 60;

            # disable consuming the stream from nginx as rtmp
            #deny play all;
        }
    }
}
# End RTMP Config

FFMPEG命令

ffmpeg -i rtsp://<cameraIp> -c:v copy -rtsp_transport tcp -preset veryfast -c:a copy -fflags +igndts+genpts -f flv rtmp://localhost/live/<cameraId>

测试结果

IP摄像机RTSP地址= admin:qwerty1。@ ssnet4.iptime.org:555 / trackID = 3

DVR RTSP地址= admin:hrd-442s@hwakptz.iptime.org:4524/1

分别在vlc Player中运行上述rtsp地址

成功:IP摄像机RTSP地址,DVR RTSP地址

IP摄像机HLS地址= http://168.131.150.80:4567/live/5c28ae28c6cd0c6c329e1ebc/index.m3u8

DVR HLS地址= http://168.131.150.80:4567/live/5c8746c9d7d74a600edf2460/index.m3u8

分别在vlc Player中运行上述rtsp地址

成功:IP摄像机HLS地址

失败:DVR HLS地址

这与React Player上的结果相同。

const streamUrl = `http://168.131.150.80:4567/live/<cameraId>/index.m3u8`;
<ReactPlayer
            onClick={this._onClickFullscreen}
            width={"100%"}
            height={"100%"}
            url={streamUrl}
            playing={true}
            controls={false}
            muted={true}
          />

问题

  1. 是否可以直接在网络上查看rtsp?
  2. 出了什么问题,又有什么其他方式?

1 个答案:

答案 0 :(得分:1)

不。没有安装插件就没有理由在Web浏览器中看到RTSP。

Web浏览器唯一支持的协议是http,web socket和webrtx。