webrtc 网络的一些坑(webrtc-streamer)

这篇具有很好参考价值的文章主要介绍了webrtc 网络的一些坑(webrtc-streamer)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、使用VPN网络经常打不开视频。

webrtc网络是边收集网络环境信息,边交换。先收集到的是内网信息,然后是公网信息。如果在还未收集到公网信息的情况下,只拉取到内网信息。则在深信服的VPN环境下,webrtc-streamer服务器无法发送数据包到本地。

从接口/api/getIceCandidate的返回值可以看出问题。当缺少公网网络信息的时候,视频无法打开

[
    {
        "candidate" : "candidate:365427782 1 udp 2122260223 192.168.25.113 7998 typ host generation 0 ufrag 6HsH network-id 1 network-cost 50",
        "sdpMLineIndex" : 0,
        "sdpMid" : "0"
    },
    {
        "candidate" : "candidate:2282355315 1 udp 2122194687 10.10.125.113 18486 typ host generation 0 ufrag 6HsH network-id 2 network-cost 50",
        "sdpMLineIndex" : 0,
        "sdpMid" : "0"
    },
    {
        "candidate" : "candidate:155319495 1 udp 1685987071 xxx.xxx.xxx.xxx 18486 typ srflx raddr 10.10.125.113 rport 18486 generation 0 ufrag 6HsH network-id 2 network-cost 50",
        "sdpMLineIndex" : 0,
        "sdpMid" : "0"
    }
]

解决方法是:修改前端源码,延迟/api/getIceCandidate的调用。个人的环境延迟200毫秒即可

1.2 DNS

打不开视频还有一个原因,就是DNS服务器解析的STUN 服务器IP可能太远,不能及时收集到公网IP信息,导致视频打开不稳定。webrtc-streamer默认的stun服务器为:stun.l.google.com:19302。使用 ping stun.l.google.com 查看IP,测试了以下两个IP是比较稳定的。如果解析到其他IP请斟酌使用。

解决办法,修改DNS或者修改HOST

#108.177.125.127 stun.l.google.com
172.217.213.127 stun.l.google.com

2、服务器视频CPU拉满

webrtc-streamer实时转码非常消耗CPU资源,每一个客户端就要吃掉40%+的CPU。视频关掉的时候,一定要记得调用/api/hangup(disconnect)接口以关闭资源。不然会一直占用服务器资源,webrtc-streamer会一直转码和发送,占用网络和CPU

偶然看到网上说CPU占用过高可以使用 -o 参数,试了可用,一个视频要大概占4%-6%CPU,但是视频打开的速度会慢个2、3秒。同一个视频被打开多次也会增加CPU开销。

-o : use null codec (keep frame encoded) 字面意思是保持视频帧编码,也就是不解码的意思。难道是把解码的工作交给前端?但是我测试了一下,并没有明显的增加客户端CPU的使用率。

3、webrtc-streamer网络

打开一个视频,webrtc-streamer 会为每一个网卡(非loopback)绑定一个udp 和 tcp的端口,同时也会为连接到stun服务器的IP绑定一个端口

优先使用udp协议的端口,然后再使用tcp

host srflx prflx relay

host candidate:本机物理网卡或逻辑网卡地址和端口

srflx candidate:全称Sever Reflexive Candidate,端发送Binding请求到STUN/TURN Server经过NAT时,NAT上分配的地址和端口

prflx candidate:全称Peer Reflexive Candidate,端发送Binding请求到对等端经过NAT时,NAT上分配的地址和端口

relay candidate:全称Relayed Candidate,端发送Allocate请求到TURN Server,由TURN server用于中继的地址和端口

4、前端参数

/api/call?peerid=0.4629538284518011&url=%2Fstream%2Fdalajia102.flv&options=rtptransport%3Dtcp%26timeout%3D60

webrtc-streamer的demo在调用call方法的时候,会加上options这一个参数,而我们在自己的系统前端没有加,导致部分视频打不开,或者打开极慢。原因还不清楚

5、网络端口

webrtc使用网络打洞原理,会把请求的端口变成监听的端口。这是个随机端口,可以在webrtcstreamer里面配置开启的端口范围(-R Udp_port_min:Udp_port_min : Set the webrtc udp port range (default:0:65535) 我没有试过),如果服务器的端口不放开的话,会导致浏览器无法打开视频文章来源地址https://www.toymoban.com/news/detail-406885.html

