1、项目背景
⽤⼾对视频播放器的需求不仅仅局限于基本的播放功能,还包括对⾼品质内容的追求、个性化推荐、社交互动等功能。⽤⼾期望视频播放器能够提供流畅、稳定且功能丰富的播放体验 ,随着互联技术的发展和⽤⼾习惯的变化,视频播放器市场需求不断增⻓。⽤⼾对于视频播放器的需求也从单⼀的播放功能转变为更加注重⽤⼾体验和互动性。
2、目标:
轻松上传:⽤⼾可以便捷地上传个⼈视频内容,与社区共享精彩瞬间。
弹幕交互:⽀持实时弹幕功能,让⽤⼾在观看视频的同时,能够与其他观众进⾏互动,增加观看的趣味性。
⽤⼾友好:设计直观的⽤⼾界⾯,确保操作简便,提升⽤⼾体验。
性能优化:针对Windows系统进⾏优化,减少资源占⽤,提供更快速的响应和处理能⼒
社区互动:构建活跃的观看社区,⿎励⽤⼾参与和交流,增强⽤⼾粘性
3、不同端功能说明
c端:注册功能、视频播放、视频上传、视频搜索
B端:视频审核、角色管理
1、架构和设计思路:
其核心设计思路是通过清晰的层次化与服务化解耦来构建一个灵活、可扩展且可靠的技术平台。系统始于客户端HTTP请求,由网关层统一接入并进行路由与认证,随后通过RPC调用后端服务;所有微服务(如用户服务、视频服务、存储服务等)均注册到注册中心,实现服务的发现与治理,保障了系统的弹性与可维护性。关键的业务异步操作,如文件删除和视频转码,则被设计为事件驱动模式:生产者服务(如用户服务)将任务发布至消息队列(如RabbitMQ),消费者服务(如转码服务或存储服务)随后异步处理,这不仅显著提升了系统的响应速度和吞吐量,也彻底解耦了服务间的直接依赖。在数据层面,系统采用多存储引擎协同工作:MySQL负责核心结构化数据,Redis提供高速缓存与会话管理,Elasticsearch则支撑复杂的搜索与日志分析需求。此外,该系统深度集成了多媒体处理能力(通过FFMPEG),并构建在容器化(Docker)与现代化的开发运维工具链(如Protobuf、CMake、ETCD等)之上,从而形成了一个从请求接入、业务处理、异步任务到数据存储的全链路高性能解决方案,能够有效支撑图片与视频上传、转码、播放、交互等复杂场景
2、中间件:
阿⾥云短信平台(短信验证码通知服务(当前⽆法使⽤,改⽤邮件通知服务))
Mysql数据库(关系型数据的存储管理)
Redis数据库(进⾏缓存管理)
RabbitMQ消息队列(作为服务之间的交互节点--进⾏操作的削峰填⾕,解耦合)
ElasticSearch搜索引擎(实现⾼效视频搜索)
Fastdfs分布式存储引擎(实现⽂件分布式存储)
Etcd键值对存储(实现注册中⼼,提供服务注册与发现)
3、第三方库::
brpc库: HTTP&RPC服务器搭建
Jsoncpp库: restful-json的序列化&反序列化
protobuf库: rpc通信与队列消息的序列化&反序列化
ffmpeg库: ⾳视频的⼆次处理
gflags库: 运⾏参数&配置⽂件的解析
gtest库: 系统单元测试
spdlog库: 系统⽇志输出.
curl库:实现邮件推送客⼾端
中间件相关的客⼾端SDK: 与中间键服务器进⾏通信
4、使用工具:
编辑器: vim, trae/vscode/cursor
编译器: gcc/g++
调试器: gdb
项⽬构建: make&cmake
项⽬部署: docker, docker-compose
5、项目完成说明:
整个项目均由本人完成