SuperAPI AI 工具集

crossfade-exclusion-heuristics

编程与开发

查看项目

更新于 10-17 16:15

技能介绍

用途

该技能提供一组判断规则,决定在音乐播放器执行交叉淡化(crossfade)前,何时应当跳过淡化。核心思想是:交叉淡化是默认行为,不是必须执行的规则。

主要能力

  1. 视频排除:当前或下一媒体项是视频时跳过淡化。需对称检查当前项与下一项,并尊重用户的视频播放设置(watchVideoEnabled)。

  2. 短时长排除:媒体项时长不足以支撑淡化时跳过。阈值动态计算:maxOf(20_000L, fadeMs * 3L)。若淡化时长设置为自动,应使用解析后的实际值,而非默认值。仅能测量当前项时长,下一项未准备时不可读取。

  3. 同专辑排除:当前项与下一项均属于同一专辑时跳过淡化。通过媒体 ID 集合判断,而非计数或位置。该规则默认关闭,由用户设置开启。

  4. 验证方法:在触发点记录一行日志,包含解析后的淡化长度、当前项时长、两个视频标志、两个 ID 是否在专辑集合中。通过播放略短于和略长于阈值的媒体项来检验边界,通过打乱专辑并追加无限队列来检验专辑规则,通过开启和关闭视频播放来检验视频规则。

使用方式

将上述判定逻辑集成到播放器的淡化触发路径中,确保每个触发路径都包含全部排除条件。注意:仅在一个路径上添加判定等于死代码,没有症状。

适用场景

适用于实现音乐播放器交叉淡化功能的开发场景,尤其是需要处理视频、短音频和专辑连续性的播放器。

限制

  • 专辑规则依赖队列类型标签,该标签可能无法在重启后保留。若持久化队列记录没有类型列,恢复后的队列将失去专辑排除。
  • 仅能测量当前项时长,下一项时长未知。
  • 专辑成员判断使用集合快照,追加操作绕过 setter 时快照保持不变。若将追加操作改为经过 setter,会导致整个队列的淡化被禁用。