尽管vlc质量良好,但浏览器中的node-rtsp-stream质量较低

时间:2019-07-10 09:20:33

标签: rtsp rtsp-client

我使用node-rtsp-stream和jsmpeg在浏览器中流和显示来自IP摄像机的视频。我使用rtsp://:554 / Steaming / Channels / 102地址在vlc中获得了良好的质量。但是,当我使用jsmpeg在浏览器中显示流时,其质量太低。

我的机器是Windows 10,

网络摄像机不在我的本地网络中,因此可以通过Internet访问它(在vlc中没有问题),

我尝试了以下一些选项,但没有帮助。

wsPort: 9999,
width: 352,
height: 288,
fps: '24',
kbs: '2048k',
ffmpegOptions: { // options ffmpeg flags
'-stats': '', // an option with no neccessary value uses a blank string
'-r': 20, // options with required values specify the value after the key
'-q:v': 32, // quality video in scale [2, 32]
'-b': '2000K' // video bitrate
}

这是我的源代码,

app.js

Stream = require('node-rtsp-stream')
stream = new Stream({
    name: 'name',
    streamUrl: rtspUrlAddress,
    wsPort: 9999,
    width: 352,
    height: 288,
    fps: '24',
    kbs: '2048k',
    ffmpegOptions: { 
        '-stats': '', 
        '-r': 20, 
        '-q:v': 32, 
        '-b': '2000K' 
    }
})

index.html

<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>rtsp-stream</title>

    <div><canvas id="videoCanvas" width="352" height="288"></canvas></div>

    <script type="text/javascript" src="jsmpeg.js"></script>
    <script type="text/javascript">
        var canvas = document.getElementById("videoCanvas");

        var ws = new WebSocket("ws://localhost:9999")

        var player = new jsmpeg(ws, {
            canvas: canvas,
            autoplay: true,
            audio: false,
            loop: true
        });
    </script>
</head>

<body>
    <div class="jsmpeg" data-url=""></div>
</body>

</html>

它没有给出任何错误,因此它似乎没有问题。 任何帮助表示赞赏。 预先感谢。

1 个答案:

答案 0 :(得分:0)

对此有相同的问题,并使用新版本的JSMpeg(jsmpeg.min.js)进行修复。还使用了node-rtsp-stream-es6。

您应将html修改为:

<script type="text/javascript" src="jsmpeg.min.js"></script>

<script type="text/javascript">
    var canvas = document.getElementById('video');
    var url = 'ws://localhost:8082/';
    var player = new JSMpeg.Player(url, {canvas:canvas, autoplay:true,audio:false,loop:true})
</script> 

https://github.com/phoboslab/jsmpeg下载websocket-relajy.js。

在该文件中,有说明使其生效。 您需要使用node命令运行websocket-relay.js,然后使用另一个终端将ffmpeg -i -f mpegts http://localhost:8081/yoursecret提交给ws,然后您可以在浏览器中打开html,然后您会看到视频流式传输。