BiliRoamingX-integrations项目中去除直播水印的技术实现

BiliRoamingX-integrations项目中去除直播水印的技术实现

【免费下载链接】BiliRoamingX-integrations BiliRoamingX integrations powered by revanced. 【免费下载链接】BiliRoamingX-integrations 项目地址: https://gitcode.com/gh_mirrors/bi/BiliRoamingX-integrations

痛点场景:直播水印影响观看体验

你是否曾经在观看B站直播时,被屏幕上那些碍眼的水印所困扰?无论是官方标识、房间信息还是其他浮层元素,这些水印不仅遮挡了直播内容,还严重影响了观看体验。BiliRoamingX-integrations项目通过巧妙的技术手段,实现了直播水印的智能去除,让用户能够享受纯净的直播画面。

技术架构概览

BiliRoamingX-integrations项目基于ReVanced框架构建,采用模块化设计理念,通过JSON数据拦截和运行时Hook技术实现功能增强。直播水印去除功能主要涉及以下几个核心模块:

mermaid

核心实现机制

1. 配置管理系统

项目通过Settings.kt文件集中管理所有功能开关,直播水印相关设置定义如下:

// 直播间功能组配置
@JvmField val RemoveLiveMask = BooleanSetting(key = "remove_live_mask")
@JvmField val RemoveLiveWatermark = BooleanSetting(key = "remove_live_watermark")

2. JSON数据拦截处理

JSONPatch.java是核心的数据处理模块,通过parseObjectHook方法拦截并修改API返回的JSON数据:

public static Object parseObjectHook(Object obj) {
    Object data = (obj instanceof GeneralResponse<?> resp) ? resp.data : obj;
    
    if (data instanceof BiliLiveRoomInfo roomInfo) {
        // 去除直播遮罩
        if (Settings.RemoveLiveMask.get()) try {
            roomInfo.areaMaskInfo = null;
        } catch (Throwable ignored) {}
        
        // 去除直播水印
        if (Settings.RemoveLiveWatermark.get()) {
            Map<String, Object> newSwitchInfo = roomInfo.newSwitchInfo;
            if (newSwitchInfo != null)
                newSwitchInfo.put("room-player-watermark", 0);
        }
    }
    return obj;
}

3. 水印去除技术细节

遮罩信息清除(RemoveLiveMask)
  • 目标roomInfo.areaMaskInfo
  • 操作:设置为null
  • 效果:移除直播画面中的区域遮罩元素
播放器水印禁用(RemoveLiveWatermark)
  • 目标roomInfo.newSwitchInfo中的room-player-watermark开关
  • 操作:将值设置为0(禁用)
  • 效果:关闭播放器内置的水印渲染功能

技术实现流程图

mermaid

兼容性与稳定性保障

异常处理机制

项目采用完善的异常处理策略,确保功能稳定性:

if (Settings.RemoveLiveMask.get()) try {
    roomInfo.areaMaskInfo = null;
} catch (Throwable ignored) {
    // 静默处理异常,不影响其他功能
}

版本适配策略

通过Versions工具类进行版本检测,确保在不同版本的B站客户端上都能正常工作:

import app.revanced.bilibili.utils.Versions;

// 示例:版本条件判断
if (Versions.ge7_48_0()) {
    // 针对新版本的特定处理
}

功能效果对比

功能状态画面效果技术实现
未开启去水印包含官方水印和遮罩原始API数据直接渲染
开启去水印纯净直播画面修改newSwitchInfo和areaMaskInfo

技术优势与创新点

  1. 非侵入式修改:通过JSON数据拦截而非直接修改UI组件,降低崩溃风险
  2. 精准控制:分别处理水印和遮罩,提供细粒度的控制选项
  3. 性能零影响:在数据层面进行处理,对APP性能几乎没有影响
  4. 完美融合:设置项完美融入APP原生设置界面,用户体验一致

实际应用场景

这项技术特别适用于以下场景:

  • 游戏直播:去除水印后可以获得更清晰的游戏画面
  • 学习直播:避免水印遮挡重要的教学内容
  • 艺术创作:提供纯净的视觉体验,便于欣赏艺术作品

总结与展望

BiliRoamingX-integrations项目通过精巧的JSON数据拦截技术,实现了直播水印的高效去除。这种方案不仅技术成熟稳定,而且为用户提供了真正纯净的直播观看体验。随着B站客户端的持续更新,项目团队也会不断优化和适配新的水印机制,确保功能的长期有效性。

通过本文的技术解析,相信开发者们能够更好地理解模块化Hook技术的强大威力,也为类似的功能开发提供了宝贵的技术参考。

【免费下载链接】BiliRoamingX-integrations BiliRoamingX integrations powered by revanced. 【免费下载链接】BiliRoamingX-integrations 项目地址: https://gitcode.com/gh_mirrors/bi/BiliRoamingX-integrations

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值