自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 资源 (2)
  • 收藏
  • 关注

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

自建流媒体链路中,ZLMediaKit服务端能力强大,但前端播放器选型常被忽视,导致WebRTC无法播放、延迟高、断连难重连等问题。本文对比xgplayer、DPlayer、ckplayer与ZWPlayer四款国产播放器,聚焦协议支持、直播健壮性、字幕功能等维度。结论:若需全协议覆盖(尤其WebRTC)、低延迟直播与高级交互功能,ZWPlayer为最优解;点播场景则可选xgplayer或DPlayer。选型应基于实际业务需求,避免“服务端强、前端弱”的链路短板。

2026-09-21 20:17:23 1811

原创 2026 年 H5 端 VR/360° 全景视频播放器技术选型与评测

本文面向前端开发者,深入解析Web端VR/360°全景视频播放的底层原理与主流方案。从等距柱状投影格式、WebGL渲染管线到多端交互控制,系统梳理技术实现路径。重点评测ZWPlayer与百度Cyberplayer两款主流播放器:前者支持多协议流、自动识别全景模式、提供可视化调参面板,适合企业级应用;后者为闭源商业产品,需授权使用。文章强调选型应关注格式兼容性、交互方式及是否支持直播与立体3D,助力开发者高效集成沉浸式视频体验。

2026-09-14 16:53:39 1387

原创 videojs v10 源代码系列解读:35 · HLS 解析器:multivariant 与 media playlist

SPF 的 HLS 解析器(parse-multivariant.ts、parse-media-playlist.ts、parse-attributes.ts)是零依赖的纯函数,将文本精准转为类型化结构。核心亮点包括:引号优先解析属性、两行式 STREAM-INF 处理、基于 URI 折叠与最小带宽代理的跨音频组去重算法,巧妙解决 HLS 笛卡尔积问题;从视频流 CODECS 偷取音频 codec 补规范空隙;并严格遵循“无知”设计——不判断 live/VOD、不填充未知字段,确保可测性与纯粹性。

2026-10-01 14:44:49 200

原创 videojs v10 源代码系列解读:34 · `createComposition`:类型安全的冲突检测

createComposition 通过编译期类型检查与运行时执行协同,实现行为组合。运行时分三步:构建去重信号映射、共享 deps 执行 setup 并收集 cleanup、异步清理后重置信号。编译期核心为四层类型链:从 setup 推导状态类型,递归交集合并行为类型,检测交叉塌缩(never/undefined)识别冲突,最终通过 ValidateComposition 在调用时拦截类型错误。冲突以字符串字面量报错,确保组合安全,是 TypeScript 类型系统精妙应用的典范。

2026-10-01 14:43:35 221

原创 videojs v10 源代码系列解读:33 · Behavior:通用组合单元

SPF 核心创新在于将信号、Actor、Reactor 等统一为可组合的 Behavior,实现“引擎即 Behavior 列表”的架构。Behavior 通过 stateKeys/contextKeys 声明依赖,setup 中构建响应关系或实例化内部原语,外部仅通过信号槽通信,零直接引用。defineBehavior 在编译期强制键名穷尽,防止运行时错误;makeShareSignals 提供消费者边界,支持捕获信号引用并物化输入槽。读写权限由每个 Behavior 自行声明,类型安全由 TS 保障。组

2026-09-30 08:33:47 252

原创 videojs v10 源代码系列解读:32 · Reactor 模型:信号驱动的状态机

Reactor 是信号驱动的“薄翻译器”,通过 monitor(状态自动转换)、entry(进入时执行一次)、effects(依赖变化重跑)实现响应式逻辑。其核心仅192行,将生命周期全绑定在 effect 的 cleanup 契约上,实现“状态切换即清理”。monitor 优先于状态效果执行,确保 transition 立即生效;所有行为编译为 descriptor 数组,统一由 effect() 驱动,类型强制每个状态显式声明,保障完整性。销毁分两步预留异步扩展,体现极致简洁与安全。

2026-09-30 08:32:41 191

原创 videojs v10 源代码系列解读:31 · Actor 模型:消息驱动的有限状态机

