This commit is contained in:
eric
2026-03-10 11:48:50 -05:00
parent eb33ed9360
commit 296d703307
41 changed files with 9072 additions and 121 deletions

View File

@@ -0,0 +1,128 @@
/**
* 云手机实战课 - 课程配置(克隆自 nomadlms
*/
export const SITE_CONFIG = {
brand: "🌍 云手机",
ctaUrl: "/cloudphone/pay",
footer: "🌍 云手机 · 低成本工作室搭建指南",
} as const;
export const HERO_CONFIG = {
title: "云手机实战课",
subtitle: "低成本工作室搭建指南 · TikTok/Youtube 无人直播,开启 24 小时赚美金",
stats: [
{ value: "13", label: "节实战课程" },
{ value: "170+", label: "分钟视频" },
{ value: "1", label: "位资深导师" },
],
} as const;
export const AUDIENCE_CONFIG = {
title: "这门课适合谁?",
subtitle: "向往低成本自建,想用开源硬件实现无人直播的人",
items: [
{ emoji: "💻", title: "无人直播创业者", desc: "想用低成本硬件搭建 TikTok/Youtube 直播矩阵" },
{ emoji: "⚙️", title: "技术极客", desc: "想自建云手机、Redroid、ARM 开发板玩转自动化" },
{ emoji: "📱", title: "出海副业者", desc: "想摆脱云手机平台高额月费,自建开箱即用" },
{ emoji: "🌴", title: "工作室搭建者", desc: "想低成本打造无人值守 24 小时赚美金" },
],
} as const;
export const BENEFITS_CONFIG = {
title: "学完你将获得",
subtitle: "5大核心能力助你自建云手机工作室",
items: [
{ num: "1", title: "云手机自建方案", desc: "Redroid、AOSP 安卓、ARM 开发板,从零搭建云手机" },
{ num: "2", title: "无人直播技术栈", desc: "ffmpeg、SRS、油猴脚本实现 24 小时自动化推流" },
{ num: "3", title: "软路由与网络", desc: "科学上网、静态住宅 IP出海必备基础设施" },
{ num: "4", title: "硬件选型与成本", desc: "开发板、采集卡、配件,一套成本不过千" },
{ num: "5", title: "VIP 社群支持", desc: "加入异度星球,获取部署教程与即时答疑" },
],
} as const;
export const CURRICULUM_CONFIG = {
title: "实战课程",
subtitle: "从入门到进阶,完整搭建云手机工作室",
modules: [
{
emoji: "🚀",
title: "基础篇 · 云手机入门",
lessons: [
{ name: "01 什么是云手机?自建 vs 商业平台", duration: "08:32" },
{ name: "02 低成本工作室硬件选型", duration: "12:15" },
],
},
{
emoji: "⚙️",
title: "技术篇 · Redroid 与 AOSP",
lessons: [
{ name: "03 Docker 虚拟化安卓 - Redroid", duration: "15:20" },
{ name: "04 ARM 开发板 AOSP 系统", duration: "18:00" },
{ name: "05 相机与推流配置", duration: "14:30" },
],
},
{
emoji: "📺",
title: "直播篇 · 无人推流",
lessons: [
{ name: "06 ffmpeg 拉流转推", duration: "16:00" },
{ name: "07 SRS 直播服务器", duration: "12:45" },
{ name: "08 油猴脚本自动化", duration: "11:20" },
{ name: "09 TikTok/Youtube 实战", duration: "20:00" },
],
},
{
emoji: "🌐",
title: "网络篇 · 出海基础",
lessons: [
{ name: "10 软路由与科学上网", duration: "13:00" },
{ name: "11 静态住宅 IP 配置", duration: "10:30" },
],
},
{
emoji: "🏆",
title: "进阶篇 · 产品化",
lessons: [
{ name: "12 HDMI 辅助板方案", duration: "15:00" },
{ name: "13 多设备群控与远控", duration: "12:00" },
],
},
],
} as const;
export const INSTRUCTORS_CONFIG = {
title: "资深导师授课",
subtitle: "异度世界带你开启云手机工作室之旅",
items: [
{
name: "异度世界",
role: "数字游民先行者",
desc: "5年旅居经验低成本工作室实践",
tag: "课程主理",
},
],
} as const;
export const CTA_CONFIG = {
title: "准备好开启你的云手机工作室了吗?",
subtitle: "加入异度星球 VIP解锁云手机实战课 + 电子书 + 即时答疑",
badges: ["实战视频", "永久回看", "社群答疑"],
} as const;
export const FAQ_CONFIG = {
title: "常见问题",
items: [
{ q: "课程可以永久回看吗?", a: "可以VIP 会员永久有效,随时回看。" },
{ q: "适合零基础吗?", a: "适合。课程从入门到进阶,前 2 节可免费试看。" },
{ q: "有社群答疑吗?", a: "有VIP 加入异度星球专属社群,即时答疑。" },
{ q: "支持退款吗?", a: "虚拟数字交付,不支持退款。" },
],
} as const;
export const DOWNLOAD_CONFIG = {
enabled: true,
url: "https://pan.baidu.com/s/example",
title: "课程资料下载",
buttonText: "前往网盘下载",
} as const;

View File

