视频嗅探
轻量高效的架构
Kazumi 应用程序本身基于 Flutter 框架构建,确保了其跨平台的高性能和低资源占用。
外部 WebView 组件仅在需要执行视频嗅探任务时被调用。一旦嗅探完成,相关的 WebView 实例便会立即销毁,从而释放系统资源。这种“按需使用、用完即毁”的策略保证了应用在日常使用中的轻量化和高效率。
实现原理
Kazumi 核心的视频嗅探功能基于 WebView 实现。在不同操作系统上采用了针对性的技术方案,以最大化利用各平台原生 WebView 的能力。
我们的目标是提供一个统一且高效的用户体验,但由于各平台 WebView 实现的差异,底层的技术选型有所不同。下表概述了在主流操作系统上视频嗅探功能的实现方式:
操作系统 | WebView 组件 | 实现方式 | 注意事项 |
---|---|---|---|
Windows | WebView2 | 使用 Icorewebview2 C++ API | 性能高效,稳定性好。 |
iOS / macOS | WKWebView | 通过 WKUserScript 注入特权脚本 | 依赖 Apple 提供的脚本接口,功能强大。 |
Linux | GTKWebkit | 通过 webkit_user_content_manager 注入特权脚本 | 与 macOS 类似,利用 WebKit 的脚本扩展能力。 |
Android | Android WebView | JavaScript | 由于原生 WebView 功能限制而实现的妥协方案 |
HarmonyOS | HarmonyOS WebView | JavaScript | 需要 WebView 上屏组件才可以正常工作 |
特别说明:关于 Android 平台
Android 平台的 WebView
在网络请求拦截和资源嗅探方面存在较多固有的限制。为了克服这些挑战,我们采用了 JavaScript 技术实现视频嗅探。尽管这套方案在绝大多数情况下运行良好,但其稳定性相较于其他平台稍逊一筹。
因此,我们强烈建议社区贡献者在编写和提交自定义嗅探规则时,优先在 Android 平台进行充分测试,以确保规则的兼容性和有效性。这有助于保证最广泛用户群体的体验。