Actor 是基于消息驱动的响应式状态机,核心机制包括:快照即信号实现自动响应,getState 用 untrack 避免意外依赖,transition 与 setContext 分别更新状态与上下文。通过 on 消息分发表实现类型安全的事件处理,getContext() 提供 live 读取语义以支持异步任务链。onSettled 在任务批次完成后自动转换状态,配合三重防护防止陈旧状态更新。整体设计兼顾安全性、响应性与可组合性,为 SegmentLoaderActor 等组件提供坚实基础。

2026-09-29 11:24:18 177

原创 videojs v10 源代码系列解读:30 · `SerialRunner` 与 `ConcurrentRunner`

本文解析 SPF 框架中两个精巧的 Runner 实现:ConcurrentRunner 通过 promise 引用身份比对实现无 generation token 的过时回调丢弃,同 id 任务自动去重;SerialRunner 利用 promise 链天然队列特性,零显式队列实现串行调度,settled 作为内部 generation token 管理批次状态。两者均以优雅的异步设计解决并发与串行场景下的任务管理难题,展现函数式与引用语义在复杂控制流中的高阶应用。

2026-09-29 11:23:28 343

原创 videojs v10 源代码系列解读:29 · `Task`:可取消的异步单元

Task 是 SPF 并发处理的地基,封装可取消的异步操作:自带 AbortController,支持外部信号组合,通过 TaskLike 接口实现状态、身份与可取消性。核心设计强调状态排序保证(先写 value/error 再更新 status),确保观察者安全读取结果;abort() 仅触发信号,状态变更由 runFn 决定,保持职责清晰。不依赖响应式信号存状态,状态查询用 getter,完成感知用回调,克制而高效。去重与调度交由 Runner 负责,形成“执行单元 + 调度策略”分层架构。

2026-09-28 23:27:38 231

原创 网课回放总被吐槽“找不到重点“?一次 Web 播放器选型的完整记录

本文分享企业内训平台改版中针对“回放难找内容”的痛点,通过将用户反馈转化为可验证的需求清单,对比四款播放器后,最终选定闭源的ZWPlayer。其核心优势在于:悬停预览缩略图、上拉精确定位、字幕全文搜索(支持跨课程)、双语字幕同屏与章节导航,显著提升回放体验。配套可视化工具降低资产生产成本,接入简单,虽存在闭源、文档尚在完善等短板,但在“回放为核心”的教育场景下,成为最优解。

2026-09-28 23:25:56 1796 1

原创 videojs v10 源代码系列解读:28 · 信号基底:TC39 Signals polyfill 封装

SPF 通过 primitives.ts 薄层封装 TC39 Signals,实现类型安全的读写分离与原子更新。核心技巧在于 update 函数结合 untrack 避免依赖污染,effect 则巧妙利用 Computed 的重跑机制实现副作用自动清理。watcher 借微任务批处理调度,确保响应式更新高效有序。整体设计简洁而精巧,体现运行时依赖追踪的工程智慧。

2026-09-26 19:42:51 221

原创 videojs v10 源代码系列解读:27 · SPF 总览:三层模型与设计目标

SPF 是 v10 的核心创新,基于 TC39 Signals 与 Actor/Reactor 模型重构 HLS over MSE 流处理框架。它打破传统单体设计,将解析、ABR、缓冲等职责拆分为单一职责的层(core/media/network/playback),实现高可维护性与可测试性。通过信号驱动状态、消息驱动 Actor、翻译驱动 Reactor 的三层模型,构建响应式、可组合的流处理系统。核心原语阶梯化设计,以 Behavior 统一引擎组件,最终在 createSimpleHlsEngine

2026-09-26 19:41:18 172

原创 videojs v10 源代码系列解读:26 · presentation 子系统:全屏/PiP/远程播放/方向锁

v10 的 presentation 子系统通过纯函数库与 feature 装配分离,精准应对浏览器兼容难题:全屏采用四级降级请求与四层状态判定,覆盖 iOS、Safari PWA 及 Cast 场景;PiP 通过 UA + display-mode 避开 Safari PWA 崩溃陷阱;远程播放依赖鸭子类型并调用浏览器原生设备选择 UI;方向锁则以“事实”与“意图”双标志优雅处理异步竞态,实现跨平台一致体验。

2026-09-25 19:26:43 181

原创 videojs v10 源代码系列解读: 25 · 输入动作注册表:手势/热键→媒体的桥