@@ -0,0 +1,145 @@
/**
* 云手机课程章节详情配置(克隆自 nomadlms
*/
const SAMPLE_VIDEO = "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4";
const SAMPLE_MARKDOWN = `# 课程概述
本小节将带你理解云手机的核心概念,掌握低成本工作室搭建技能。
## 学习目标
- 理解云手机的本质与自建方案
- 掌握 Redroid、AOSP 等虚拟化技术
- 完成无人直播推流配置
## 核心要点
1. **定义**:云手机 = 虚拟化安卓 + 远程控制 + 自动化推流
2. **技术**Docker Redroid、ARM 开发板、ffmpeg、SRS
3. **成本**:自建单台成本可控制在千元以内
## 行动清单
- [ ] 评估自己的硬件与网络环境
- [ ] 列出想实现的直播平台TikTok/Youtube 等)
- [ ] 设定 1 个月内的搭建目标
### 代码示例
\`\`\`bash
# 启动 Redroid 容器
docker run -itd --privileged \\
-v ~/data:/data \\
redroid/redroid:13.0.0-latest
\`\`\`
行内代码示例:\`ffmpeg -re -i input.mp4 -c copy -f flv rtmp://server/live\` 可推流到 RTMP 服务器。
## 注意事项
> 云手机自建需要一定技术基础,建议先完成前 2 节试看再决定是否购买。
| 项目 | 说明 |
|------|------|
| 硬件 | 建议 ARM 开发板或 x86 主机 |
| 网络 | 需科学上网与静态 IP |
| 时间 | 完整搭建约 1-2 天 |
`;
export type LessonDetail = {
name: string;
duration: string;
videoUrl: string;
markdown: string;
};
export const LESSONS_MAP: Record<string, LessonDetail> = {
"0-0": {
name: "01 什么是云手机?自建 vs 商业平台",
duration: "08:32",
videoUrl: SAMPLE_VIDEO,
markdown: SAMPLE_MARKDOWN.replace("本小节", "本节").replace("核心概念", "云手机定义与自建 vs 商业平台对比"),
},
"0-1": {
name: "02 低成本工作室硬件选型",
duration: "12:15",
videoUrl: SAMPLE_VIDEO,
markdown: SAMPLE_MARKDOWN.replace("本小节", "本节").replace("核心概念", "开发板、采集卡、配件选型"),
},
"1-0": {
name: "03 Docker 虚拟化安卓 - Redroid",
duration: "15:20",
videoUrl: SAMPLE_VIDEO,
markdown: SAMPLE_MARKDOWN.replace("本小节", "本节").replace("核心概念", "Redroid 安装与配置"),
},
"1-1": {
name: "04 ARM 开发板 AOSP 系统",
duration: "18:00",
videoUrl: SAMPLE_VIDEO,
markdown: SAMPLE_MARKDOWN.replace("本小节", "本节").replace("核心概念", "AOSP 刷机与系统定制"),
},
"1-2": {
name: "05 相机与推流配置",
duration: "14:30",
videoUrl: SAMPLE_VIDEO,
markdown: SAMPLE_MARKDOWN.replace("本小节", "本节").replace("核心概念", "虚拟相机与 RTMP 推流"),
},
"2-0": {
name: "06 ffmpeg 拉流转推",
duration: "16:00",
videoUrl: SAMPLE_VIDEO,
markdown: SAMPLE_MARKDOWN.replace("本小节", "本节").replace("核心概念", "ffmpeg 拉流与转推"),
},
"2-1": {
name: "07 SRS 直播服务器",
duration: "12:45",
videoUrl: SAMPLE_VIDEO,
markdown: SAMPLE_MARKDOWN.replace("本小节", "本节").replace("核心概念", "SRS 部署与推拉流"),
},
"2-2": {
name: "08 油猴脚本自动化",
duration: "11:20",
videoUrl: SAMPLE_VIDEO,
markdown: SAMPLE_MARKDOWN.replace("本小节", "本节").replace("核心概念", "油猴脚本实现自动化操作"),
},
"2-3": {
name: "09 TikTok/Youtube 实战",
duration: "20:00",
videoUrl: SAMPLE_VIDEO,
markdown: SAMPLE_MARKDOWN.replace("本小节", "本节").replace("核心概念", "TikTok/Youtube 无人直播实战"),
},
"3-0": {
name: "10 软路由与科学上网",
duration: "13:00",
videoUrl: SAMPLE_VIDEO,
markdown: SAMPLE_MARKDOWN.replace("本小节", "本节").replace("核心概念", "软路由配置与科学上网"),
},
"3-1": {
name: "11 静态住宅 IP 配置",
duration: "10:30",
videoUrl: SAMPLE_VIDEO,
markdown: SAMPLE_MARKDOWN.replace("本小节", "本节").replace("核心概念", "静态住宅 IP 与代理配置"),
},
"4-0": {
name: "12 HDMI 辅助板方案",
duration: "15:00",
videoUrl: SAMPLE_VIDEO,
markdown: SAMPLE_MARKDOWN.replace("本小节", "本节").replace("核心概念", "HDMI 采集与辅助板"),
},
"4-1": {
name: "13 多设备群控与远控",
duration: "12:00",
videoUrl: SAMPLE_VIDEO,
markdown: SAMPLE_MARKDOWN.replace("本小节", "本节").replace("核心概念", "群控与远程控制方案"),
},
};
export function getLessonKey(moduleIndex: number, lessonIndex: number): string {
return `${moduleIndex}-${lessonIndex}`;
}
export function getLesson(moduleIndex: number, lessonIndex: number): LessonDetail | null {
return LESSONS_MAP[getLessonKey(moduleIndex, lessonIndex)] ?? null;
}