ZLMediaKit 前端播放器怎么选?xgplayer / DPlayer / ckplayer / ZWPlayer 横向对比

地图打印与 GeoTIFF 导出:框选区域、矢量标绘、一键出图 空间智能实验室 Vol.19:地图打印与 GeoTIFF 导出:框选区域、矢量标绘、一键出图 「把这块区域导成一张带地理坐标的高清图」是个很朴素的需求,但朴素不等于简单。你要在浏览器里框一个框、画几个箭头标个文字、叠一层 阅读详情

自建流媒体链路的团队,服务端选型往往很早就定了 ZLMediaKit——C++ 写的工业级流媒体框架,协议支持全,稳定性经过大量商用验证。但到了前端,"播放器用什么"这个问题经常是被随手处理的:从收藏夹里抓一个以前用过的播放器,接上地址就开始跑。

于是常见的翻车现场是:WebRTC 流播不了、直播断了没人重连、监控画面延迟十几秒、想加个字幕功能发现要自己造一堆轮子。服务端能力满分,前端消费不动,整条链路还是瘸的。

这篇文章就把这件事一次说清楚:先看 ZLMediaKit 到底能输出什么,再看浏览器端的真实约束,然后把 xgplayer(西瓜播放器)、DPlayer、ckplayer、ZWPlayer 四款国产播放器放到同一张表里对比,最后给出分场景的选型结论。不吹不黑,以能落地的技术事实为准。

一、先看清考题:ZLMediaKit 能输出什么

简单介绍一下这位"考官"。

ZLMediaKit 是一套 C++11 实现的 high-performance 流媒体服务框架,跨平台部署,核心设计是协议与媒体处理解耦:输入一路流,输出侧可以同时以多种协议对外服务。它支持的主流协议包括:

  • RTSP / RTMP 推拉流
  • HLS(含切片与点播)
  • HTTP-FLV / WebSocket-FLV / HTTP-TS
  • WebRTC(推流 WHIP、拉流 WHEP 均已支持标准化信令)
  • SRT、GB28181、RTP(安防与国标场景的常客)

除了协议转换,它还带一套完整的运营能力:按需拉流代理(addStreamProxy)、无人观看自动断流、MP4/HLS 录制、RESTful API、Hook 事件回调(鉴权、按需生成、录制通知等)。这也是它在安防监控、企业直播、在线教育这几类场景里装机量很大的原因。

关键在下面这张表。假设有一路流 live/test,ZLMediaKit 对外提供的是一整个地址族(具体端口路径取决于部署配置):

协议播放地址示例典型延迟
RTMPrtmp://host/live/test1~3 秒
RTSPrtsp://host/live/test1~3 秒
HTTP-FLVhttp://host/live/test.live.flv1~3 秒
WebSocket-FLVws://host/live/test.live.flv1~3 秒
HLShttp://host/live/test/hls.m3u85 秒以上
WebRTC(WHEP)https://host/index/api/whep?app=live&stream=test亚秒级

这张表就是前端播放器的考卷。播放器选型的第一问:这张表里你能消费几行?

二、真正的考点在浏览器端

服务端协议全,不等于浏览器能播。Web 端有几条硬约束,直接决定了选型标准:

1. RTSP 和 RTMP,浏览器没有原生支持。
这不是播放器写得好不好的问题,是浏览器根本不提供这两个协议的栈。所以 RTSP 摄像头接入 Web,标准做法就是让 ZLMediaKit 这类服务器做协议转换(这恰恰是它的强项),前端去消费转换后的 WebRTC / FLV / HLS。前端播放器需要具备的是消费转换结果的能力,而不是硬啃 RTSP。

2. HTTP-FLV / WS-FLV 需要 MSE 引擎。
FLV 不是浏览器原生格式,播放器必须内置 flv.js 或 mpegts.js 这类解码封装引擎,并处理好按需加载与直播场景的缓冲策略。