v10 播放器通过 media-actions.ts 共享内核,将手势与热键的相对操作(如快进、调速)统一到动作注册表中,仅通过 selector 读取状态并调用 store 方法,实现单一逻辑、自动同步 UI。toggle 类动作则由各输入系统直接调用 store.state.xxx() 处理。其中播放速率采用循环列表导航,确保始终在合法档位间切换,体验更流畅。该设计解耦清晰,支持多输入扩展,兼顾一致性与可维护性。

2026-09-25 19:25:51 207

原创 videojs v10 源代码系列解读:24 · 记忆化选择器与派生状态

本文详解核心状态层的16个选择器设计:以feature为单位构建一行式createSelector,实现精准切片。通过“未配置返回undefined”实现UI自动降级,结合SnapshotController与useStore的浅比较,达成按feature粒度的记忆化与独立重渲染。派生状态不放选择器层,而是由feature的state()或UI Core的getState()处理,保持选择器纯粹性。警惕状态键重叠隐患,强调结构清晰、边界分明的设计哲学。

2026-09-24 22:20:34 185

原创 videojs v10 源代码系列解读:23 · 数据属性序列化与 CSS 变量桥接

v10 通过“双桥”实现无头 Core 与皮肤的解耦:data-* 属性桥接离散状态(如暂停、禁用),CSS 自定义属性桥接连续数值(如滑块填充百分比)。核心逻辑仅输出状态数据,通过统一序列化规则(true→空属性,falsy→移除)适配 React 与 Web Components。皮肤纯 CSS 消费属性与变量,实现零 JS 交互反馈,达成逻辑与样式彻底分离。

2026-09-24 22:19:42 162

原创 videojs v10 源代码系列解读:22 · 无头 UI Core:纯逻辑组件范式

03 篇用介绍过「无头 Core」的概念,这篇深入它的全貌。我会用三个代表性 Core 做对比:PlayButtonCore(03 篇讲过,简单按钮)、SliderCore(滑块,纯计算型)、CaptionsRadioGroupCore(列表型,内部有响应式状态)。看完你会发现这个「纯逻辑组件」范式有清晰的分层规则。

2026-09-23 12:57:31 103

原创 videojs v10 源代码系列解读:21 · 逐个解析核心 Feature

本文拆解视频播放器核心 feature 机制:volume 通过动态创建 video 探测 iOS 音量控制能力,time 实现乐观更新与 seek 抢占,buffer 将 TimeRanges 转为可判变的 tuple 数组,source 换源时清空所有操作,error 与 emptied 事件联动,live 依赖多事件重算直播边缘,text-track 用内层 AbortController 处理异步加载,quality 通过对象身份重绑实现换源后自适应。各模块均遵循「守卫→sync→listen」模式

2026-09-23 12:55:55 273

原创 videojs v10 源代码系列解读:20 · Feature 预设:video/audio/live/background

v10 通过类型化元组实现预设,将 16 个 feature 组装成开箱即用的播放器形态。预设非魔法,而是基于领域逻辑的合理取舍:直播去倍速因无意义,音频无全屏因无画面,背景视频暂为空因待设计。空预设也导出以支持类型先行。预设可自由组合,顺序影响覆盖但当前仅具可读性。核心思想是“不装即隐藏”,通过 undefined selector 实现按钮自动消失,比隐藏更彻底。

2026-09-22 12:00:07 152

原创 videojs v10 源代码系列解读:19 · Feature 即 Slice:播放器的能力组装机制

v10 播放器核心以「Feature」为最小单元,将播放、音量等能力抽象为标准 store slice,实现组合式架构。每个 Feature 是 Slice<PlayerTarget, State>,通过 state() 提供状态与动作,attach() 绑定副作用,并内置能力守卫与信号管理。支持 plain 与 configurable 两种形态,兼顾内置功能与外部扩展。播放器即 feature 的组合,类型推导贯穿全链路,生命周期自动管理,状态响应式更新,彻底取代 v8 插件机制,实现“组合优于继承”的

2026-09-22 11:58:52 42

原创 videojs v10 源代码系列解读:18 · 媒体轨道与 rendition 列表实现