到了这里,关于webrtc 网络的一些坑(webrtc-streamer)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VUE+webrtc-streamer实现实时视频播放(监控设备-rtsp)

    首先说明目前我只完成了本地测试,因还没确定技术选型所以暂无项目应用,先做一下储备,后续项目应用的话这篇文章会持续更新。 监控设备播放效果如下:基于公司环境测试了大华和海康的监控设备(H264编码)可以正确播放 1、下载webrtc-streamer,本机测试我下载的最新

    2024年02月01日
    浏览(39)
  • VUE+webrtc-streamer 实现实时视频播放(监控设备-rtsp)

    下图则启动成功,此时在浏览器访问127.0.0.1:8000可以看到本机监控画面 地址:https://github.com/mpromonet/webrtc-streamer/releases 注意:第三步在本机启动服务所以 new WebRtcStreamer(id,serverUrl)中URL传入127.0.0.1端口可 文章参考链接:https://blog.csdn.net/liona_koukou/article/details/126605137

    2024年02月02日
    浏览(57)
  • 史上最详细的webrtc-streamer访问摄像机视频流教程

    目录 前言 一、webrtc-streamer的API 二、webrtc-streamer的启动命令介绍 1.原文 2.译文  三、webrtc-streamer的安装部署 1.下载地址     https://github.com/mpromonet/webrtc-streamer/releases 2.windows版本部署 3.Linux版本部署 四、springboot整合webrtc-streamer 五、公网使用webrtc-streamer访问相机视频 最近公司

    2023年04月22日
    浏览(40)
  • VUE3+TS+VITE+webrtc-streamer实现实时视频播放(监控设备-rtsp,进来保你成)

    目录 1、下载webrtc-streamer,下载最新window版本  2、解压下载包  3、双击webrtc-streamer.exe启动服务  4、引入webrtc-streamer         1、将下载包中html文件夹下webrtcstreamer.js文件和html/libs文件夹下adapter.min.js文件复制到VUE项目public目录下 2、在index.html文件里引入这两个js文件 5、使

    2024年02月05日
    浏览(41)
  • npm的一些经常使用的命令

    在Node.js的开发过程中,npm(Node Package Manager)是一个不可或缺的工具,它是Node.js的包管理器,用于管理项目中的依赖。以下是一些npm常用命令的详细解析和说明,包括举例说明。 1. npm init npm init 命令用于初始化一个新的Node.js项目。它会引导你创建一个 package.json 文件,该文

    2024年04月13日
    浏览(34)
  • uni-app开发微信小程序经常遇到的一些问题及解决方案

       可以使用uni.getUserInfo接口获取用户信息。需要用户授权。   可以使用uni-app提供的页面组件内置下拉刷新功能,也可以自定义下拉刷新组件。   可以在页面onReachBottom方法中监听上拉事件,当触发上拉事件时,触发加载更多数据的操作。     可以使用uni.uploadFile接口实现图

    2024年02月14日
    浏览(62)
  • 笔记本无线网络不稳定经常掉线的解决方法

    不排除是你 笔记本 的主板供电问题引起的,但是也有可能是收到其它高频无线设备的干扰,或者与相邻的WLAN网络的信道冲突也会是类似的情况,因为系统的故障也会出现类似的情况,对多个不同的WLAN进行测试排除是笔记本本身的故障还是网络不稳定的原因。 如果是网络故

    2024年02月05日
    浏览(42)
  • 经常使用的正则表达式以及用法

    正则表达式是一种用来匹配字符串的工具,它可以用特定的语法来描述文本中的一些模式,以达到快速检索、替换和处理文本的目的。 它的用处也是很多,比如文本编辑器、搜索引擎、数据库、邮件过滤、语言解析器、爬虫器等等。 工作中,我经常用正则表达式来提取、校

    2024年02月10日
    浏览(50)
  • linux 防火墙经常使用的命令

    # 开启防火墙服务 systemctl start firewalld # 关闭防火墙服务 systemctl stop firewalld # 重启防火墙服务 systemctl restart firewalld # 开发端口 firewall-cmd --zone=public --add-port=8080/tcp  --permanent # 移除端口 firewall-cmd --zone=public --remove-port=8080/tcp  --permanent # 开放服务 firewall-cmd --zone=public --add-sevice

    2024年02月13日
    浏览(35)
  • 【Git】Github 上传文件到远程仓库时,经常发生网络错误,一个比较稳定的连接方法及我的示例

    在利用 git 传项目文件到远程仓库时,经常发生网络连接错误,例如: 再比如: 再比如: 这种类似的情况很多,每次都觉得不胜其扰,今天下午尝试上传五次,全都是以网络问题而失败,想着找到一种稳定上传的方式,来解决这个问题。 下面是我的最为顺利的一次上传流程

    2024年02月04日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包