AI prompts
base on NipaPlay-Reload 是一个现代化的跨平台本地视频播放器,支持 Windows、macOS、Linux、Android 和 iOS。集成了弹幕显示、多格式字幕支持、多音频轨道切换,新番查看等功能,支持挂载Emby/Jellyfin媒体库。采用 Flutter 开发,提供统一的用户体验。 <div style="display: flex; align-items: center; justify-content: center;">
<img src="https://github.com/user-attachments/assets/5366a99f-8906-4198-b2cf-2553252c0fb4" width="70%" style="margin-right: 20px;">
<img src="https://github.com/user-attachments/assets/1cb4db2a-7e85-4cca-81f5-f28a7ddeeda9" width="30%">
</div>
<img src="assets/images/main_image.png" width="100%">
# NipaPlay-Reload
<div align="center">
<img src="https://count.getloli.com/get/@nipaplay?theme=moebooru" alt="访问统计" />
</div>
   
<div align="center" style="margin: 10px 0;">
<img src="https://api.star-history.com/svg?repos=mcdfsteve/nipaplay-reload&type=Date&theme=moebooru" alt="Star History Chart">
</div>
> NipaPlay使用Flutter的再次重写,一个现代化的视频播放器应用。支持 Windows、macOS、Linux、Android 和 iOS 五大操作系统,为用户提供跨平台的统一体验。
## 下载
- **Windows(x86 64)/Linux(amd64)/macOS(Intel&Apple Silicon)/Android(arm32&arm64&x86 64)**
- [GitHub Releases](https://github.com/mcdfsteve/nipaplay-reload/releases)
- **iOS (TestFlight)**
- [点击这里通过 TestFlight 安装](https://testflight.apple.com/join/4JMh3t44)
- **macOS (Homebrew)**
> 我们推荐 macOS 用户使用 [Homebrew](https://brew.sh/) 进行安装和管理。
>
1. **添加我们的软件源 (Tap):**
*(此命令每个用户只需运行一次)*
```bash
brew tap Shinokawa/nipaplay-reload
```
2. **安装 NipaPlay:**
```bash
brew install --cask nipaplay-reload
```
3. **更新 NipaPlay:**
```bash
brew upgrade nipaplay-reload
```
- **Arch Linux(x86 64)**
- 使用 `aur`助手
```bash
paru -S nipaplay-reload-bin
```
> 或
>
```bash
yay -S nipaplay-reload-bin
```
## 使用文档
**[➡️ 点击这里,查看完整的使用文档](Documentation/index.md)**
在这份文档中,你将了解到:
* 如何在各个平台上安装和配置 NipaPlay
* 连接 Emby/Jellyfin 媒体服务器的详细步骤
* 播放器设置优化和故障排查指南
* 常见问题解答和使用技巧
## 如何贡献
我们非常欢迎来自社区的各种形式的贡献,无论是代码、文档、设计还是软件分发。为了帮助你更轻松地参与进来,我们为您准备了一套详尽的贡献者指南。
**[➡️ 点击这里,查看完整的贡献者指南](CONTRIBUTING_GUIDE/00-Introduction.md)**
在这份指南中,你将了解到:
* 即使不会编程,也能为项目做出贡献的方法。
* 如何搭建开发环境,并借助 AI 工具编写代码。
* 如何为应用开发新的主题、添加新的播放器或弹幕内核。
## 应用截图
<div align="center">
<p><strong>主界面</strong></p>
<img src="others/%E4%B8%BB%E9%A1%B5.png" width="70%" alt="主界面">
<img src="others/%E4%B8%BB%E9%A1%B5-%E6%89%8B%E6%9C%BA.png" width="18.6%" alt="主界面-手机">
<p><strong>视频播放页面</strong></p>
<img src="others/%E4%B8%BB%E7%95%8C%E9%9D%A2.png" width="70%" alt="视频播放页面">
<img src="others/%E4%B8%BB%E7%95%8C%E9%9D%A2-%E6%89%8B%E6%9C%BA.png" width="18.6%" alt="视频播放页面-手机">
<p><strong>新番更新界面</strong></p>
<img src="others/%E6%96%B0%E7%95%AA%E6%9B%B4%E6%96%B0%E7%95%8C%E9%9D%A2.png" width="70%" alt="新番更新界面">
<img src="others/%E6%96%B0%E7%95%AA%E6%9B%B4%E6%96%B0%E7%95%8C%E9%9D%A2-%E6%89%8B%E6%9C%BA.png" width="18.6%" alt="新番更新界面-手机">
<p><strong>新番详情界面</strong></p>
<img src="others/%E6%96%B0%E7%95%AA%E8%AF%A6%E6%83%85%E7%95%8C%E9%9D%A2.png" width="70%" alt="新番详情界面">
<img src="others/%E6%96%B0%E7%95%AA%E8%AF%A6%E6%83%85%E7%95%8C%E9%9D%A2-%E6%89%8B%E6%9C%BA.png" width="18.6%" alt="新番详情界面-手机">
<p><strong>流媒体详情页面</strong></p>
<img src="others/%E6%B5%81%E5%AA%92%E4%BD%93%E8%AF%A6%E6%83%85%E9%A1%B5%E9%9D%A2.png" width="70%" alt="流媒体详情页面">
<img src="others/%E6%B5%81%E5%AA%92%E4%BD%93%E8%AF%A6%E6%83%85%E7%95%8C%E9%9D%A2-%E6%89%8B%E6%9C%BA.png" width="18.6%" alt="流媒体详情页面-手机">
<p><strong>流媒体媒体库</strong></p>
<img src="others/%E6%B5%81%E5%AA%92%E4%BD%93%E5%AA%92%E4%BD%93%E5%BA%93.png" width="70%" alt="流媒体媒体库">
<img src="others/%E6%B5%81%E5%AA%92%E4%BD%93%E5%AA%92%E4%BD%93%E5%BA%93-%E6%89%8B%E6%9C%BA.png" width="18.6%" alt="流媒体媒体库-手机">
<p><strong>播放界面</strong></p>
<img src="others/%E6%92%AD%E6%94%BE%E7%95%8C%E9%9D%A2.png" width="70%" alt="播放界面">
<img src="others/%E6%92%AD%E6%94%BE%E7%95%8C%E9%9D%A2-%E6%89%8B%E6%9C%BA.png" width="70%" alt="播放界面-手机">
<p><strong>播放界面UI展示</strong></p>
<img src="others/%E6%92%AD%E6%94%BE%E7%95%8C%E9%9D%A2-UI%E5%B1%95%E7%A4%BA.png" width="70%" alt="播放界面UI展示">
<img src="others/%E6%92%AD%E6%94%BE%E7%95%8C%E9%9D%A2-UI%E5%B1%95%E7%A4%BA-%E6%89%8B%E6%9C%BA.png" width="70%" alt="播放界面UI展示-手机">
<p><strong>媒体库界面</strong></p>
<img src="others/%E5%AA%92%E4%BD%93%E5%BA%93%E7%95%8C%E9%9D%A2.png" width="70%" alt="媒体库界面">
<img src="others/%E5%AA%92%E4%BD%93%E5%BA%93%E7%95%8C%E9%9D%A2-%E6%89%8B%E6%9C%BA.png" width="18.6%" alt="媒体库界面-手机">
<p><strong>剧集列表界面</strong></p>
<img src="others/%E5%89%A7%E9%9B%86%E5%88%97%E8%A1%A8%E7%95%8C%E9%9D%A2.png" width="70%" alt="剧集列表界面">
<img src="others/%E5%89%A7%E9%9B%86%E5%88%97%E8%A1%A8%E7%95%8C%E9%9D%A2-%E6%89%8B%E6%9C%BA.png" width="18.6%" alt="剧集列表界面-手机">
<p><strong>库管理界面</strong></p>
<img src="others/%E5%BA%93%E7%AE%A1%E7%90%86%E7%95%8C%E9%9D%A2.png" width="70%" alt="库管理界面">
<img src="others/%E5%BA%93%E7%AE%A1%E7%90%86%E7%95%8C%E9%9D%A2-%E6%89%8B%E6%9C%BA.png" width="18.6%" alt="库管理界面-手机">
</div>
## 已实现功能
- **视频播放**
- 支持本地视频文件播放
- 支持Emby,Jellyfin视频播放
- 支持切换播放器内核
- 支持弹幕显示(集成弹弹play)
- 滚动弹幕、顶部弹幕、底部弹幕
- 弹幕记忆运动轨迹
- 时间轴跳转时弹幕位置同步
- 弹幕轨道管理系统
- 合并弹幕显示
- 开关弹幕覆盖
- 本地弹幕挂载(json/xml)
- 字幕支持
- 支持 ASS、SRT 格式字幕
- 支持内嵌字幕和外挂字幕
- 支持多字幕轨道切换
- 支持字幕样式自定义
- 支持挂载本地字幕(ass/srt)
- 音频支持
- 支持多音频轨道切换
- 视频信息自动匹配
- 播放进度记忆
- 倍速功能
- **番剧管理**
- 新番时间表展示
- 按星期分类显示
- 番剧详情查看
- 图片缓存管理
- 历史记录同步
- **设置中心**
- 毛玻璃设计风格,提供现代感界面
- 适配平板布局和安卓TV
- 主题模式切换(亮色/暗色)
- 背景图片自定义更换
- 快捷键自定义
- 多种视频内核和弹幕内核随意切换
- 账户设置
- 关于页面
- 备份与恢复
## 开发进度
> 持续开发中,欢迎关注 Releases 获取最新版本
## 关于提交issue
- 可以在软件的开发者选项-终端输出 里复制或导出软件日志
- 平板/安卓TV用户也支持,因为可以导出为二维码
## 待加入功能
- **功能扩展**
- Bangumi同步观看记录
- 评论区功能
- 云媒体库挂载(WebDAV、FTP、SMB)
- 视频截图
- 视频导出单独片段为gif
- 完整的主题系统
- 完善的远程访问功能
- 内置下载器并可通过app远程控制
- 新番详情页面支持直接跳转网络媒体库
- 在线url播放
- webview实现弹幕刮削
- 超分 补帧功能
- hdr和杜比视界支持
- 对鸿蒙OS VisionPro AppleTV的移植
## 使用的第三方库
- **核心功能库**
- [fvp](https://pub.dev/packages/fvp) - 高性能视频播放器
- [video_player](https://pub.dev/packages/video_player) - Flutter官方视频播放器
- [media_kit](https://pub.dev/packages/media_kit) - 跨平台媒体播放框架
- [media_kit_video](https://pub.dev/packages/media_kit_video) - media_kit视频组件
- [media_kit_libs_video](https://pub.dev/packages/media_kit_libs_video) - media_kit视频库
- [http](https://pub.dev/packages/http) - HTTP 请求处理
- [crypto](https://pub.dev/packages/crypto) - 加密功能
- [canvas_danmaku](https://pub.dev/packages/canvas_danmaku) - Canvas弹幕
- **UI 相关**
- [glassmorphism](https://pub.dev/packages/glassmorphism) - 毛玻璃效果
- [hugeicons](https://pub.dev/packages/hugeicons) - 图标库
- [kmbal_ionicons](https://pub.dev/packages/kmbal_ionicons) - 图标库
- [transparent_image](https://pub.dev/packages/transparent_image) - 透明图片占位符
- **文件处理**
- [file_selector](https://pub.dev/packages/file_selector) - 文件选择器
- [path_provider](https://pub.dev/packages/path_provider) - 路径提供
- [path](https://pub.dev/packages/path) - 路径处理
- [image_picker](https://pub.dev/packages/image_picker) - 图片选择器
- [image](https://pub.dev/packages/image) - 图片处理
- **状态管理**
- [provider](https://pub.dev/packages/provider) - 状态管理
- [synchronized](https://pub.dev/packages/synchronized) - 同步控制
- **数据存储**
- [shared_preferences](https://pub.dev/packages/shared_preferences) - 本地存储
- [sqflite](https://pub.dev/packages/sqflite) - SQLite数据库
- [sqflite_common_ffi](https://pub.dev/packages/sqflite_common_ffi) - 桌面平台SQLite支持
- **网络相关**
- [cached_network_image](https://pub.dev/packages/cached_network_image) - 网络图片缓存
- **系统功能**
- [window_manager](https://pub.dev/packages/window_manager) - 窗口管理
- [package_info_plus](https://pub.dev/packages/package_info_plus) - 包信息
- [url_launcher](https://pub.dev/packages/url_launcher) - URL 启动器
- [permission_handler](https://pub.dev/packages/permission_handler) - 权限管理
- [wakelock_plus](https://pub.dev/packages/wakelock_plus) - 屏幕常亮
- [screen_brightness](https://pub.dev/packages/screen_brightness) - 屏幕亮度控制
- **工具库**
- [intl](https://pub.dev/packages/intl) - 国际化支持
- [uuid](https://pub.dev/packages/uuid) - UUID生成器
- **开发工具**
- [flutter_lints](https://pub.dev/packages/flutter_lints) - 代码检查
## 技术栈
### 🎯 **核心框架**
- **Flutter** - 跨平台UI框架
- **Dart** - 编程语言
### 🎬 **视频播放引擎**
- **FVP (Flutter Video Player)** - 基于libmdk的高性能视频播放器
- **Media Kit** - 跨平台媒体播放框架
- **Video Player** - Flutter官方视频播放器
- **libmpv** - 底层媒体播放库
### 🗄️ **数据存储**
- **SQLite** - 本地数据库存储
- **SharedPreferences** - 轻量级键值存储
- **文件系统** - 本地文件管理
### 🌐 **网络与API**
- **HTTP** - 网络请求处理
- **弹弹play API** - 弹幕数据源
- **Bangumi API** - 番剧信息源
- **Emby/Jellyfin API** - 媒体服务器集成
### 🎨 **UI/UX技术**
- **Material Design** - 设计语言
- **Glassmorphism** - 毛玻璃视觉效果
- **Provider** - 状态管理
- **自适应布局** - 响应式设计
### 🔧 **系统集成**
- **Window Manager** - 桌面窗口管理
- **Permission Handler** - 权限管理
- **Wakelock** - 屏幕常亮控制
- **Screen Brightness** - 亮度控制
### 📱 **平台支持**
- **Windows** - 桌面应用
- **macOS** - 桌面应用
- **Linux** - 桌面应用
- **Android** - 移动应用
- **iOS** - 移动应用
## 关于看板娘
- https://www.pixiv.net/artworks/130349456 (作者MCDFsteve)
", Assign "at most 3 tags" to the expected json: {"id":"14275","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"