v10 通过 media-tracks/ 模块在浏览器不支持时,用 polyfill 实现统一的音视频轨道与清晰度列表管理。核心亮点:利用 WeakRef 反向引用避免循环引用;queueMicrotask 实现事件防抖,合并高频变更;generator 配合 Symbol.iterator 动态生成可迭代列表;selected 与 active 状态分离,精准反映用户选择与实际播放状态。整体设计兼顾性能、内存安全与语义一致性。

2026-09-21 20:19:58 227

原创 17 · 引擎适配器全景:HLS/DASH/Vimeo/Mux/Cast

v10 通过两种集成模式统一管理异质媒体源:Host-subclass(如 hls.js、dash.js、Vimeo)全程接管,继承 HTMLVideoElementHost 重写生命周期;Component/override(如 Google Cast)动态接管,利用 targetOverride 逐属性切换,实现投屏时远程控制。前者适合全权控制的播放器,后者支持条件性能力转移。mixin 组合功能、模块增强配置类型、规范实现 RemotePlayback 等设计,使系统兼具灵活性与一致性,支撑复杂场景下

2026-09-19 22:25:33 173

原创 16 · `custom-media-element`:属性拦截与转发

CustomMediaElement 是一个类工厂,将 MediaHost 包装为可声明式使用的 Web Component。它通过两层属性转发:一是原型遍历自动代理 host 属性,二是显式声明处理命名不一致的属性;结合 attributeChangedCallback 类型转换、子元素克隆同步(如 <track>/<source>)、事件桥接与销毁保护机制,实现 <mux-video> 等自定义元素对原生 <video> 的无缝兼容。

2026-09-19 22:24:46 210

原创 videojs v10 源代码系列解读:15 · `HTMLMediaElementHost`:主机-组件模型

HTMLMediaElementHost 是 media 模块的核心枢纽,通过泛型适配多种播放目标(如 <video>、iframe),实现 MediaFull 接口但几乎不持有状态。其核心机制是「组件覆盖」:通过 getMediaOwner 按注册顺序逐属性委托给组件的 targetOverride,支持组件按需接管能力。组件通过 MediaComponent 接口注册,可动态替换 paused、currentTime 等属性行为,如 Google Cast 投屏时无缝切换至远程媒体对象。事件转发、弱引用

2026-09-18 12:11:20 199

原创 videojs v10 源代码系列解读:14 · 谓词守卫:在运行时安全地调用能力

谓词(predicate)用于在运行时安全探测媒体对象是否具备特定能力,弥补 TypeScript 类型在运行时消失的缺陷。核心模式为:先类型守卫,再检查字段与方法存在性。关键在于三个复合谓词——isMediaBufferCapable、isMediaTextTrackCapable、isMediaRemotePlaybackCapable——额外排除空哨兵(如 EMPTY_TIME_RANGES),以区分占位与真实能力。谓词仅覆盖需动态探测的能力,不为必然支持或简单布尔值定义。例外是 hasMetadat

2026-09-18 08:33:38 129

原创 videojs v10 源代码系列解读:13 · 能力型媒体契约:`Media` 的组合接口

v10 通过“能力型契约”解决媒体源差异问题:将 HTMLMediaElement 拆分为数十个最小化、可独立检测的 Capability 接口(如 MediaPlaybackCapability、MediaSeekCapability),每个仅定义单一功能。结合 EventLike 与 TypedEventTarget 实现类型安全事件系统,利用 TypeScript 的 extends 混入机制灵活组合能力,实现从原生 <video> 到 Google Cast 等异构媒体源的统一抽象与安全探测。

2026-09-17 08:36:08 189

原创 videojs v10 源代码系列解读:12 · Slice 组合、选择器与取消注册表

/ L71 — 恒等函数 }// L71 — 恒等函数函数体就是——恒等函数,运行时零成本。那它图什么?纯类型推断辅助。先捕获Target,返回一个泛型<State>的工厂。// State 自动从 state 返回类型推导();// State 自动从 state 返回类型推导TypeScript 从state的返回类型推导出State,调用方不用手写状态接口,就拿到。这就是 03 篇说的「Feature 即 Slice」的代码基础——core包的本质就是。

2026-09-17 08:35:03 240

原创 videojs v10 源代码系列解读:12 · Slice 组合、选择器与取消注册表