3. HLS 通用,但延迟高。
延迟 5 秒起步,做监控或者互动直播不可接受;低延迟场景必须上 WebRTC。

4. WebRTC 延迟最好,但门槛在信令。
WebRTC 播放需要播放器内置信令客户端——现在主流服务器(含 ZLMediaKit)都支持标准化的 WHEP(WebRTC-HTTP Egress Protocol),播放器只要实现一个标准的 HTTP + SDP 交换客户端就能拉流。问题在于:绝大多数通用 Web 播放器根本没有做这件事。

5. 直播场景的健壮性是隐性考点。
断网重连、卡顿追帧(落后后加速追上而不是一直卡着)、Live 标识这些细节,点播播放器通常不会自带。

把这五条约束翻译成选型清单,就是五个维度:协议消费能力、直播健壮性、点播体验功能、集成成本、授权与维护。下面按这个清单逐个看候选者。

三、四位候选者画像

xgplayer(西瓜播放器)

字节跳动开源,MIT 协议,TypeScript 编写,插件化架构。MP4 原生播放,HLS / FLV / DASH 通过官方插件(xgplayer-hls / xgplayer-flv / xgplayer-dash)接入,弹幕、进度条缩略图预览、记忆播放等视频网站向的功能齐全,社区生态和文档成熟度是四家里最好的。

边界:没有内置 WebRTC 拉流能力,接 ZLMediaKit 的 WebRTC 流需要自己写信令客户端;直播断流重连、追帧这类直播健壮性也需要自行补齐。它更像一个优秀的点播站播放器。

DPlayer

DIYgod 的个人开源项目,MIT 协议,以"轻量 + 好看 + 自带弹幕"著称。FLV / HLS / DASH 分别借助 flv.js / hls.js / dash.js 接入,API 简洁,半天就能在页面里跑起来,是很多个人站和小型项目的心头好。

边界:同样没有 WebRTC 能力;直播断流需要自己监听 error 事件做重连;外挂字幕支持单轨切换,双语、搜索这类需求没有现成方案;个人项目,更新节奏较缓,深度定制前要有心理准备。

ckplayer

国产老牌播放器,免费使用(授权条款以官网为准),配置驱动、功能开关丰富,m3u8 / mp4 / flv 都能播,带缩略图、弹幕、一定的防盗防录屏手段,在传统企业网站里存量很大。

边界:闭源 JS 分发,代码风格自成体系,深度二开不如开源项目顺手;没有 WebRTC 能力,DASH 也未见支持;直播健壮性同样需要自行处理。

ZWPlayer

国产自研播放器,免费商用(注意:非开源分发,介意源码可控的团队需自行评估),当前版本 v3.3.2。它和前三位最大的差异在出身:它的协议栈是照着流媒体服务器的输出矩阵设计的,而不是照着"视频网站点播"设计的。

对着第二节那张考卷看它:WebRTC 内置标准 WHEP 客户端(同时兼容 SRS 信令与阿里 ARTC / 腾讯 TRTC / 百度 BRTC 私有协议);HTTP-FLV / WS-FLV / TS 走 mpegts.js + flv.js 双引擎(FLV 支持 H.265);HLS / DASH 齐备。直播侧 isLive 直播模式、reconnect 自动重连、直播追帧(落后时约 1.1 倍速静默追赶,落后过多直接跳到直播边缘)都是出厂自带。

点播侧它的差异化最明显:SRT / WebVTT / TTML 外挂字幕、双语字幕并行渲染、字幕全文搜索(搜关键词定位时间戳,v3.3.2 起支持播放列表内跨视频搜索)、WebVTT / JSON 章节导航 + 章节搜索面板、进度条缩略图雪碧图、动态防录屏水印、多音轨、倍速、画中画等。配套还有一整套可视化工具(章节编辑器、字幕编辑器、缩略图生成器等)。

顺带一提公平性:监控与低延迟赛道还有 Jessibuca 系播放器(开源版主打 WS-FLV,WebRTC 能力集中在商业版 Jessibuca Pro),也是 ZLMediaKit 生态的常见搭配,本文聚焦免费可用的通用播放器,不展开。

