# 直播系统 Java 后端 基于 Spring Boot 3.2 + JPA + H2/MySQL 的直播系统后端服务。 ## 技术栈 - Java 17 - Spring Boot 3.2 - Spring Data JPA - H2 Database (开发) / MySQL (生产) - Lombok ## 快速开始 ### 1. 使用 IDEA 打开项目 1. 打开 IntelliJ IDEA 2. 选择 `File` -> `Open` 3. 选择 `java-backend` 文件夹 4. 等待 Maven 依赖下载完成 ### 2. 运行项目 方式一:直接运行 - 找到 `LivestreamingApplication.java` - 右键点击 -> `Run 'LivestreamingApplication'` 方式二:Maven 命令 ```bash cd java-backend mvn spring-boot:run ``` ### 3. 访问服务 - API 地址: http://localhost:3001/api - H2 控制台: http://localhost:3001/h2-console - JDBC URL: `jdbc:h2:file:./data/livestream` - 用户名: `sa` - 密码: (空) ## API 接口 ### 直播间接口 | 方法 | 路径 | 说明 | |------|------|------| | GET | /api/rooms | 获取所有直播间 | | GET | /api/rooms/{id} | 获取单个直播间 | | POST | /api/rooms | 创建直播间 | | DELETE | /api/rooms/{id} | 删除直播间 | ### 创建直播间请求示例 ```json POST /api/rooms { "title": "我的直播间", "streamerName": "主播名称" } ``` ### 响应示例 ```json { "success": true, "data": { "id": "uuid", "title": "我的直播间", "streamerName": "主播名称", "streamKey": "uuid", "isLive": false, "viewerCount": 0, "streamUrls": { "rtmp": "rtmp://localhost:1935/live/uuid", "flv": "http://localhost:8080/live/uuid.flv", "hls": "http://localhost:8080/live/uuid/index.m3u8" } } } ``` ## 切换到 MySQL 1. 安装 MySQL 并创建数据库: ```sql CREATE DATABASE livestream CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 修改 `application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/livestream?useSSL=false&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver username: root password: your_password ``` ## 项目结构 ``` java-backend/ ├── src/main/java/com/example/livestreaming/ │ ├── LivestreamingApplication.java # 启动类 │ ├── config/ # 配置类 │ ├── controller/ # 控制器 │ ├── dto/ # 数据传输对象 │ ├── entity/ # 实体类 │ ├── exception/ # 异常处理 │ ├── repository/ # 数据访问层 │ └── service/ # 业务逻辑层 ├── src/main/resources/ │ └── application.yml # 配置文件 └── pom.xml # Maven 配置 ``` ## Android App 配置 确保 Android App 的 API 地址指向此服务: ```kotlin // build.gradle.kts buildConfigField("String", "API_BASE_URL_DEVICE", "\"http://你的电脑IP:3001/api/\"") ```