VLC还是SmartPlayer?Windows平台RTSP播放器低延迟探讨
技术背景
好多开发者在用过大牛直播SDK的RTSP播放器后,都希望我们也分享下,如何在Windows平台实现低延迟的RTSP播放?低延迟的RTSP播放器,说起来容易做起来难,下面,我们从以下维度做个探讨:
播放器设置优化:
- 缓存设置调整:不管你是使用VLC还是大牛直播SDK的SmartPlayer播放器,找到设置缓存相关选项。通常,降低缓存时间可以减少延迟,当然,缓存值不宜过小,否则可能会导致播放卡顿。在网络状况较好的情况下,可以将缓存时间设置在100-200毫秒。不同的播放器设置方式可能不同,需要根据具体的播放器进行查找和调整。
- 启用低延迟模式:SmartPlayer播放器有专门的低延迟模式选项,开启该选项可以降低播放延迟,这样保证过来数据就马上解码渲染。
网络优化:
- 选择合适的网络连接:使用高质量、稳定且带宽足够的网络连接,尽量减少网络波动和丢包现象。优先选择有线网络连接,如果必须使用无线网络,要确保信号强度和稳定性良好。
- 设置网络优先级:在 Windows 的网络设置中,可以为 RTSP 播放器相关的应用程序或进程设置较高的网络优先级,确保视频流量能够优先传输。具体操作方法是在 “任务管理器” 中找到相关应用程序,右键选择 “设置优先级”,将其设置为 “高” 或 “实时”(但要注意不要过度影响其他关键系统进程的运行)。
- 减少网络路径中的跳数和路由器数量:尽量减少网络传输过程中的中间节点,例如避免使用过多的路由器或网络交换机,因为每经过一个节点都可能会增加一定的延迟。
解码器和视频参数优化:
- 选择低延迟的解码器:有些播放器支持选择不同的解码器,优先选择专为低延迟优化的解码器,或者更新到最新版本的解码器,以获得更好的性能。
- 调整视频参数:如果可以调整视频源的参数,尝试减少 I 帧和 P 帧之间的间隔,因为间隔越小,解码所需的时间就越短,从而降低延迟。但需要注意,减小间隔可能会增加视频的码率和带宽需求。
硬件加速利用:
- GPU 加速:如果计算机的显卡支持 GPU 加速,并且播放器也支持该功能,开启 GPU 加速可以大大提高视频解码和处理的速度,从而减少延迟。在播放器的设置中查找相关的 GPU 加速选项并启用它。
- 使用性能更好的硬件:升级计算机的硬件,如处理器、内存等,可以提高系统的整体性能,减少视频处理和播放过程中的延迟。
代码层面优化:
- 优化数据接收和处理流程:在开发自己的 RTSP 播放器应用程序时,要优化代码中数据接收和处理的逻辑,减少不必要的操作和等待时间,提高数据处理的效率。
- 设置合适的超时时间和自动切换协议:根据实际网络情况,设置合理的 RTSP 超时时间,并开启自动切换 TCP/UDP 等传输协议的功能,以便在网络状况变化时能够及时调整传输方式,减少延迟。
VLC还是SmartPlayer
VLC Media Player
先说VLC,VLC播放器是一款非常受欢迎的多媒体播放器:
功能强大且开源免费:VLC 是一款功能强大的多媒体播放器,支持多种音频和视频格式以及流媒体协议,对 RTSP 协议的支持良好。用户可以方便地播放来自网络摄像头、流媒体服务器等的 RTSP 视频流。并且其开源的特性使得开发者可以根据自己的需求对其进行修改和优化,也为软件的不断改进提供了可能。
跨平台性:可在 Windows、macOS、Linux 等多种操作系统上运行,这对于需要在不同平台上使用 RTSP 播放器的用户来说非常方便,能够满足不同用户在各种操作系统环境下的需求。
广泛的解码器支持:能播放大多数常见的视频和音频格式,对于不同编码格式的 RTSP 流都有较好的兼容性。无论是 H.264、H.265 等视频编码格式,还是 AAC、PCMA、PCMU 等音频编码格式的 RTSP 流,VLC 通常都能顺利播放。
操作相对简单:界面简洁,易于上手。用户只需简单地输入 RTSP 流的 URL 地址,即可快速播放视频。
支持多种功能和设置:除了基本的播放功能外,还支持一些高级功能,如播放控制(播放、暂停、快进、快退等)、音频和视频轨道的选择、字幕设置等。用户可以根据自己的需求进行相应的设置和调整。
VLC播放器也并非完美无缺,存在一些不足之处,可能存在一定的延迟,在播放 RTSP 流时,可能会出现一定程度的延迟。不过,这种延迟情况可以通过调整播放器的缓存设置等参数来进行优化,但如果网络环境较差,延迟可能仍然比较明显。性能消耗尽管已经做的很好,但是相对较大,对于一些配置较低的计算机,播放高清或高码率的 RTSP 流时,可能会占用较多的系统资源,导致计算机性能下降,出现播放卡顿等情况。总体来说,VLC 播放器是一款功能强大、实用性高的多媒体播放器,值得用户尝试和使用。特别是点播或本地文件播放,非常适用,对延迟要求的场景下,略显不足。
SmartPlayer
大牛直播SDK的SmartPlayer播放器,始于2015年,业内一致认可的跨平台RTSP直播播放器SDK,除了功能齐全、性能稳定,延迟非常低(100-300ms区间),以播放海康2560*1440分辨率,8M固定码率为例,SmartPlayer做到的延迟如下:
RTSP播放器,一般建议实现的功能如下(如不单独说明,系Windows、Linux、Android、iOS全平台支持),当然,如果您是用在特定场景,一般不需要实现的这么齐全。
- [支持播放协议]高稳定、超低延迟、业内首屈一指的RTSP直播播放器SDK;
- [多实例播放]支持多实例播放;
- [事件回调]支持网络状态、buffer状态等回调;
- [视频格式]支持H.265、H.264,此外,还支持RTSP MJPEG播放;
- [音频格式]支持AAC/PCMA/PCMU;
- [H.264/H.265软解码]支持H.264/H.265软解;
- [H.264硬解码]Windows/Android/iOS支持特定机型H.264硬解;
- [H.265硬解]Windows/Android/iOS支持特定机型H.265硬解;
- [H.264/H.265硬解码]Android支持设置Surface模式硬解和普通模式硬解码;
- [RTSP模式设置]支持RTSP TCP/UDP模式设置;
- [RTSP TCP/UDP自动切换]支持RTSP TCP、UDP模式自动切换;
- [RTSP超时设置]支持RTSP超时时间设置,单位:秒;
- [RTSP 401认证处理]支持上报RTSP 401事件,如URL携带鉴权信息,会自动处理;
- [缓冲时间设置]支持buffer time设置;
- [首屏秒开]支持首屏秒开模式;
- [复杂网络处理]支持断网重连等各种网络环境自动适配;
- [快速切换URL]支持播放过程中,快速切换其他URL,内容切换更快;
- [音视频多种render机制]Android平台,视频:surfaceview/OpenGL ES,音频:AudioTrack/OpenSL ES;
- [实时静音]支持播放过程中,实时静音/取消静音;
- [实时音量调节]支持播放过程中实时调节音量;
- [实时快照]支持播放过程中截取当前播放画面;
- [只播关键帧]Windows平台支持实时设置是否只播放关键帧;
- [渲染角度]支持0°,90°,180°和270°四个视频画面渲染角度设置;
- [渲染镜像]支持水平反转、垂直反转模式设置;
- [等比例缩放]支持图像等比例缩放绘制(Android设置surface模式硬解模式不支持);
- [实时下载速度更新]支持当前下载速度实时回调(支持设置回调时间间隔);
- [解码前视频数据回调]支持H.264/H.265数据回调;
- [解码后视频数据回调]支持解码后YUV/RGB数据回调;
- [解码前音频数据回调]支持AAC/PCMA/PCMU数据回调;
- [音视频自适应]支持播放过程中,音视频信息改变后自适应;
- [扩展录像功能]完美支持和录像SDK组合使用。
VLC和SmartPlayer延迟比较
本次播放的是海康2560*1440分辨率,8M码率的rtsp流,延迟对比如下:
可以看到,vlc延迟在1.5秒左右,大牛直播SDK的SmartPlayer的延迟在200来毫秒,在对延迟不敏感的场景下,vlc也是个不错的选择,如果对延迟和稳定性要求非常高的场景,SmartPlayer更胜一筹。以上是二者的比较,感兴趣的开发者,可以单独跟我探讨。
相关文章:
VLC还是SmartPlayer?Windows平台RTSP播放器低延迟探讨
技术背景 好多开发者在用过大牛直播SDK的RTSP播放器后,都希望我们也分享下,如何在Windows平台实现低延迟的RTSP播放?低延迟的RTSP播放器,说起来容易做起来难,下面,我们从以下维度做个探讨: 播…...
极验决策引擎如何凭借独特优势,弯道超车传统风控?
前言 市场上的规则决策引擎产品众多,但大多局限于IP、设备、账号等层面,提供的是现成的风控标签和规则。然而,真正的风控,需要的不仅仅是标签和规则。 极验的业务规则决策引擎与众不同,这款决策引擎以界面流程编排为…...
Spring Boot集成Knife4j文档工具
Knife4j 搭建 Knife4j环境的的搭建和Swagger一样都比较简单,只需要极简的配置即可。 maven依赖 我使用的是较高版本的基于openapi规范的依赖包,OpenAPI2(Swagger)规范是Knife4j之前一直提供支持的版本,底层依赖框架为Springfox。 此次在4…...
html|本地实现浏览器m3u8播放器,告别网络视频卡顿
前言 网络上经常是以m3u8文件传输视频流的 ,但是有时网络慢往往导致视频播放卡顿。于是我在想能不能先下载然后再播放呢?于是尝试下载然后实现本地播放m3u8视频。 正文 1.找到网络视频流的m3u8连接 一般在浏览器按F12就可以看到有请求视频流的连接。 …...
vue3监听横向滚动条的位置;鼠标滚轮滑动控制滚动条滚动;监听滚动条到顶端
1.横向取值scrollLeft 竖向取值scrollTop 2.可以监听到最左最右侧 3.鼠标滚轮滑动控制滚动条滚动 效果 <template><div><div class"scrollable" ref"scrollableRef"><!-- 内容 --><div style"width: 2000px; height: 100…...
JSON
文章目录 一、概念1.json官网2.json的概念3.序列化方案:xml、json 二、json的数据类型1.json的键:必须是带双引号的字符串2.json的值:6种数据类型(1)对象 { }(2)数组 [ ] 三、Python中的json1.序列化:Python对象 转 json2.反序列化…...
前端常用的方法
时间处理 moment时间处理函数 // 时间日期相关常用的方法变量 import moment from moment;// 获取当前时间 moment export const nowDateMoment moment(new Date()); export const nowDateY moment(new Date()).format(YYYY); export const nowDateM moment(new Date()).f…...
JavaScript 对话框的魔法与艺术
在Web开发的世界里,JavaScript 对话框是用户与网页互动的重要桥梁。它们不仅能够提供即时反馈,还能收集用户的输入信息,从而增强用户体验。本文将深入探讨JavaScript对话框的各种类型、用法及其背后的原理,并通过丰富的实例展示如…...
java+springboot+mysql私人会所管理系统
项目介绍: 使用javaspringbootmysql开发的私人会所管理系统,系统包含管理员、技师、用户角色,功能如下: 管理员:用户管理;服务项目;技师管理;房间管理;预约管理&#x…...
Scrapy 爬虫框架全解析
一、Scrapy 框架概述 基本定义 Scrapy 是一个用 Python 编写的开源网络爬虫框架。它旨在快速、高效地抓取网页数据,可处理大规模的数据抓取任务。基于 Twisted 异步网络库构建,能够并发地处理多个请求,大大提高了数据抓取的速度。遵循 “请求…...
Hive3.X——异常处理Could not create ServerSocket on address 0.0.0.0/0.0.0.0:10000
Hive3.X——异常处理Could not create ServerSocket on address 0.0.0.0/0.0.0.0:10000 01 前言 大数据系列,学到了Hive,搭建环境的时候,因为使用的是本机WSL2(别问为啥不用VMware,问就是条件有限,而且WS…...
【跨库查询、多库查询】.NET开源 ORM 框架 SqlSugar 系列
文章目录 一、跨库方式1:跨库导航二、手动跨库查询三、同服务器:自动查询跨库查询3.1 Mysql和SqlServer自动3.2 自动: PgSql跨Scheme查询3.3 其他库同服务器 四、跨服务器:自动跨库查询4.1 配置SqlServer dblink4.2 配置 Oracle dblink4.3 配…...
【JAVA】Java项目实战—Java 数据库应用项目:学生信息管理系统
本项目将实现一个简单的学生信息管理系统,功能包括学生信息的录入、查询、修改和删除。通过本项目,读者将深入理解Java与数据库交互的基本原理,掌握JDBC(Java Database Connectivity)技术,以及如何构建一个…...
中电金信携手中远海科,共启贸易金融数智新篇章
在数智化转型成为驱动经济社会高质量发展的新引擎背景下,“数智方案”栏目聚焦金融等国计民生重点行业场景,依托中电金信“源启筑基咨询引领应用重构”的产品及服务体系,输出市场洞察和行业解决方案、应用案例,旨在全面推动行业IT…...
有没有办法让爬虫更加高效,比如多线程处理?
要让Python爬虫更加高效,确实可以采用多线程处理。多线程可以显著提高爬虫的效率,因为它允许程序同时执行多个任务,从而减少等待时间。以下是一些提高爬虫效率的方法,特别是通过多线程技术: 1. 多线程爬虫 多线程爬虫…...
Android历史版本主要更新说明
Android 15 Android 15 继续致力于构建注重隐私和安全保护的平台,助您提高效率,同时还引入了多项新功能,帮您打造精美应用、卓越的媒体和相机体验,并提供直观的用户体验。在平板电脑和可折叠设备上更能凸显出这些优势。 Android…...
测试岗位应该学什么
以下是测试岗位需要学习的一些关键内容: 1. 测试理论和方法 - 了解不同类型的测试,如功能测试、性能测试、压力测试、安全测试、兼容性测试等。 - 掌握测试策略和测试计划的制定。 2. 编程语言 - 至少熟悉一种编程语言,如 Python、Java…...
华为HarmonyOS NEXT 原生应用开发: 数据持久化存储(用户首选项)的使用 token令牌存储鉴权!
Preferences 数据持久化存储 用户首选项(Preferences) 1. 封装 仓库工具类 ● 这里可以选择将 数据字段 key 抽取为一个静态方法,这里选择让用户传参,看起来较容易理解! /*** 首选项 preferences - 实现数据持久化…...
【AIStarter】告别复杂转换 - MinerU整合包实现PDF到Markdown的无缝转变
在数字化时代,信息的传递与共享变得愈发重要。文档格式之间的转换成为了日常工作中不可或缺的一部分。为了满足用户对高效工作流程的需求,新版MinerU整合包应运而生,它不仅简化了从PDF到Markdown的转换过程,还为用户带来了前所未有…...
Jenkins参数化构建详解(This project is parameterized)
本文详细介绍了Jenkins中不同类型的参数化构建方法,包括字符串、选项、多行文本、布尔值和git分支参数的配置,以及如何使用ActiveChoiceParameter实现动态获取参数选项。通过示例展示了传统方法和声明式pipeline的语法 文章目录 1. Jenkins的参数化构建1…...
服务器批量清理redis keys,无法适用客户端必须直连的情况
在 Redis 中,批量清理指定模式的键(例如 memberCardData:*)可以通过多种方法来实现。需要注意的是,Redis 的命令执行是单线程的,因此对大量键进行操作时可能会阻塞服务器。以下是几种常见的方法: shell K…...
单元测试SpringBoot
添加测试专用属性 加载测试专用bean Web环境模拟测试 数据层测试回滚 测试用例数据设定...
牛客网刷题 | BC126 小乐乐查找数字
😁博客主页😁:🚀从0至1-CSDN博客🚀 🤑博客内容🤑:🍭C语言、C、数据结构、嵌入式、Linux🍭 😎本文内容🤣:🍭BC1…...
Node一、fs 模块、path 模块、端口号、 http 模块、
一、Node.js了解 Node.js是一个跨平台JavaScript运行环境,使开发者可以搭建服务器端的JavaScript应用程序。 概念:使用 Node.js 编写后端程序 / 支持前端工程化 ✓ 后端程序:提供接口和数据,网页资源等 ✓ 前端工程化 &#x…...
k8s service 配置AWS nlb load_balancing.cross_zone.enabled
在Kubernetes中配置NLB(Network Load Balancer)的跨区域负载均衡(cross-zone load balancing),需要使用服务注解(service annotations)来实现。根据AWS官方文档,以下是配置NLB跨区域…...
[分布式即时通讯系统] 注册类完善
我们在qss里添加err_tip样式,根据不同的状态做字体显示 #err_tip[statenormal]{color: green; } #err_tip[stateerr]{color: red; } 接下来项目中添加global.h和global.cpp文件,global.h声明repolish函数,global.cpp用来定义这个函数。 .h…...
C#使用HttpWebRequest下载文件
public static bool HttpDownloadFile(string downloadUrl, string localPath, log4net.ILog log) { bool bFlagDownloadFile false; //log.Debug(“HttpDownloadFile–准备以HTTP的方式下载文件,url:[” downloadUrl “]本地文件:【” localPath “…...
CentOS7环境安装php
直接安装 yum -y install php CentOS7默认安装是php5,现在php已有8.3版本 先查看php -v 版本 如果是低版本,可以删除 yum remove php yum remove php-fpm yum remove php-common 一、添加REMI存储库 yum install epel-release yum install -y …...
【Excel学习记录】04-排序和筛选
1.排序 (1)简单排序 不建议选中某列后进行排序 可以选中一个单元格或者整个表格→开始→编辑→排序和筛选→升序/降序 (2)多条件排序 可以选中一个单元格或者整个表格→开始→编辑→排序和筛选→自定义排序→指定关键字、比较内…...
Python轻松获取抖音视频播放量
现在在gpt的加持下写一些简单的代码还是很容易的,效率高,但是要有一点基础,不然有时候发现不了问题,这些都需要经验积累和实战,最好能和工作结合起来,不然很快一段时间就忘的干干净净了,下面就是…...
恢复删除的文件:6个免费Windows电脑数据恢复软件
数据恢复软件可帮助您从众多存储设备中恢复损坏或删除的数据。您可以使用这些文件恢复软件来检索文件、文档、视频、图片等。这些应用程序支持多种标准文件格式,如 PNG、RTF、PDF、HTML、JPG、MP3 等。 经过超过 75 小时的研究,我分析了 25 最佳免费数据…...
Go的Gin比java的Springboot更加的开箱即用?
前言 隔壁组的云计算零零后女同事,后文简称 云女士 ,非说 Go 的 Gin 框架比 Springboot 更加的开箱即用,我心想在 Java 里面 Springboot 已经打遍天下无敌手,这份底蕴岂是 Gin 能比。 但是云女士突出一个执拗,非我要…...
Java 中枚举的 toString 方法及其字段信息展示
在 Java 编程中,枚举(enum)是一种特殊的数据类型,用于定义一组固定的常量。枚举类型不仅限于简单的常量定义,还可以包含字段、方法以及构造函数,从而使其具备更强的表达能力。toString 方法是 Java 中所有对…...
Python数据分析(OpenCV视频处理)
处理视频我们引入的还是numpy 和 OpenCV 的包 引入方式如下: import numpy as np import cv2 我们使用OpenCV来加载本地视频,参数就是你视频的路径就可以 #加载视频 cap cv2.VideoCapture(./1.mp4) 下面我们进行读取视频 #读取视频 flag,frame cap.re…...
DocFlow票据AI自动化处理工具:出色的文档解析+抽取能力,提升企业文档数字化管理效能
目录 财务应付 金融信贷业务 近期,DocFlow票据自动化产品正式上线。DocFlow是一款票据AI自动化处理工具,支持不同版式单据智能分类扩展,可选功能插件配置流程,满足多样业务场景。 随着全球化与信息化进程,企业的文件…...
python编程Day15-UnitTest框架的介绍
框架 framework为了解决一类事情的功能集合 Unittest 框架 是 Python 自带的单元测试框架 自带的, 可以直接使用, 不需要单外安装 测试人员 用来做自动化测试, 作为自动化测试的执行框架, 即 管理和执行用例的 使用原因 能够组织多个用例去执行提供丰富的断言方法能够生成测试报…...
Linux——进程控制模拟shell
1.进程创建 我们在之前的文章中介绍过进程创建的方法,可以通过系统调用接口fork来创建新的进程。 fork在创建完新的子进程之后,返回值是一个pid,对于父进程返回子进程的pid,对于子进程返回0。fork函数后父子进程共享代码ÿ…...
OpenCV的图像矫正
一、原理 图像矫正的原理是透视变换,下面来介绍一下透视变换的概念。 透视变换(Perspective Transform)基于一个4对点的映射关系(4个源点到4个目标点),通过这些点之间的映射,可以计算一个变换…...
基于php求职招聘系统设计
摘要 随着社会信息化时代的到来,如今人们社会的生活节奏普遍加快,人们对于工作效率的要求也越来越高,企业 举办招聘会耗时耗财,个人参加招聘会漫无目的寻找不到“方向”,网络搜索工作量目的性不强,信息量繁…...
并行口的基本概念
单片机的并行口结构包括多个并行I/O端口,用于与外部设备进行并行数据传输。这些端口能够直接读写外部存储器、显示设备、打印机等外设的数据,是单片机与外界交互的重要通道。在深入探讨之前,我们先简要了解下单片机的基本概念。 单片机&…...
(六)机器学习 - 正态数据分布
正态数据分布,也称为高斯分布(Gaussian distribution),是一种在统计学中非常重要的概率分布。它描述了自然和社会科学中许多现象的分布情况,如人的身高、体重、智商等。正态分布的图形特征是中间高、两边低,…...
电脑系统报错找不到d3dcompiler_47.dll怎么修复?怎么预防“d3dcompiler_47.dll”文件缺失?
“d3dcompiler_47.dll”文件缺失的修复与预防策略 在日常使用电脑软件,尤其是运行大型游戏或图形密集型应用时,我们可能会遇到一些令人困惑的系统报错。其中之一便是“找不到d3dcompiler_47.dll”的错误提示。这个错误不仅影响软件的正常运行࿰…...
Github 2024-12-12 Go开源项目日报Top10
根据Github Trendings的统计,今日(2024-12-12统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Go Ethereum: 以太坊Go语言官方实现 创建周期:3717 天开发语言:Go协议类型:GNU Lesser General Public License v3.0Star数量:4504…...
RIP协议
介绍 路由信息协议RIP(Routing Information Protocol)是基于距离矢量(Distance-Vector)算法的路由协议,它是一种较为简单的内部网关协议IGP(Interior Gateway Protocol)。它的主要功能是帮助路…...
vue-router查漏补缺
一、动态路由匹配 1.带参数的动态路由匹配 import User from ./User.vue// 这些都会传递给 createRouter const routes [// 动态字段以冒号开始{ path: /users/:efg, component: User }, ]这种方式的路由会匹配到/users/abc或者/users/123,路径参数用冒号:表示,并…...
使用Flink CDC实现 Oracle数据库数据同步的oracle配置操作
使用Flink CDC实现 Oracle数据库数据同步的oracle配置操作,包括开启日志归档和用户授权。 flink官方参考资料: https://nightlies.apache.org/flink/flink-cdc-docs-master/zh/docs/connectors/flink-sources/oracle-cdc/ 操作步骤: 1.启用…...
mqtt.js 客户端封装
mqtt.js 客户端封装 没封装前使用 const client mqtt.connect(ws://10.10.20.9:9001) onMounted(() > {const topicList []const channelCount 12for(let i 0; i < channelCount; i) {topicList.push(/test/sendImage${i 1})}client.on(connect, () > {console…...
www.aws.training网站的账户密码如何修改
www.aws.training网站的账户密码如何修改 参加aws考试后, 账号密码如何修改呢? 是不是找了好久都找不到. 右上角, 我的账户, 点击注销. 然后会跳到页面: 点击那个网址链接, 进入新的页面,点安全: 右上角: 更改密码. 按提示来就好....
使用Python实现高性能数据存储
在数据驱动的时代,处理和存储海量数据已成为关键需求。高性能数据存储不仅能够确保数据的快速读写,还能提升系统的整体性能。Python作为一种灵活且功能强大的编程语言,提供了多种高效的数据存储解决方案。本文将详细介绍如何使用Python实现高…...
[已解决]nvm安装node.js 报错 拒绝访问此应用无法在你电脑上运行
报错如下: 出错背景: 心血来潮把node删掉重新安装,想用nvm来进行管理node 出错原因: npm下载失败、下载不完整 不完整的npm展示: 出错根本原因: 可能因为镜像源或者网络波动,导致node下载…...