四、横向对比表

维度xgplayerDPlayerckplayerZWPlayer
背景 / 授权字节开源 / MIT个人开源 / MIT国产老牌 / 免费(见官网条款)国产自研 / 免费商用
MP4 / WebM 点播✅✅✅✅
HLS✅ 插件✅ hls.js✅✅
HTTP-FLV / WS-FLV✅ 插件✅ flv.js✅✅ 双引擎(含 H.265)
DASH✅ 插件✅ dash.js—✅
WebRTC(WHEP)❌❌❌✅(另兼容 ARTC/TRTC/BRTC)
直播断线重连自行实现自行实现自行实现✅ 出厂自带
直播追帧❌❌❌✅
外挂字幕(SRT/VTT)✅✅ 单轨✅✅(含 TTML)
双语字幕❌❌❌✅
字幕全文搜索❌❌❌✅(含跨视频)
章节导航 / 章节搜索❌❌❌✅
进度条缩略图预览✅❌✅✅ 雪碧图
弹幕✅✅✅✅
防录屏水印❌❌部分✅ 动态水印
框架封装社区封装社区封装配置式Vue2 / Vue3 / React 官方包,WordPress 插件
TypeScript 类型✅✅❌❌(暂无官方 d.ts)
文档 / 社区成熟度高中中起步阶段

两点说明,免得表格显得偏心:

  • xgplayer 和 DPlayer 的"❌"多集中在流媒体直播侧,这是产品定位使然——它们本来就不是为流媒体服务器设计的,做点播站依然优秀;
  • ZWPlayer 的短板也如实列了:非开源分发、暂无官方 TypeScript 类型声明、社区规模远不及前两位。是否可接受,取决于团队的评估标准。

五、对接 ZLMediaKit:实测代码

以下示例基于 ZWPlayer(协议覆盖全,示例最有代表性),环境假设:ZLMediaKit 已部署在 zlm.example.com,先用 FFmpeg 推一路测试流:

ffmpeg -re -i input.mp4 -c copy -f flv rtmp://zlm.example.com/live/test

WebRTC(WHEP):十行以内

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"></head>
<body>
  <div id="player"></div>
  <script src="https://cdn.zwplayer.com/v3/zwplayer/zwplayer.js"></script>
  <script>
    new ZWPlayer({
      playerElm: 'player',
      width: 640,
      height: 360,
      url: 'https://zlm.example.com/index/api/whep?app=live&stream=test',
      isLive: true,
      reconnect: true,
      autoplay: true
    });
  </script>
</body>
</html>

ZWPlayer 检测到地址里的 /whep 路径会自动走标准 WHEP 客户端:POST SDP offer、接收 answer、按响应 Location 头管理会话资源(播放结束发 DELETE 释放)。这一段是标准协议行为,所以对接 SRS、mediamtx 等其他支持 WHEP 的服务器时代码零改动。

一条流,多协议降级

WebRTC 被某些网络环境(严格 NAT、UDP 封锁)掐断时,同一个页面只需要换 URL 就能降级到 FLV 或 HLS,播放器初始化代码不变:

// WS-FLV:延迟 1~3 秒,兼容性好于 WebRTC
url: 'ws://zlm.example.com/live/test.live.flv'

// HLS:延迟最高,但 CDN 分发扩展性最好
url: 'https://zlm.example.com/live/test/hls.m3u8'

配合 reconnect 重连与自动追帧,弱网直播的观感有基本保障。

RTSP 摄像头:前端根本不用碰 RTSP

安防场景的典型链路是摄像头输出 RTSP。做法是让 ZLMediaKit 做拉流代理:

curl "http://zlm.example.com/index/api/addStreamProxy?secret=你的secret&vhost=__defaultVhost__&app=live&stream=cam01&url=rtsp://摄像头IP:554/Streaming/Channels/101"

