# IcehockeyCamera **Repository Path**: julywind/icehockey-camera ## Basic Information - **Project Name**: IcehockeyCamera - **Description**: 一个用于直播比赛的小软件 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-06 - **Last Updated**: 2026-04-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [![Maven Central](https://img.shields.io/maven-central/v/com.herohan/UVCAndroid.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22com.herohan%22%20AND%20a:%22UVCAndroid%22) # UVCAndroid 在**非 root** 的 Android 设备上访问 UVC 摄像头的库与示例应用。 - **库**:可集成到自己的项目,通过 USB 采集卡接入 UVC 相机进行预览、录制等。 - **示例应用**:支持通过采集卡外接相机信号做直播,并带**记分牌**,适合赛事/活动直播。 更多技术说明见:[UVCAndroid 安卓 UVC 相机通用开发库](https://blog.csdn.net/hanshiying007/article/details/124118486)。 --- ## 库的集成方式 ### 依赖 ```groovy repositories { mavenCentral() } dependencies { implementation 'com.herohan:UVCAndroid:1.0.11' } ``` ### R8 / ProGuard 使用 R8 时,库会自带混淆规则,一般无需额外配置。 若使用 ProGuard,请手动添加: ```groovy -keep class com.herohan.uvcapp.** { *; } -keep class com.serenegiant.usb.** { *; } -keepclassmembers class * implements com.serenegiant.usb.IButtonCallback {*;} -keepclassmembers class * implements com.serenegiant.usb.IFrameCallback {*;} -keepclassmembers class * implements com.serenegiant.usb.IStatusCallback {*;} ``` ### 环境要求 - Android 5.0(API 21)及以上 --- ## 应用使用说明(直播 + 记分牌) ### 项目用途 本应用用于 **Android 手机通过采集卡外接相机信号做直播**,并支持 **积分/比分展示**。 手机连接 USB 采集卡后,将相机画面以 UVC 形式接入,在应用内预览、录制或推流,同时可在画面上叠加记分牌,方便赛事/活动直播。 ### 记分牌操作 #### 比分加减 | 操作 | 主队(左侧) | 客队(右侧) | |------|--------------|--------------| | **在屏幕左侧区域上滑** | 主队 +1 | — | | **在屏幕左侧区域下滑** | 主队 -1 | — | | **在屏幕右侧区域上滑** | — | 客队 +1 | | **在屏幕右侧区域下滑** | — | 客队 -1 | | **点击主队比分框** | 主队 +1 | — | | **点击客队比分框** | — | 客队 +1 | | **长按主队/客队比分框** | 该队比分 **归零** | 该队比分 **归零** | #### 队伍与节次 - **点击主队名称 / 客队名称**:弹出编辑框,可修改队伍名称。 - **点击节数**(如「第 1 节」):可调整当前节次。 - **点击「VS」**:主客队名称互换(比分不变)。 - **长按「VS」**:弹出确认框,可**全部归零**(比分、节次、队伍名恢复默认)。 #### 操作一览 | 功能 | 操作方式 | |------|----------| | 主队 +1 | 左侧区域上滑,或点击主队比分 | | 主队 -1 | 左侧区域下滑 | | 客队 +1 | 右侧区域上滑,或点击客队比分 | | 客队 -1 | 右侧区域下滑 | | 主队/客队比分归零 | 长按对应比分框 | | 修改队伍名称 | 点击对应队伍名称 | | 调整节次 | 点击节数文字 | | 主客队名称互换 | 点击 VS | | 全部归零(比分+节次+队名) | 长按 VS,在弹窗中确认 | ### 精彩回放与回放记录 #### 精彩回放(即时回放) - **开启条件**:正在录制时,应用会持续缓冲**最近约 10 秒**的画面;录制满约 10 秒后,回放按钮变为可用。 - **操作**:点击回放按钮 → 画面以**约 70% 速度**播放刚才缓冲的一段(约 10 秒内容),并显示「精彩回放」标识;播放结束后自动恢复实时画面,或再次点击按钮(此时为停止图标)可提前结束回放。 - **说明**:回放期间标识会一直显示直到回放结束;回放仅用于现场快速重看,不单独生成文件。 #### 回放记录(.reply.json) - **记录内容**:每次点击回放时,会记录该次回放对应的**时间段**(相对本段录制的起止时间,单位:秒)。 - **生成时机**:**停止录制并成功保存视频**时,会在视频所在目录生成与视频同名的回放记录文件,例如: `某视频.mp4` → `某视频.reply.json` - **文件用途**:JSON 中保存本段录制内所有「精彩回放」的时间段,便于后期按时间点剪辑、打点或做高光集锦。 - **注意**:若录制过程中从未触发过回放,则不会生成 `.reply.json`。 ### 其他说明 - 记分牌可双击屏幕隐藏/显示(与其它控件一起)。 - 录制、回放、截图等入口以应用内 FAB 按钮为准。 - 使用前请授予相机、麦克风、存储等权限;通过采集卡连接外接相机后,在应用内选择设备并打开相机即可开始预览与直播/录制。