一個基於 Flask 和 WebSocket 的電影播放伺服器系統,支援雙網頁架構和跨設備即時控制。
- 🎬 雙網頁架構:播放器頁面(網頁A)+ 控制台頁面(網頁B)
- 🏠 多房間支援:支援 A-B、C-D 等多組配對,每組獨立運作
- 🌐 跨設備控制:使用 WebSocket 實現即時同步控制
▶️ 完整播放控制:播放/暫停、快進快退、音量控制、全螢幕- 🖼️ 縮圖預覽:支援電影主縮圖和集數縮圖
- 📚 資料夾式導航:先選電影,再選集數的直觀界面
- 🔄 自動播放下一集:影片結束時自動播放下一集
- 🏢 房間管理中心:視覺化管理所有播放會話
- ⌨️ 鍵盤快捷鍵:提供便捷的鍵盤操作
- 📱 智能狀態同步:播放狀態即時同步到控制台
- Python 3.7+
- 現代網頁瀏覽器(支援 HTML5 Video 和 WebSocket)
-
安裝 Python 依賴:
pip install -r requirements.txt
-
建立影片目錄結構:
./data/ ├── 好看的電影/ │ ├── 縮圖.jpg # 電影主縮圖 │ ├── 第一集.mp4 # 影片檔案 │ ├── 第一集.jpg # 集數縮圖 │ ├── 第二集.mp4 │ ├── 第二集.jpg │ └── ... └── 另一部電影/ └── ... -
啟動伺服器:
python app.py
-
使用系統:
- 打開房間管理中心:訪問 http://localhost:5000/rooms
- 創建房間:輸入房間名稱(如:客廳、臥室、會議室A)
- 配對設備:
- 在播放設備上點擊「播放器」按鈕
- 在控制設備上點擊「控制台」按鈕
- 開始播放:在控制台選擇要播放的影片
- 多組並行:重複步驟創建更多房間實現多組配對
家庭多房間娛樂:
- 客廳:大電視播放器 ↔ 沙發平板控制台
- 臥室:投影機播放器 ↔ 床邊手機控制台
- 書房:電腦播放器 ↔ 桌上設備控制台
辦公室簡報:
- 會議室A:投影機播放器 ↔ 講者筆電控制台
- 會議室B:電視播放器 ↔ 主持人平板控制台
- 啟動系統:執行
uv run python app.py - 房間管理:通過房間管理中心創建和管理多個播放會話
- 設備配對:播放器和控制台選擇相同房間即可配對
- 資料夾式選擇:
- 在控制台先點擊要觀看的電影
- 進入該電影的集數選擇頁面
- 點擊想要的集數開始播放
- 自動連續播放:開啟自動播放下一集,享受連續觀看體驗
- 遠程控制:使用控制台來控制播放器的播放行為
空白鍵:播放/暫停F:進入全螢幕Esc:退出全螢幕←:快退 10 秒→:快進 10 秒
空白鍵:播放/暫停←:快退 10 秒→:快進 10 秒F:全螢幕Ctrl+R:重新載入影片庫
電影播放伺服器/
├── app.py # 主程序(支援多房間)
├── requirements.txt # Python 依賴
├── README.md # 說明文件
├── templates/ # 網頁模板
│ ├── index.html # 主頁
│ ├── rooms.html # 房間管理中心
│ ├── player.html # 播放器頁面(網頁A)
│ └── control.html # 控制台頁面(網頁B)
└── data/ # 影片目錄
└── 影片名稱/
├── 縮圖.jpg
├── 集數.mp4
└── 集數.jpg
- 影片格式:MP4(推薦)
- 縮圖格式:JPG/JPEG
- 命名規則:
- 電影主縮圖:
縮圖.jpg - 影片文件:
集數名稱.mp4 - 集數縮圖:
集數名稱.jpg(其實也不一定要)
- 電影主縮圖:
- 預設端口:5000
- 跨設備使用:將 localhost 改為伺服器的 IP 地址
- 防火牆:確保端口 5000 可以被訪問
-
影片無法播放:
- 檢查影片格式是否為 MP4
- 確認文件路徑正確
- 查看瀏覽器控制台錯誤信息
-
縮圖不顯示:
- 確認縮圖文件存在
- 檢查文件名是否正確(
縮圖.jpg) - 驗證圖片格式是否為 JPG
-
跨設備控制不生效:
- 確認所有設備都連接到同一網路
- 檢查 WebSocket 連接狀態
- 嘗試重新整理頁面
-
載入影片庫失敗:
- 確認
./data目錄存在 - 檢查目錄權限
- 點擊"重新載入影片庫"按鈕
- 確認
- 後端:Flask + Flask-SocketIO
- 前端:HTML5 + CSS3 + JavaScript
- 即時通訊:WebSocket
- 影片播放:HTML5 Video API
- 作者: 曹 大寶
- 開發者留言: 或許未來會更新?