之后前端照常播 whep?app=live&stream=cam01 或对应的 FLV 地址——RTSP 的存在被服务器消化掉了,浏览器端永远只面对 Web 友好的协议。这也回答了"ZWPlayer 支不支持 RTSP"这个问题:浏览器内没有原生 RTSP 栈,正确的工程解法就是协议转换,而它把转换后的全部结果都覆盖了。

点播场景:字幕搜索与章节导航

ZLMediaKit 既是直播服务器也带 HTTP 文件服务(MP4 点播)与 HLS 切片能力。点播侧接上 ZWPlayer 的内容功能:

new ZWPlayer({
  playerElm: 'player',
  url: 'https://zlm.example.com/vod/course-01.mp4',
  subtitle: ['course-01.zh.srt', 'course-01.en.vtt'],  // 双语字幕
  chapter: 'course-01.chapters.vtt',                    // WebVTT 章节
  thumbnails: 'course-01.thumbnail.json',               // 雪碧图预览
  autoplay: true
});

课程、发布会回放、庭审记录这类内容,"在字幕里搜关键词直接跳时间点"和"按章节快速定位"是实打实的检索效率提升,而不是锦上添花。

六、按场景给结论

选型没有万能解,按场景说:

  • 纯点播站,HLS / MP4 为主,要弹幕:DPlayer 够用且轻,xgplayer 组件化程度更高、定制空间更大。这两家生态成熟、MIT 协议省心,闭眼选问题不大。
  • 字节系技术栈、深度定制播放器 UI:xgplayer 的插件体系就是为此准备的。
  • 传统企业官网嵌视频、配置式接入、有基础防盗需求:ckplayer 的存量用户可以继续用,新项目建议评估后再定。
  • ZLMediaKit 全协议输出都要消费,尤其需要 WebRTC 低延迟:这是分水岭。免费方案里带标准 WHEP 客户端的通用播放器很少,ZWPlayer 是免费可商用的选项;如果接受商业授权,Jessibuca Pro 也在候选池。
  • 直播与点播混合、内容平台型需求(字幕搜索、章节、缩略图、双语、防录屏水印):ZWPlayer 的功能密度优势明显,一套播放器同时覆盖两类场景,不用点播直播各养一套。

一句话版本:如果只做点播,xgplayer / DPlayer 依然是稳妥默认项;一旦业务长出"低延迟直播 + 监控接入 + 内容检索"中的任何一项,播放器的协议栈就必须重新审视——这时候 ZWPlayer 与 ZLMediaKit 的组合值得进候选池。

七、写在最后

回到开头的判断:ZLMediaKit 负责"什么协议都能收、什么协议都能发",前端播放器负责"发出来的每一种浏览器都能优雅地播"。这两端在协议矩阵上严丝合缝地对齐,才叫适配——这也是本文把协议覆盖放在第一位、功能特性放在第二位的原因。

ZWPlayer 与 ZLMediaKit 的组合恰好构成了这样一个闭环:WebRTC(WHEP)、WS-FLV、HTTP-FLV、HLS、DASH 一一对上,直播重连追帧出厂自带,点播侧的字幕搜索、章节搜索、雪碧图预览补上了流媒体场景里少有人做的内容检索能力。同时它也不是万能药——非开源分发、暂无 TypeScript 类型、社区尚小,这三点是否构成阻塞项,需要结合团队自身情况判断。

选型这件事,说到底是把你自己的协议矩阵和功能清单摊开,和候选者逐项对齐。希望这张考卷和这张对比表,能帮你少走一轮弯路。


参考链接

利用Langchain生成合成数据的实践指南 合成数据是相对于从真实世界事件中收集的数据而言的人工生成的数据。它用于模拟真实数据,同时避免隐私泄露或遇到真实数据中的局限性。:尽管合成数据有诸多优点,但应谨慎使用,因为它可能无法捕捉真实世界的复杂性。 阅读详情

相关推荐

掌控板玩板指南1:初识掌控板、扩展板、Mind+编辑器

掌控板、I/O扩展板入门

好乐无荒之地 1万+

Web 版翻译者资料库

本项目是桌面版《翻译者资料库》的 Web 移植版,基于 Spring Boot 3.3、Thymeleaf、Bootstrap 5.3 与 MySQL 8.0 构建。它面向翻译写作提供资料、词汇、句库、文本工具、对照制作、查找、备份恢复及旧库迁移等功能,完整继承桌面版核心业务规则,支持一键启动与离线访问。

howard2005的专栏 140

MCGS 昆仑通态触摸屏 modbus TCP 数据转发

MCGS触摸屏数据转发modbus TCP数据转发

m0_63451859的博客 2万+

Jackson 序列化 / 反序列化注解 完整版笔记

Jackson 序列化 / 反序列化注解 完整版笔记

handsome_sai的博客 272

BLDC方波控制双闭环Simulink仿真模型

无刷直流电机方波控制双闭环Simulink仿真模型搭建详细教程,包括速度PI环、电流PI环、换向逻辑和受控电压源,仿真结果良好。

m0_57458432的博客 6870

《QMT量化实战系列》支持自定义筛选与排序的多因子策略,实测年化收益超100%

【QMT量化实战系列】推出《支持自定义筛选与排序的多因子策略》,通过Tushare获取38个核心因子数据,实现股票多维筛选(剔除ST股、次新股及特定板块)。策略创新性地采用多因子加权排名机制,通过(股票数-排名+1)/股票数*100的算法计算各因子得分,支持自定义权重组合。该策略提供完整代码及详细注释,涵盖数据获取、因子筛选、权重排序等核心环节,帮助用户构建个性化量化模型。系列内容每月更新1-2期,由浅入深讲解QMT平台实战应用。

qq_46262068的博客 1255

【项目推荐】基于 SpringBoot3 + Spring AI 的游泳馆管理系统:Agent + RAG + Function Calling 一次学全

它不是玩具 Demo,而是一个「业务 + AI」双主线交织的真实系统——预约业务在跑,AI 客服在旁边实时查库作答,两条线通过 Function Calling、RAG、站内消息串成一体。面试官问「你做过什么 AI 项目」时,你能从业务场景讲到架构取舍,从 RAG 切分参数讲到降级兜底——这和「我调了一下 ChatGPT 的 API」是完全不同的两个段位。项目已包含完整的建表 SQL、初始化数据、部署文档,克隆下来就能跑。获取方式:见文末说明 / 后台回复关键词获取。—— 完 ——

深耕开发,专注编程实战。分享源码解析、项目搭建、问题排查笔记,沉淀技术,持续更新。 347

Qt 【window udp 高频采集丢包问题】

使用Asio + 无锁队列或者环形缓存区方案可以解决 qt udp 在window平台高速采集 (128k)丢包问题。

weixin_45397344的博客 177

MCP 协议会成为前端 AI 工程的标准接口吗?

MCP(Model Context Protocol)正在成为连接 AI 模型与外部工具、数据源的一层通用协议。本文从 MCP 的核心机制出发,分析它在浏览器与前端工程中的落地边界,讨论它能否成为前端 AI 工程的标准接口,并给出当下更务实的架构选择建议。

m0_62937412的博客 336

使用Transformer实现自动调制识别(RML2018)

image_size = 1024 # resize重置输入大小patch_size = 16 # 从输入图片中将被提取的块大小# 分成 num_patches 个块num_patches = (image_size // patch_size) #(72/6)**2 横着裁剪),],return x})

QAQIknow的博客 1321

YOLO蒸馏原理篇之---MGD、CWD蒸馏

本文详细介绍了特征蒸馏中的两种经典有效方法,MGD和CWD蒸馏

qq_41920323的博客 3241

LangGraph 本地 build 频频翻车,最终在服务器跑通流式对话

