Skip to content

Repository files navigation

瞬影 Scarlett · 短视频平台

一个基于 LNMP(Linux + Nginx + MariaDB + PHP)的开源短视频平台,前端采用单页应用(SPA,Hash 路由),UI 风格参考 Bilibili / YouTube。

功能特性

  • 视频浏览 · 瀑布/网格布局、分类筛选、关键词搜索、热门/最新排序
  • 视频播放 · 原生 <video> 播放器、自动记录播放量与观看历史、相关推荐
  • 投稿上传 · 拖拽上传、封面可选、分类选择、简介、单文件 ≤ 200MB
  • 账号体系 · 注册 / 登录 / 退出、Session 认证、密码 bcrypt 哈希
  • 社交互动 · 点赞 / 取消、评论发表、关注 / 取关
  • 个人中心 · 主页(作品列表)、关注 / 粉丝列表、历史记录、关注流、资料编辑(头像/简介)

技术栈

选型
前端 原生 JavaScript SPA(Hash 路由)+ CSS3
后端 PHP 8.x(PDO + Session)
Web 服务器 Nginx 监听 8080,通过 unix socket 转发到 PHP-FPM
数据库 MariaDB / MySQL(utf8mb4,8 张表)
存储 本地文件系统 uploads/{videos,thumbnails,avatars}

目录结构

shortvideo/
├── index.php          # SPA 入口(注入当前登录用户为 window.__USER__)
├── config.php         # 数据库 / 会话 / 通用工具函数
├── schema.sql         # 数据库建表脚本
├── seed.php           # 演示数据生成(10 个视频 + 5 位用户 + 点赞/评论/关注)
├── api/
│   ├── auth.php       # 注册 / 登录 / 登出 / 我
│   ├── categories.php # 分类列表
│   ├── videos.php     # 视频列表 / 详情 / 上传 / 点赞 / 评论 / 观看记录 / 删除
│   └── user.php       # 资料 / 编辑 / 关注切换 / 粉丝 / 关注列表 / 历史 / 关注流 / 作品
├── assets/
│   ├── css/style.css
│   └── js/{api.js, app.js}
└── uploads/
    ├── videos/        # 演示或真实 MP4/WebM/MOV
    ├── thumbnails/    # JPG/PNG/WEBP 封面
    └── avatars/       # 用户头像

快速开始(Docker 外的本地环境)

# 1. 数据库
mysql -uroot -e "CREATE DATABASE shortvideo DEFAULT CHARSET utf8mb4;"
mysql -uroot shortvideo < schema.sql

# 2. 账号 & 目录
useradd -r -s /usr/sbin/nologin svuser
mkdir -p uploads/{videos,thumbnails,avatars,tmp} logs
chown -R www-data:www-data uploads logs
chmod -R 2775 uploads logs

# 3. 修改 config.php 里的 DB_USER / DB_PASS / DB_NAME
# 4. 把 Nginx server block(仓库同目录下可参考 conf/)指向 shortvideo/
# 5. 生成演示数据
php seed.php
# 6. 打开 http://localhost:8080/

演示账号:科技小站 / demo1234

API 约定

所有接口返回统一格式 {code, message, data}code=0 为成功。

接口 method 说明
/api/auth.php?action=login POST 登录(JSON: account, password)
/api/auth.php?action=register POST 注册(JSON: username, email, password)
/api/videos.php?action=list GET 视频列表(category / sort / q / page / limit)
/api/videos.php?action=detail&id=1 GET 视频详情
/api/videos.php POST (action=like) 点赞/取消
/api/videos.php POST (action=comment) 发表评论
/api/videos.php POST (action=upload) multipart/form-data 上传
/api/user.php?action=follow POST 关注/取关切换
/api/user.php?action=history GET 观看历史

截图演示

仓库内已包含演示截图(构建本仓库时生成):

  • shot_home.png — 首页网格 + 分类标签
  • shot_detail.png — 视频详情页(播放器 / 点赞评论 / 相关推荐)
  • shot_profile.png — 作者个人主页

License

MIT

About

Scarlett is an open-source video platform.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages