Skip to content

视频嗅探

轻量高效的架构

Kazumi 应用程序本身基于 Flutter 框架构建,确保了其跨平台的高性能和低资源占用。

外部 WebView 组件仅在需要执行视频嗅探任务时被调用。一旦嗅探完成,相关的 WebView 实例便会立即销毁,从而释放系统资源。这种“按需使用、用完即毁”的策略保证了应用在日常使用中的轻量化和高效率。

实现原理

Kazumi 核心的视频嗅探功能基于 WebView 实现。在不同操作系统上采用了针对性的技术方案,以最大化利用各平台原生 WebView 的能力。

我们的目标是提供一个统一且高效的用户体验,但由于各平台 WebView 实现的差异,底层的技术选型有所不同。下表概述了在主流操作系统上视频嗅探功能的实现方式:

操作系统WebView 组件实现方式注意事项
WindowsWebView2使用 Icorewebview2 C++ API性能高效,稳定性好。
iOS / macOSWKWebView通过 WKUserScript 注入特权脚本依赖 Apple 提供的脚本接口,功能强大。
LinuxGTKWebkit通过 webkit_user_content_manager 注入特权脚本与 macOS 类似,利用 WebKit 的脚本扩展能力。
AndroidAndroid WebViewJavaScript由于原生 WebView 功能限制而实现的妥协方案
HarmonyOSHarmonyOS WebViewJavaScript需要 WebView 上屏组件才可以正常工作

特别说明:关于 Android 平台

Android 平台的 WebView 在网络请求拦截和资源嗅探方面存在较多固有的限制。为了克服这些挑战,我们采用了 JavaScript 技术实现视频嗅探。尽管这套方案在绝大多数情况下运行良好,但其稳定性相较于其他平台稍逊一筹。

因此,我们强烈建议社区贡献者在编写和提交自定义嗅探规则时,优先在 Android 平台进行充分测试,以确保规则的兼容性和有效性。这有助于保证最广泛用户群体的体验。