# Xpeanuts **Repository Path**: liwenjun2023/xpeanuts ## Basic Information - **Project Name**: Xpeanuts - **Description**: kotlin编写的安卓投屏软件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-21 - **Last Updated**: 2025-02-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: Kotlin ## README # Xpeanuts #### 简介 Xpeanuts 是一款使用 Kotlin 开发的安卓投屏应用。它能够将一台安卓设备(发送端)的屏幕实时投射到另一台安卓设备(接收端)。本项目专注于提供高质量、低延迟的音视频流传输体验。 #### 主要特性 * **屏幕镜像:** 将一台安卓设备的屏幕实时投射到另一台设备。 * **分辨率自适应:** 动态适应不同的屏幕分辨率,提供最佳观看体验。 * **H.265 编解码:** 采用高效的 H.265 编解码器,实现高质量的视频压缩。 * **自适应码率 (ABR):** 根据网络状况动态调整视频码率,保证流畅播放。 * **AAC 音频:** 使用 AAC 编码提供高质量的音频流。 * **音视频同步:** 通过时间戳对齐,确保音视频完美同步。 * **QUIC 协议:** 采用 QUIC 协议,实现可靠、低延迟的数据传输。 * **Protobuf 控制:** 使用 Protobuf 进行控制指令的序列化,保证指令的实时传达。 * **网络优化:** 包含网络缓冲区管理和抖动缓冲(Jitter Buffer),最小化延迟并平滑网络波动。 #### 软件架构 本项目设计用于两台安卓设备之间的一对一屏幕镜像。核心职责划分如下: * **屏幕采集:** * 使用 `MediaProjection` API 采集发送端设备的屏幕内容。 * 实现分辨率自适应,处理各种屏幕尺寸和宽高比。 * **视频编码:** * 采用 H.265 (HEVC) 视频编码,实现高效压缩和高质量视频。 * 实现自适应码率 (ABR) 算法,根据网络状况动态调整视频码率。 * **音频处理:** * 使用 AAC 编码提供高质量音频。 * 通过时间戳同步音视频流,防止音画不同步。 * **传输:** * 采用 QUIC 协议,实现可靠、低延迟、高效的数据传输。 * 实现网络缓冲区管理,最小化延迟,避免数据积压。 * 使用抖动缓冲(Jitter Buffer)平滑网络波动,确保播放的流畅性。 * **视频解码:** * 解码接收到的 H.265 视频流。 * **音频解码:** * 解码接收到的AAC音频流。 * **渲染:** * 将解码后的视频流渲染到接收端设备的屏幕上。 * 播放解码后的音频流。 * **控制指令处理:** * 使用 Protobuf 序列化控制指令,实现高效、实时的传输。 * 在接收端处理控制指令,实现与发送端的交互。 #### 依赖库 * **Kotlin:** 主要编程语言。 * **MediaProjection API:** 用于屏幕采集。 * **H.265 编解码器:** 用于视频编解码。 * **AAC 编解码器:** 用于音频编解码。 * **QUIC 协议:** 用于网络传输。 * **Protobuf:** 用于控制指令序列化。 * **Android Jetpack:** 用于现代安卓开发实践。 #### 安装教程 1. **从源码构建:** * 克隆仓库:`git clone https://gitee.com/liwenjun2023/xpeanuts.git` * 使用 Android Studio 打开项目。 * `git checkout x_peanuts_master1.0` * 构建项目:`Build > Make Project` * 将生成的 APK 安装到发送端和接收端安卓设备上。 2. **安装 APK:** * 从 [Releases](https://gitee.com/liwenjun2023/Xpeanuts/releases) 页面下载最新的 APK 文件。 * 将 APK 安装到发送端和接收端安卓设备上。 #### 使用说明 1. **启动应用:** 在发送端和接收端设备上都打开 Xpeanuts 应用。 2. **发送端设置:** 在发送端设备上,授予必要的权限(屏幕录制、网络访问)。 3. **接收端设置:** 在接收端设备上,等待连接。 4. **建立连接:** 发送端设备会自动发现接收端设备。 5. **开始投屏:** 在发送端设备上发起投屏操作。 6. **控制:** 使用接收端设备控制发送端设备。 #### 参与贡献 欢迎大家为 Xpeanuts 贡献代码!以下是参与贡献的步骤: 1. **Fork 仓库:** 将 Xpeanuts 仓库 Fork 到你自己的 Gitee 账户。 2. **创建分支:** 为你的修改创建一个新的分支。分支命名规范为 `peanuts_feature_x.x` 或 `peanuts_bugfix_x.x`,其中 `x.x` 是版本号或功能/缺陷的简要描述。 3. **开发修改:** 实现你的功能或修复缺陷。确保你的代码符合项目的编码规范。 4. **充分测试:** 测试你的修改,确保其正常工作,并且不会引入新的问题。 5. **提交代码:** 提交你的代码,并附上清晰、简洁的提交信息。 6. **创建 Pull Request:** 从你的分支向 Xpeanuts 仓库的 `main` 分支创建一个 Pull Request。 7. **代码审查:** 你的 Pull Request 将会被项目维护者审查。请准备好根据反馈进行修改。 #### 特别鸣谢 1. **多语言支持:** 你可以使用 `Readme_XXX.md` 文件来支持不同的语言(例如 `Readme_en.md`、`Readme_zh.md`)。 2. **探索 Gitee:** 在 [https://gitee.com/explore](https://gitee.com/explore) 发现更多优秀的开源项目。 3. **GVP:** 了解 Gitee 最有价值开源项目 (GVP):[https://gitee.com/gvp](https://gitee.com/gvp)。 4. **Gitee 帮助:** 在 [https://gitee.com/help](https://gitee.com/help) 找到有用的文档和使用指南。