Skip to content

v63000/LED-Code-control

Repository files navigation

0f097cf3-2dff-4aed-bd11-594993dfc9c0 AI Studio 数字标牌/播控系统 (基础版 V10) 说明文档 的研究 的研究 1. 项目简介 这是一个轻量级的本地媒体播放与管理系统。它允许用户通过浏览器(手机或电脑)远程控制连接到主机的显示器,进行视频播放、素材管理、播放列表编排以及待机画面设置。系统支持多显示器识别与切换。 2. 核心功能 Web 远程控制:通过局域网 IP 访问网页控制台(默认端口 8080)。 多屏支持:自动识别连接的显示器,可指定视频在特定屏幕全屏播放。 素材管理:支持视频上传、文件夹管理、重命名、删除。 智能缩略图:自动生成视频缩略图,支持手动截取视频帧作为封面,支持自定义文件夹封面。 播放列表:支持拖拽排序、单曲/列表循环模式、断电记忆(通过 config.json json)。 待机背景:无播放任务时自动显示指定的待机图片。 格式支持: 视频:mp4, avi, mkv, mov, wmv, flv, ts 图片:jpg, jpeg, png, bmp, webp 图纹:jpg、jpeg、png、bmp、w 图纹:jpg、jpeg、png、bmp、w 3. 环境依赖与安装 3.1 系统要求 Windows / Linux / macOS 必须安装 VLC Media Player 播放器软件(代码依赖 libvlc)。 3.2 Python 依赖库 Python 3.2 Python 3.2 请确保安装 Python 3.x,并通过 pip 安装以下库: code Bash pip install flask python-vlc opencv-python pillow screeninfo 注意:tkinter 通常随 Python 标准库自带,无需单独安装。 4. 文件结构 代码运行后会自动生成以下目录结构: code Text 文本 /项目根目录 ├── ai_studio_code.-9py.py # 主程序 ├── config.json # 自动生成的配置文件(保存音量、播放列表等状态) ├── videos/ # 存放视频素材的目录 ├── thumbs/ # 存放自动生成的缩略图 └── idle_imgs/ # 存放待机背景图片 5. 启动与运行 在终端或命令行运行脚本: code Bash python ai_studio_code.-9py.py 程序启动后: 会弹出一个全屏的黑色窗口(播放窗口),默认在主屏幕。 控制台会显示 Flask 服务器启动信息。 访问控制台: 在同一局域网的设备上,浏览器访问:http://<本机IP>:8080 本机访问:http://127.0.0.1:8080 6. Web 控制台功能指南 Web 界面分为底部的四个导航标签: 6.1 播控 (ctl) 当前播放:显示正在播放的视频名称。 控制按钮:上一曲、播放/暂停、下一曲、停止。 音量控制:静音开关及音量滑块。 屏幕选择:列出所有检测到的显示器。点击对应屏幕图标,播放窗口会瞬间移动到该屏幕并全屏。 6.2 列表 (lst) 队列管理:显示当前待播放的视频列表。 排序:点击“排序”进入编辑模式,使用 ⬆⬇ 箭头调整播放顺序。 清空:一键清空播放列表(停止播放)。 删除:点击列表项右侧的 ✕ 移除单个视频。 6.3 素材 (lib) 此页面是文件管理器,路径对应本地的 videos/ 视频/ 目录。 上传视频:点击“上传视频”按钮选择本地文件上传。 文件夹管理:支持新建文件夹、进入/返回文件夹。 文件操作: 封面截取:点击图片图标,弹出“封面工坊”,可播放视频并截取当前帧作为缩略图。 重命名:点击编辑图标修改文件名。 删除:点击垃圾桶图标删除文件。 添加:点击 + 号或点击缩略图,将视频加入播放列表。 文件夹封面:支持上传图片作为文件夹的自定义封面。 6.4 背景 (set) 待机图管理:上传图片到 idle_imgs/。 设置背景:点击图片即可将其设定为播放停止时显示的画面(Logo 或 广告图)。 循环模式:切换“列表循环”或“单曲循环”。 7. 代码逻辑简述 (开发参考) 后端 (Flask): 负责处理所有 API 请求(如 /api/control/play / api /控制/玩)。 维护 PlayerState 类,确保多线程环境下状态的一致性。 使用 opencv 读取视频帧生成 JPG 缩略图。 播放器 (VLC + Tkinter) 播放器 (VLC Tkinter) 播放器 (VLC Tkinter): 创建一个 Tkinter Frame 框架 作为视频容器。 使用 vlc.py 绑定 Tkinter 的窗口句柄 (winfo_id),从而将 VLC 的视频输出嵌入到 Python GUI 窗口中。 idle_label 层位于视频层之上,用于在停止播放时遮挡黑屏,显示图片。 状态持久化: 关键设置(音量、列表、目标屏幕)会在变动时写入 config.json json,程序重启后自动加载。 8. 常见问题与注意事项 VLC 报错:如果提示找不到模块,请确认已安装 VLC 播放器软件,且位数(32位/64位)与安装的 Python 版本一致。 中文路径:代码中包含 safe_filename 处理,建议文件名尽量避免特殊字符,但在现代 OS 上中文通常支持良好。 缩略图不显示:首次加载素材库时,OpenCV 需要逐个生成缩略图,如果视频较多可能会有短暂延迟。 退出程序:建议在控制台按 Ctrl+C Ctrl C 停止 Flask 服务,并关闭 Tkinter 窗口。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages