mirror of
https://github.com/QYG2297248353/appstore-1panel.git
synced 2026-06-16 01:02:14 +08:00
发布应用 Rust Srec
This commit is contained in:
@@ -182,6 +182,7 @@
|
||||
| 🟢 | <img height="22" src="https://file.lifebus.top/apps/speedtest-tracker/logo.png" width="22"/> | SpeedTest-Tracker | https://docs.speedtest-tracker.dev/ | Speedtest Tracker 是一款自托管互联网性能跟踪应用程序,可针对 Ookla 的 Speedtest 服务运行速度测试检查 | |
|
||||
| 🟢 | <img height="22" src="https://file.lifebus.top/apps/splayer/logo.png" width="22"/> | SPlayer | https://github.com/imsyy/SPlayer/ | 一个简约的音乐播放器 | |
|
||||
| 🟢 | <img height="22" src="https://file.lifebus.top/apps/stash/logo.png" width="22"/> | Stash | https://stashapp.cc/ | 组织和刮削你的色情内容 | |
|
||||
| 🟢 | <img height="22" src="https://file.lifebus.top/apps/stream-rec/logo.png" width="22"/> | Rust-Rec | https://github.com/hua0512/rust-rec/ | Rust-rec是一个用于各种流媒体服务的自动流媒体录制工具 | |
|
||||
| 🟢 | <img height="22" src="https://file.lifebus.top/apps/stream-rec/logo.png" width="22"/> | Stream-Rec | https://github.com/hua0512/stream-rec/ | Stream-rec是一个用于各种流媒体服务的自动流媒体录制工具 | |
|
||||
| 🟢 | <img height="22" src="https://file.lifebus.top/apps/stream-rec/logo.png" width="22"/> | Stream-Rec Web版 | https://github.com/hua0512/stream-rec/ | 【前端版】Stream-rec是一个用于各种流媒体服务的自动流媒体录制工具 | |
|
||||
| 🟢 | <img height="22" src="https://file.lifebus.top/apps/stream-rec/logo.png" width="22"/> | Stream-Rec 服务版 | https://github.com/hua0512/stream-rec/ | 【服务版】Stream-rec是一个用于各种流媒体服务的自动流媒体录制工具 | |
|
||||
|
||||
@@ -177,6 +177,7 @@
|
||||
| 🟢 | <img height="22" src="https://file.lifebus.top/apps/speedtest-tracker/logo.png" width="22"/> | SpeedTest-Tracker | https://docs.speedtest-tracker.dev/ | Speedtest Tracker 是一款自托管互联网性能跟踪应用程序,可针对 Ookla 的 Speedtest 服务运行速度测试检查 | |
|
||||
| 🟢 | <img height="22" src="https://file.lifebus.top/apps/splayer/logo.png" width="22"/> | SPlayer | https://github.com/imsyy/SPlayer/ | 一个简约的音乐播放器 | |
|
||||
| 🟢 | <img height="22" src="https://file.lifebus.top/apps/stash/logo.png" width="22"/> | Stash | https://stashapp.cc/ | 组织和刮削你的色情内容 | |
|
||||
| 🟢 | <img height="22" src="https://file.lifebus.top/apps/stream-rec/logo.png" width="22"/> | Rust-Rec | https://github.com/hua0512/rust-rec/ | Rust-rec是一个用于各种流媒体服务的自动流媒体录制工具 | |
|
||||
| 🟢 | <img height="22" src="https://file.lifebus.top/apps/stream-rec/logo.png" width="22"/> | Stream-Rec | https://github.com/hua0512/stream-rec/ | Stream-rec是一个用于各种流媒体服务的自动流媒体录制工具 | |
|
||||
| 🟢 | <img height="22" src="https://file.lifebus.top/apps/stream-rec/logo.png" width="22"/> | Stream-Rec Web版 | https://github.com/hua0512/stream-rec/ | 【前端版】Stream-rec是一个用于各种流媒体服务的自动流媒体录制工具 | |
|
||||
| 🟢 | <img height="22" src="https://file.lifebus.top/apps/stream-rec/logo.png" width="22"/> | Stream-Rec 服务版 | https://github.com/hua0512/stream-rec/ | 【服务版】Stream-rec是一个用于各种流媒体服务的自动流媒体录制工具 | |
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
# Rust Srec
|
||||
|
||||
自动化直播录制解决方案 (Stream Rec 迭代版)
|
||||
|
||||
基于 Rust 构建的高性能多平台直播录制系统
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## 安装说明
|
||||
|
||||
### JWT 签名密钥 生成
|
||||
|
||||
```shell
|
||||
openssl rand -hex 32
|
||||
```
|
||||
|
||||
### 会话密钥 生成
|
||||
|
||||
```shell
|
||||
openssl rand -hex 32
|
||||
```
|
||||
|
||||
### 持久化路径
|
||||
|
||||
目前使用 `应用持久化路径` 与 `数据持久化路径` 配置,分别用于存储应用数据和录制数据。
|
||||
|
||||
+ `数据持久化路径`: 是指录制数据存放的路径,占用空间较多,请自行配置。
|
||||
+ `应用持久化路径`: 存放应用配置文件,如:JWT 签名密钥、会话密钥、数据库配置、日志配置、DAG 配置等。
|
||||
|
||||
## 特性
|
||||
|
||||
### 🎬 多平台支持
|
||||
|
||||
支持 Bilibili、抖音、斗鱼、虎牙、Twitch、TikTok 等平台
|
||||
|
||||
### ⚡ 高性能
|
||||
|
||||
Rust 构建,高效且资源占用低
|
||||
|
||||
### 🔄 DAG 管道
|
||||
|
||||
强大的后处理工作流(有向无环图)
|
||||
|
||||
### 🎯 灵活配置
|
||||
|
||||
4 层配置层级,精细化控制
|
||||
|
||||
### 💬 弹幕支持
|
||||
|
||||
同步录制弹幕
|
||||
|
||||
### 🐳 容器化部署
|
||||
|
||||
支持 Docker 和 docker-compose 快速部署
|
||||
|
||||
### 📅 自定义录制计划
|
||||
|
||||
定时录制,自动管理文件名,便于组织归档
|
||||
|
||||
### 🔧 FLV 修复
|
||||
|
||||
自动修复损坏的 FLV 流,包括时间戳校正和元数据修复
|
||||
|
||||
## 直播平台支持列表
|
||||
|
||||
| 平台 | URL 格式 | 协议 | 弹幕 |
|
||||
|:----------------------------------------------------------------------------------------|:------------------------------------------------------|:--------|:---|
|
||||
| [Bilibili](https://hua0512.github.io/rust-srec/zh/platforms/bilibili.html) | `live.bilibili.com/{room_id}` | FLV/HLS | ✅ |
|
||||
| [抖音](https://hua0512.github.io/rust-srec/zh/platforms/douyin.html) | `live.douyin.com/{room_id}` | FLV/HLS | ✅ |
|
||||
| [斗鱼](https://hua0512.github.io/rust-srec/zh/platforms/douyu.html) | `douyu.com/{room_id}` | FLV | ✅ |
|
||||
| [虎牙](https://hua0512.github.io/rust-srec/zh/platforms/huya.html) | `huya.com/{room_id}` | FLV/HLS | ✅ |
|
||||
| [AcFun](https://hua0512.github.io/rust-srec/zh/platforms/others.html#acfun) | `acfun.cn/live/{room_id}` | HLS | ❌ |
|
||||
| [PandaTV](https://hua0512.github.io/rust-srec/zh/platforms/others.html#pandatv) | `pandalive.co.kr/play/{id}` | HLS | ❌ |
|
||||
| [小红书](https://hua0512.github.io/rust-srec/zh/platforms/others.html#redbook-小红书) | `xiaohongshu.com/user/profile/{id} or xhs.link/{id}` | HLS | ❌ |
|
||||
| [微博](https://hua0512.github.io/rust-srec/zh/platforms/others.html#weibo) | `weibo.com/u/{uid} or weibo.com/l/wblive/p/show/{id}` | HLS | ❌ |
|
||||
| [Twitch](https://hua0512.github.io/rust-srec/zh/platforms/twitch.html) | `twitch.tv/{channel}` | HLS | ✅ |
|
||||
| [TikTok](https://hua0512.github.io/rust-srec/zh/platforms/others.html#tiktok) | `tiktok.com/@{user}/live` | HLS | ❌ |
|
||||
| [Twitcasting](https://hua0512.github.io/rust-srec/zh/platforms/others.html#twitcasting) | `twitcasting.tv/{user}` | HLS | ✅ |
|
||||
| [Picarto](https://hua0512.github.io/rust-srec/zh/platforms/others.html#picarto) | `picarto.tv/{user}` | HLS/MP4 | ❌ |
|
||||
|
||||
## 安装说明
|
||||
|
||||
> 默认账户
|
||||
>
|
||||
> 用户名:admin
|
||||
>
|
||||
> 密码:admin123! 或 `登录密码 (初始化)` 配置
|
||||
|
||||
---
|
||||
|
||||

|
||||

|
||||
@@ -0,0 +1,18 @@
|
||||
additionalProperties:
|
||||
key: rust-srec
|
||||
name: Rust Srec
|
||||
tags:
|
||||
- WebSite
|
||||
- Tool
|
||||
- Local
|
||||
shortDescZh: 自动流媒体录制工具
|
||||
shortDescEn: Automatic streaming record tool
|
||||
type: website
|
||||
crossVersionUpdate: true
|
||||
limit: 0
|
||||
website: https://hua0512.github.io/rust-srec/
|
||||
github: https://github.com/hua0512/rust-srec
|
||||
document: https://hua0512.github.io/rust-srec/
|
||||
architectures:
|
||||
- amd64
|
||||
- arm64
|
||||
@@ -0,0 +1,60 @@
|
||||
additionalProperties:
|
||||
formFields:
|
||||
- default: "/home/rust-rec"
|
||||
edit: true
|
||||
envKey: RUST_REC_ROOT_PATH
|
||||
labelZh: 应用持久化路径
|
||||
labelEn: Data persistence path
|
||||
required: true
|
||||
type: text
|
||||
- default: "/home/rust-rec"
|
||||
edit: true
|
||||
envKey: RUST_REC_DATA_ROOT_PATH
|
||||
labelZh: 数据持久化路径
|
||||
labelEn: Data persistence path
|
||||
required: true
|
||||
type: text
|
||||
- default: 8088
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_HTTP
|
||||
labelZh: WebUI 端口
|
||||
labelEn: WebUI port
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: 8080
|
||||
edit: true
|
||||
envKey: PANEL_APP_PORT_API
|
||||
labelZh: API 端口
|
||||
labelEn: API port
|
||||
required: true
|
||||
rule: paramPort
|
||||
type: number
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: JWT_SECRET
|
||||
labelZh: JWT 签名密钥
|
||||
labelEn: JWT Secret
|
||||
required: true
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: SESSION_SECRET
|
||||
labelZh: 会话密钥
|
||||
labelEn: Session Secret
|
||||
required: true
|
||||
type: text
|
||||
- default: ""
|
||||
edit: true
|
||||
envKey: HTTP_PROXY
|
||||
labelZh: 网络代理
|
||||
labelEn: Network Proxy
|
||||
required: false
|
||||
type: text
|
||||
- default: "localhost,127.0.0.1,rust-srec-backend"
|
||||
edit: true
|
||||
envKey: NO_PROXY
|
||||
labelZh: 忽略代理
|
||||
labelEn: Ignore Proxy
|
||||
required: true
|
||||
type: text
|
||||
@@ -0,0 +1,70 @@
|
||||
networks:
|
||||
1panel-network:
|
||||
external: true
|
||||
|
||||
services:
|
||||
rust-srec-backend:
|
||||
image: ghcr.io/hua0512/rust-srec:dev
|
||||
container_name: backend-${CONTAINER_NAME}
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- ${PANEL_APP_PORT_API}:8080
|
||||
env_file:
|
||||
- ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
|
||||
- ${ENV_FILE:-/etc/1panel/envs/default.env}
|
||||
volumes:
|
||||
- ${RUST_REC_DATA_ROOT_PATH}/data:/app/data
|
||||
- ${RUST_REC_DATA_ROOT_PATH}/output:/app/output
|
||||
- ${RUST_REC_ROOT_PATH}/config:/app/config
|
||||
- ${RUST_REC_ROOT_PATH}/logs:/app/logs
|
||||
- ${RUST_REC_ROOT_PATH}/tmp:/tmp
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
- RUST_LOG=${RUST_LOG:-info}
|
||||
- DATABASE_URL=${DATABASE_URL:-sqlite:///app/data/rust-srec.db}
|
||||
- API_PORT=8080
|
||||
- API_BIND_ADDRESS=0.0.0.0
|
||||
- ACCESS_TOKEN_EXPIRATION_SECS=${ACCESS_TOKEN_EXPIRATION_SECS:-3600}
|
||||
- REFRESH_TOKEN_EXPIRATION_SECS=${REFRESH_TOKEN_EXPIRATION_SECS:-604800}
|
||||
- MIN_PASSWORD_LENGTH=${MIN_PASSWORD_LENGTH:-8}
|
||||
- HTTP_PROXY=${HTTP_PROXY:-}
|
||||
- HTTPS_PROXY=${HTTP_PROXY:-}
|
||||
healthcheck:
|
||||
test: [ "CMD", "curl", "-f", "http://localhost:8080/api/health/live" ]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 10s
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "100m"
|
||||
max-file: "5"
|
||||
|
||||
rust-rec-frontend:
|
||||
depends_on:
|
||||
rust-srec-backend:
|
||||
condition: service_healthy
|
||||
image: ghcr.io/hua0512/rust-srec-frontend:dev
|
||||
container_name: ${CONTAINER_NAME}
|
||||
labels:
|
||||
createdBy: "Apps"
|
||||
restart: always
|
||||
networks:
|
||||
- 1panel-network
|
||||
ports:
|
||||
- ${PANEL_APP_PORT_HTTP}:80
|
||||
env_file:
|
||||
- ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
|
||||
- ${ENV_FILE:-/etc/1panel/envs/default.env}
|
||||
environment:
|
||||
- TZ=Asia/Shanghai
|
||||
- BACKEND_URL=${BACKEND_URL:-http://rust-srec-backend:8080}
|
||||
- COOKIE_SECURE=${COOKIE_SECURE:-}
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "50m"
|
||||
max-file: "3"
|
||||
@@ -0,0 +1,8 @@
|
||||
# copyright© 2024 XinJiang Ms Studio
|
||||
ENV_FILE=.env
|
||||
DATA_DIR=/app/data
|
||||
CONFIG_DIR=/app/config
|
||||
OUTPUT_DIR=/app/output
|
||||
LOG_DIR=/app/logs
|
||||
JWT_ISSUER=rust-srec
|
||||
JWT_AUDIENCE=rust-srec-api
|
||||
@@ -0,0 +1,2 @@
|
||||
# copyright© 2024 XinJiang Ms Studio
|
||||
TZ=Asia/Shanghai
|
||||
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -f .env ]; then
|
||||
source .env
|
||||
|
||||
# setup-1 add default values
|
||||
CURRENT_DIR=$(pwd)
|
||||
sed -i '/^ENV_FILE=/d' .env
|
||||
sed -i '/^GLOBAL_ENV_FILE=/d' .env
|
||||
echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
|
||||
echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
|
||||
|
||||
echo "Check Finish."
|
||||
|
||||
else
|
||||
echo "Error: .env file not found."
|
||||
fi
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -f .env ]; then
|
||||
source .env
|
||||
|
||||
echo "Check Finish."
|
||||
|
||||
else
|
||||
echo "Error: .env file not found."
|
||||
fi
|
||||
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [ -f .env ]; then
|
||||
source .env
|
||||
|
||||
# setup-1 add default values
|
||||
CURRENT_DIR=$(pwd)
|
||||
sed -i '/^ENV_FILE=/d' .env
|
||||
sed -i '/^GLOBAL_ENV_FILE=/d' .env
|
||||
echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
|
||||
echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
|
||||
|
||||
echo "Check Finish."
|
||||
|
||||
else
|
||||
echo "Error: .env file not found."
|
||||
fi
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 9.4 KiB |
Reference in New Issue
Block a user