岄. 2024-04-26 10:49 采纳率: 91.7%
浏览 2
已结题

(标签-前端|关键词-前端页面)

我使用了rtsp2web包,让前端页面显示rtsp视频,

 var rtsp1 =
      'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4'
    window.onload = () => {
      // 将rtsp视频流地址进行btoa处理一下
      new JSMpeg.Player('ws://localhost:9999/rtsp?url=' + btoa(rtsp1), {
        canvas: document.getElementById('canvas-1')
      })
    
        }
      )
    }

这个可以正常显示,但是因为我的rtsp不止一个我就每五秒循环列表中的其中一个rtsp。


this.rtsps = [
                            'rtsp://admin:jsrh123456@192.168.2.100:554/Streaming/Channels/201',
                            'rtsp://admin:jsrh123456@192.168.2.100:554/Streaming/Channels/101'
                        ];
var rtsp1 = this.rtsps;
        // 每五秒切换rtsp流地址
        setInterval(() => {
            const currentIndex = this.rtsps.indexOf(this.rtsp1);
            const nextIndex = (currentIndex + 1) % this.rtsps.length;
            rtsp1 = this.rtsps[nextIndex];
            console.log(rtsp1, 'rtsp1');
            window.onload = () => {
                // 将rtsp视频流地址进行btoa处理一下
                new JSMpeg.Player('ws://localhost:9999/rtsp?url=' + btoa(rtsp1), {
                    canvas: document.getElementById('canvas-3')
                })
            }
        }, 10000);

但是画面不显示

  • 写回答

5条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-04-26 10:49
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    这个问题可能是因为每五秒循环切换的rtsp地址没有及时更新导致的。在代码中可以尝试添加一个刷新画面的方法,每次切换地址时调用该方法刷新画面。修改后的代码如下:
    this.rtsps = [
      'rtsp://admin:jsrh123456@192.168.2.100:554/Streaming/Channels/201',
      'rtsp://admin:jsrh123456@192.168.2.100:554/Streaming/Channels/101'
    ];
    var currentRTSPIndex = 0;
    function updateRTSP() {
      if (currentRTSPIndex >= this.rtsps.length) {
        currentRTSPIndex = 0;
      }
      var rtsp1 = this.rtsps[currentRTSPIndex];
      console.log(rtsp1, 'rtsp1');
      var player = new JSMpeg.Player('ws://localhost:9999/rtsp?url=' + btoa(rtsp1), {
        canvas: document.getElementById('canvas-3')
      });
      currentRTSPIndex++;
      // 刷新画面
      player.hasVideo && player.render();
    }
    setInterval(updateRTSP.bind(this), 5000);
    

    在这个代码中,我们使用了一个新的方法 updateRTSP() 来更新当前的 rtsp 地址,并加载新的视频流。同时,我们还调用了 player.hasVideo && player.render() 来刷新画面。 案例中使用了一个 currentRTSPIndex 变量来记录当前 rtsp 地址的下标,每隔 5 秒调用一次 updateRTSP() 方法切换到下一个 rtsp 地址并刷新画面。 注意事项:在优化代码后需要检查代码中可能的语法错误以及漏洞,并进行必要的测试。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月31日
  • 已采纳回答 5月31日
  • 创建了问题 4月26日

悬赏问题

  • ¥15 软件供应链安全是跟可靠性有关还是跟安全性有关?
  • ¥15 电脑蓝屏logfilessrtsrttrail问题
  • ¥20 关于wordpress建站遇到的问题!(语言-php)(相关搜索:云服务器)
  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?