岄. 2024-04-25 17:13 采纳率: 91.7%
浏览 1
已结题

(标签-webrtc|关键词-stream)

我使用webrtc-streamer实现前端可以显示rtsp流显示在页面上,rtsp://admin:123456@192.168.2.104:554/Streaming/Channels/201请求这个的时候黑窗口一直显示 Requested URL : rtsp://admin:jsrh123456@192.168.2.100:554/Streaming/Channels/201。但是我请求通道号101直接就请求出来了。但是通道号往后排类似201、301、401,就会一直显示请求

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-25 17:13
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在尝试使用 webrtc-streamer 来播放 RTSP 流,但遇到了一些问题。根据你的描述,当尝试连接到特定的通道(例如 201、301 或者 401)时,浏览器会持续显示请求状态,而其他通道则能正常工作。

    首先,我们需要确保网络设备(可能是摄像头或NVR)支持这些通道,并且它们是可用的。其次,确认 RTSP URL 的格式是否正确,特别是用户名和密码部分。如果你已经确认了这些问题,那么可能的原因是在 WebRTC 流处理过程中存在某种限制或者兼容性问题。

    为了帮你解决这个问题,我会提供一个基本的 JavaScript 示例,用于创建并连接到 RTSP 流。请确保你已经在项目中安装了 webrtc-streamer,如果没有,可以通过 npm 安装:

    npm install webrtc-streamer --save
    

    然后,在你的 JavaScript 文件中,使用以下代码:

    // 引入 webrtc-streamer 库
    const streamer = require('webrtc-streamer');
    
    async function startStream(url, videoElementId) {
        // 创建一个新的 MediaStream 对象
        const mediaStream = new MediaStream();
    
        try {
            // 连接到 RTSP 流
            await streamer.rtmpToWebRtc(url, { iceServers: [] }, (err, remoteStream) => {
                if (err) {
                    console.error(`Error connecting to RTSP stream: ${err}`);
                    return;
                }
    
                // 将远程流添加到视频元素
                mediaStream.addTrack(remoteStream.getVideoTracks()[0]);
                mediaStream.addTrack(remoteStream.getAudioTracks()[0]);
    
                // 设置视频元素的 srcObject 为媒体流
                document.getElementById(videoElementId).srcObject = mediaStream;
    
                // 开始播放视频
                document.getElementById(videoElementId).play();
            });
        } catch (error) {
            console.error(`Error starting stream: ${error}`);
        }
    }
    
    // 使用你的 RTSP URL 替换这里的 url 变量
    const url = 'rtsp://admin:jsrh123456@192.168.2.104:554/Streaming/Channels/201';
    const videoElementId = 'videoElement'; // 在 HTML 中创建一个具有此 id 的 <video> 元素
    
    startStream(url, videoElementId);
    

    这段代码会在网页上的指定视频元素中播放 RTSP 流。如果仍然存在问题,建议检查网络设备日志,查看是否有任何与特定通道相关的错误消息。同时,确保你的浏览器支持 WebRTC 和 RTSP 转换。对于某些较旧的浏览器,可能需要额外的插件或调整设置。

    如果你的问题依然没有得到解决,可能需要进一步排查 WebRTC Streamer 库本身的问题,或者考虑使用其他的 RTSP 到 WebRTC 转换库,比如 JSMPEG 或者 simple-peer。

    注意:这个示例假设你已经在HTML文件中有一个名为<video id="videoElement"></video>"的视频元素。如果没有,请在你的HTML中添加它。

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

报告相同问题?

问题事件

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

悬赏问题

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