先说结论:我本地那个,一次都没成功过。三次,三次,全挂在拉镜像上。而顺得像刚上过油。这就很像我高中那辆自行车:骑着能走,一上锁就坏。那天晚上我盯着终端里那行红字看了很久,想的不是技术方案,想的是——为什么同一个工具,可以一边让我觉得自己很行,一边让我觉得自己不太行。

人工智能AI技术 97

【MATLAB】工业传送带速度闭环控制与张力联合仿真

本文基于MATLAB/Simulink平台,构建了工业传送带速度闭环控制与张力联合仿真系统。通过搭建驱动模块、机械传动模块、检测模块和控制模块,实现了速度与张力的协同控制。采用双PID调节器分别整定速度与张力参数,经联合调试后系统性能良好:速度跟踪误差小于±0.03m/s,张力波动控制在±30N内,负载扰动恢复时间仅0.3秒。研究提供了从建模到参数优化的完整工程方案,可直接应用于课程设计或工业实践,有效解决了传送带运行中速度偏差与张力波动的协同控制难题。

unber的博客 78

海外平台频繁弹验证?从 DNS、WebRTC 到浏览器指纹的环境异常排查清单

在运营多地区海外平台账号时,即使代理节点通畅、TCP 握手成功,仍可能遇到频繁人机验证、地区限制、播放失败等异常。核心结论是:这类问题往往不在网络传输层,而在浏览器环境参数与网络出口之间的逻辑自洽性。本文从 DNS 泄漏、WebRTC 穿透、时区与语言匹配、Canvas/WebGL 指纹、TLS 特征五个维度,给出一份可复现的环境异常排查清单,并对比个人手动配置与工程化环境管理方案的适用边界。适用于跨境运营、多账号运维团队。

P1Browser【p1指纹浏览器】的博客 183

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

智能问诊的流程

本文介绍基于FastAPI构建的医疗多Agent系统MediAgent,通过症状分析、诊断推理与治疗建议等模块协同,实现从问诊到报告生成的完整工作流。系统采用前后端分离架构,结合MySQL、RabbitMQ与Docker实现工程化部署,支持异步化验结果接入。虽当前状态暂存于内存,但已具备可扩展性,未来可通过Redis持久化、消息队列联动及医疗安全机制完善,应用于慢病管理、辅助决策等场景,推动AI在医疗流程中的落地应用。

Joey 的工作空间~ 773

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

信号链电路怎么选运放?奥特四款信号链运放解析【选型参考】

在模拟电路设计中,运放作为信号链的“第一道门槛”,其微小误差往往决定了整个系统的成败。

naNa_1120的博客 191

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

流式输出 SSE:实现 AI 对话打字机效果后端开发

摘要解决传统 HTTP 请求在 LLM 长文本生成时导致的客户端长时间阻塞与 TTFT 极高的问题。适用于需为 AI 应用提供打字机效果、优化交互体验的后端开发工程师。读完可获得基于 FastAPI 与 SSE(Server-Sent Events)技术的流式响应实现代码、协议规范及生产环境避坑指南。关键词SSE、流式输出、FastAPI、打字机效果、TTFT、大模型推理背景与问题大模型(LLM)生成完整回复通常耗时数秒至数十秒,传统请求-响应模型导致用户界面长时间无响应,体验极差。

2402_85729970的博客 181

基于 YOLOv8 的森林火灾检测系统(Web 版)

本项目面向林区早期火情识别场景,使用YOLOv8完成火焰(Fire)与烟雾(Smoke)两类目标的检测模型训练,并以FastAPI构建 Web 检测平台,把模型能力封装为可直接登录使用的系统。平台除常规的图片、批量、视频、摄像头检测外,还提供同图多权重对比、数据集浏览与标注核对、模型热切换,以及把训练搬到网页上的能力:可在浏览器配置超参数发起真实训练,训练中在线调整学习率、查看进度与动态曲线,训练完成后下载产物或直接应用到检测。

Michael_Jay的博客 62