/ L71 — 恒等函数 }// L71 — 恒等函数函数体就是——恒等函数,运行时零成本。那它图什么?纯类型推断辅助。先捕获Target,返回一个泛型<State>的工厂。// State 自动从 state 返回类型推导();// State 自动从 state 返回类型推导TypeScript 从state的返回类型推导出State,调用方不用手写状态接口,就拿到。这就是 03 篇说的「Feature 即 Slice」的代码基础——core包的本质就是。

2026-09-16 10:58:39 149

原创 videojs v10 源代码系列解读:11 · `@videojs/store`:目标附加式响应状态

v10 播放器状态系统基于 createState 与 store 工厂,核心是「目标附加式」设计:状态可先于媒体元素存在,支持预初始化与动态切换。通过模块级微任务批处理,多个容器的更新合并为一次 flush,提升性能。StateContainer 实现不可变状态与惰性通知,仅在值变更时触发更新,并利用 AbortSignal 实现监听器自动清理。柯里化工厂模式实现类型推导与灵活扩展,构建响应式、高效且可维护的状态管理基石。

2026-09-16 10:57:10 163

原创 videojs v10 源代码系列解读:10 · `DestroyMixin`:双重 rAF 延迟销毁

DestroyMixin 为 ReactiveElement 添加“永久销毁”语义,通过双重 requestAnimationFrame 延迟确认 isConnected 状态,有效防止 DOM 重组或框架协调导致的误销毁。结合 hostDestroyed 钩子与镜像 Set 实现控制器资源释放,辅以 performUpdate 和 connectedCallback 的保护机制,确保销毁后不再响应更新或重连。其设计精巧,是处理 Web Components 生命周期复杂性的优雅解法。

2026-09-15 11:26:37 163

原创 videojs v10 源代码系列解读:09 · 异步更新调度:Promise 门控的微任务批处理

v10 的 ReactiveElement 通过 Promise 门控与 async/await 实现高效批处理:构造时创建未决 Promise 阻止更新,connectedCallback 解锁首次渲染;后续 requestUpdate 被去重,仅首次入队;#enqueueUpdate 中 await this.#updatePromise 同时实现门控与串行化,确保同一 tick 内多属性变更仅触发一次渲染。updateComplete 由 isUpdatePending 状态驱动,精准反映更新生命周期

2026-09-15 11:25:26 191

原创 videojs v10 源代码系列解读:08 · @videojs/element:轻量响应式自定义元素基类

@videojs/element 是一个精简版 Lit 核心,仅保留响应式属性与更新调度,移除模板、Shadow DOM、装饰器等冗余功能,适配 Video.js v10 自主渲染的 UI 架构。通过 ReactiveElement 实现基于原型访问器与 Symbol 槽位的响应式机制,利用 Object.is 判变并触发 requestUpdate。属性变更通过 attributeChangedCallback 反射为属性值,支持布尔与数字类型转换。控制器通过 addController/removeCo

2026-09-14 16:46:12 284

原创 videojs v10 源代码系列解读:07 · AbortSignal 组合与可取消异步

v10 以 AbortSignal 为核心构建统一清理机制,将「取消」提升为系统一等公民。通过 anyAbortSignal 合并多信号、abortable 实现可取消 Promise,结合 AbortControllerRegistry 的 base、reset 与 supersede 三招,实现事件监听、store 附着、SPF 异步任务的自动清理。核心思想是生命周期委托给原生 API,零泄漏、零手动管理,彻底解决内存泄漏与取消逻辑混乱问题。

2026-09-11 13:28:56 182

原创 HTML5 视频交互标注实践:用开源播放器 ZWPlayer 实现热区、测验与分支节点(附接入代码)

本文分享了视频交互标注项目的选型与落地实践,对比SaaS平台与开源方案(如ZWPlayer),最终选择开源方案以实现视频中嵌入文字提示、热区跳转、答题及分支逻辑等交互功能。重点解析了ZWPlayer的ZWMAP协议、节点体系、事件动作机制及安全设计,并提供网页及Vue/React接入代码,强调其数据可版本管理、敏感内容不外传的工程优势,适用于自托管视频与需深度定制的场景。

2026-09-11 12:47:56 834

原创 videojs v10 源代码系列解读:06 · DOM 工具箱:事件、聚焦、Shadow DOM、定位