身份验证漏洞专题(三):持久登录、密码重置与密码修改中的凭据绑定缺陷

密码登录与双因素认证是身份验证的主干流程,但一个完整的认证体系还依赖三类辅助机制:持久登录("记住我")、密码重置、密码修改。这三类机制的共同特征是:它们同样携带或验证凭据,同样直接决定认证状态的归属,但实现时获得的防护强度往往远低于登录页面本身。攻击者绕不开登录接口时,常常可以从这些辅助入口进入。

2401_85321170的博客 630

二进制木马免杀-Python 分离免杀与 Web 挂马

二进制木马免杀-Python 分离免杀与 Web 挂马

2503_94637398的博客 268

Vue 前端开发 AI 对话页面:流式消息渲染、文件上传

关键点是不能手动设置 Content-Type 为 multipart/form-data,必须由浏览器自动生成带有 boundary 的请求头,否则后端无法解析。思路:将对象序列化为 JSON 字符串,作为 FormData 的一个普通字段(如 formData.append(‘payload’, JSON.stringify(data))),后端接收该字段后再反序列化。若上传大文件(>10MB),需实现独立的分片上传接口,在提交对话前先获取文件 id 或 url,再随文本发送引用。移除输入框的禁用态;

2402_85729970的博客 388

在Open-WebUI中提升向量化速度

让Open-WebUI AI聊天的向量化过程不超过10秒,而不是默认的20+分钟……

xyzzklk的博客 574

Writeup 4 0xGame 2021 · command (WEB)

前端限制不可信:永远不要相信前端的任何限制(如disabled按钮、JS 验证等)。攻击者可以直接构造 HTTP 数据包绕过前端校验,所有的安全限制必须在后端实现。命令执行/注入(RCE):Web 应用如果直接调用系统命令且未对输入进行严格过滤,攻击者可以利用;||等符号拼接恶意命令。绕过技巧:在 CTF 中,如果遇到命令执行被过滤,常见的绕过方式包括:${IFS}$IFS$9等。。cat /fla?或cat /fl*。Linux 基础。

hengdonghui的博客 131

使用HTML+CSS+JavaScript实现文件上传弹窗

使用HTML+CSS+JavaScript实现文件上传弹窗

bjzhang75的博客 207

ArkWeb 混合开发的内存清理与桥接陷阱

起初我以为是 H5 内部的定时器没有清理,结果接了 DevEco Studio 的 Profiler 一看,全是 ArkTS 侧的原生对象没有释放。改用 RESIZE 后,键盘弹出只会压缩窗口高度,底部的输入框会自适应滚动到可视区域,页面顶部的元素则岿然不动。综上所述,混合开发绝不是简单的拼接,管好桥接的生命周期,做好跨域兜底,才是稳定运行的前提。如果不去主动干预,它会把你的原生内存吃得连骨头都不剩。在 H5 的输入框打字时,软键盘一弹出来,整个 Web 页面就被顶得飞起,连顶部的原生导航栏都不见了。

2502_91284977的博客 235

热工测点布线改造难题?IDCB 远程 I/O 采集前端简化现场布线

IDCB智能数据采集前端基于Modbus-RTU协议,支持热电偶、热电阻、直流信号多类型混采,单设备多通道接入,减少模块选型压力。双总线冗余设计保障数据连续性,适配锅炉、窑炉等高可靠性工况。采用总线式布线替代点对点接线,大幅减少电缆用量,配合组态软件或LCD面板,实现远程监控与现场调试便捷化。适用于脱硫脱硝、就地监控及系统改造项目,具备抗干扰、隔离保护、掉电存参等特性,有效提升热工测点采集系统的稳定性与运维效率。

wxyzzdh200988的博客 192
上一篇: 17 · 引擎适配器全景:HLS/DASH/Vimeo/Mux/Cast
下一篇: videojs v10 源代码系列解读:18 · 媒体轨道与 rendition 列表实现
逻辑玩家
博客等级 码龄19年 75粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值