本文深入解析播放器工具库 dom 模块的六大核心能力:通过 resolveEventTarget 穿透 Shadow DOM 获取真实事件目标;用 getDeepActiveElement 深挖焦点元素;结合 closest 与 matches 实现精准交互判定;以三重防御保障 Popover 兼容性;利用 CSS.supports 探测现代布局特性;通过双重检测处理 WebKit 前缀 API;最后以 rafThrottle 实现帧调度优化,展现高阶 DOM 处理的工程智慧。

2026-09-10 18:05:34 205

原创 videojs v10 源代码系列解读:05 · `@videojs/utils`:纯函数工具集设计

@videojs/utils 是 monorepo 的基石,纯函数无状态,13个子路径导出实现精细拆分,支持 tree-shaking。设计精髓包括:生命周期委托原生 API(如 listen 透传 options)、鸭子类型兼容多环境、SSR 安全的 typeof 检查,以及泛型保留类型精度。这些细节共同铸就 v10 高性能、可维护、跨平台的工程品味。

2026-09-10 18:04:27 156

原创 免费网络电视 + 电台资源怎么整理最好用?这个工具 + 一个 JSON 文件就够了

本文介绍 ZWPlayer 的 ZWMAP 协议与在线播放列表编辑器,通过统一的 JSON 文件管理 IPTV、HLS 电台、MP4 点播资源,支持跨设备加载与链接分享。编辑器提供多格式导入、树形编辑、实时校验与预览功能,可配置字幕、水印、章节等元数据。针对 CORS 跨域问题,建议优先选用带头源或自建反向代理;直播源维护推荐多线路备用并记录来源。适用于家庭整合、朋友分享及多人协作场景,免费开源,支持商业使用。

2026-09-09 17:38:10 775

原创 videojs v10 系列解读:04 · 从入口到渲染:一次播放的生命周期

本文详解 Video.js v10 播放器从 createPlayer() 到播放的完整调用链。核心路径:createPlayer → createStore(柯里化工厂)→ attach(target) 绑定媒体元素 → combine() 分发 attach 至各 Feature → 状态更新触发 UI 变化。HTML 与 React 入口在 @videojs/store 层汇合,通过 attach 建立状态与媒体的连接,实现“目标附加式”架构。关键机制包括信号控制自动清理、错误隔离与类型推导优化,揭示

2026-09-09 16:58:32 132

原创 videojs v10 系列解读: 03 · 三大设计哲学:无头 Core、能力契约、行为组合

v10 播放器以三条核心设计原则重构:无头 Core 与平台渲染器分离,逻辑不依赖 DOM,实现跨平台复用;能力型契约,通过细粒度接口与谓词守卫,支持部分能力的静默降级;行为组合,将复杂功能拆解为可插拔的 Behavior 单元,实现高内聚、低耦合。真实代码中,PlayButtonCore 纯逻辑、isMediaSeekCapable 运行时判断、Behavior 组合配置,均体现其工程哲学——让系统更可测、可维护、可扩展。

2026-09-09 16:57:14 105

原创 videojs v10 系列解读:02 · 12 个包的职责与依赖关系

本文深入分析视频播放器 monorepo 的 12 个包,构建清晰的依赖地图:从底层 utils 和 element 工具基座,到第二层 store 状态管理与 spf 流处理框架,再到第三层 media 媒体契约与 core 播放器核心,层层递进。关键设计包括:树摇优化的模块化导出、可选 peer 依赖实现框架中立、目标附加式状态管理、自研 SPF 框架解耦流处理逻辑,以及基于能力契约的灵活媒体适配。全链路分层清晰,为后续代码阅读与架构理解奠定坚实基础。

2026-09-09 16:55:31 178

PPLive协议分析及流量识别

近年来兴起的P2P流媒体应用造成了网络带宽的巨大消耗,精确识另Il P2P流量具有很强的 实际意义。通过抓取PPLive的流量数据进行协议分析,主要关注系统获取节点列表方式、资源交换 方式和数据传输方式等实现方法,进而总结协议特征,提出了一种基于协议分析的PPLive流量识另q 方法。

2009-07-29

HeadFirst系列随书源码

包括: C#\ html5-源码\ WebDesign源码\ 《Head First 设计模式》附书源码\ 软件开发代码\ servlet代码\ jquery代码\ java代码\ javascript代码\ ajax代码\

2019-01-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除