切換菜單
切換偏好設定選單
切換個人選單
尚未登入
若您做出任何編輯,會公開您的 IP 位址。

如何搭建個人影音中心,實現多人同步觀影(OpenList+SyncTV)

出自md5.pw
這是此頁面最近一次修訂;沒有已批准修訂。

本章節將詳細展示如何在搬瓦工 E-Commerce 或 E-Commerce SLA 系列 VPS 上搭建一個功能完備的個人影音中心。從而實現讓你和朋友在網頁上同步觀看影視內容,並支持彈幕和語音交流。

要實現流暢的同步觀影體驗,特別是多人同時觀看時,對伺服器的網絡質量要求極高。這正是搬瓦工 CN2 GIA/CMIN2 優化線路的巨大優勢所在。本項目將充分利用其延遲穩定和高帶寬,打造一個穩定可靠的多人影音中心。

本次教程主要步驟為: 搭建OpenList並對接夸克網盤 -> 安裝 SyncTV -> 完成 SyncTV 與 Alist 的對接。

需要準備的事項:

1.擁有一台搬瓦工的伺服器(參考教程);

2.伺服器在運行,且安裝了debian12系統(參考教程);

3.擁有一個可以對接OpenList的不限速網盤(例如88VIP夸克網盤,鹹魚10元可開一年);

4. SSH 連接工具已準備就緒(例如 Xshell)。

一、連接伺服器並安裝OpenList

OpenList是一個強大的文件列表程序,用於掛載各種主流的雲存儲服務,包括阿里網盤,115網盤,夸克網盤等。

1.SSH 連接與基礎工具安裝

使用 SSH 工具連接到您的搬瓦工伺服器(推薦使用 Xshell 等工具,如果你是個人或家庭使用,可以下載Xshell:下載連結),

然後執行下方命令安裝必要的工具。

apt-get install wget curl vim sudo unzip -y

2.安裝OpenList

執行下面命令,安裝OpenList,根據提示選擇 1 進行安裝,然後直接輸入回車鍵安裝。

curl -fsSL https://res.oplist.org/script/v4.sh > install-openlist-v4.sh && sudo bash install-openlist-v4.sh

安裝完成後,保存好訪問地址(公網)和賬號密碼。

二、登錄OpenList並設置儲存

接下來將登錄OpenList,並通過獲取cookie的方式,添加夸克網盤作為儲存。

如果你使用115或者阿里網盤,操作也類似,可以參考官方文檔,https://doc.oplist.org/

1.登錄OpenList

訪問剛才保存的公網地址,輸入賬號密碼登錄,為了安全起見,第一次登錄後請務必修改默認賬號和密碼

2.添加OpenList儲存

剛安裝好的OpenList,是沒有儲存的,直接點轉到儲存到添加管理的後台。

點擊添加按鈕,在驅動列表中選擇 夸克,輸入你的掛載路徑(也就是將來在主頁顯示的名字)

3.獲取夸克網盤cookie

這一步我們先打開一個空白的網頁,訪問夸克網盤官網,https://pan.quark.cn/,扫码登录你的夸克网盘。

確保登錄你的網盤後,按下F12或者SHIFT+Ctrl+I,進入開發模式,根據圖示操作複製cookie並保存。

4.完成OpenList添加夸克儲存

回到第2步的儲存添加界面,把剛才保存的cookie複製進cookie這一欄中,然後保存。

到這裏,夸克網盤的儲存添加就已經完成了,訪問你的夸克網盤地址,就可以看到網盤,以及網盤中的數據了。

三、安裝SyncTV

SyncTV是讓您可以和其他人遠程一起觀看電影和直播的開源程序,它能提供了同步觀影官能,並且支持直播、聊天、彈幕等功能。

1.使用一鍵腳本安裝

運行下方的一鍵腳本,安裝SyncTV,這裏默認不會輸出登錄和用信息。

sudo -v ; curl -fsSL https://raw.githubusercontent.com/synctv-org/synctv/main/script/install.sh | sudo bash -s -- -v latest

2.啟動並設置自啟動

執行以下兩個命令,確保SyncTV啟動,並設置開機自啟動。

systemctl start synctv.service
systemctl enable synctv.service

四、調試SyncTV並對接OpenList

SyncTV默認情況下是未對接儲存程序的,這部分將演示如何對接OpenList,並實現多人同步觀影。

1.登錄SyncTV

SyncTV 默認訪問地址和登錄信息如下:

访问地址你的ip:8080
默认账号root
初始密码root

注意:登錄後請及時修改默認用戶名和密碼。

2.SyncTV對接OpenList

登錄後,根據圖示操作,完成OpenList的綁定。

對接成功後,會顯示如下。

3.添加用戶

因為SyncTV是一個同步觀影程序,一個人看沒有意義,所以先添加一個用戶。

4.創建房間

在SyncTV主頁頂部的菜單欄(如果瀏覽器顯示過窄,則在右側側邊欄)創建房間。

5.添加影片

創建好房間後,我們可以添加影片了,根據如下操作可以添加

6.加入房間

如果你剛創建了房間,那麼其他用戶訪問SyncTV主頁後,可以看到房間並加入。

7.共同觀影

觀影時,房主暫停或跳轉視頻進度,觀看者的視頻也會同步暫停或跳轉,實現時間軸的完全同步。

五、進階優化

本次內容目前主要側重部署項目和程序對接,對於一些優化放在這部分來進行講解,SyncTV 和 Alist 還有諸多進階優化和擴展玩法值得探索。

1.設置房間權限

有管理權限的賬戶,可以修改房間的設置,比如禁止訪客加入,給普通用添加同步視頻進度和暫停權限等,以維護觀影秩序。

2.程序的原理

在使用SyncTV進行觀影的過程中,默認設置下,數據源是來自openlist的,因為觀看者訪問openlist的視頻是否流暢,決定了觀影的流暢度。

對於openlist來說,掛載夸克網盤後,我們通過openlist觀看夸克網盤的視頻,實際上是由openlist所在伺服器訪問夸克網盤來實現觀看,因此這個過程中會雙倍消耗伺服器的流量。

3.擴展玩法

SyncTV的功能非常強大,其擴展性包括:

  • 源視頻代理播放: 支持將源視頻進行代理播放。
  • 對接其他平台: 可以綁定 Bilibili,直接根據 BV 號播放視頻。
  • 直鏈支持: 支持播放各種直鏈視頻,甚至可以用於創建直播房間。

你可以進一步發掘SyncTV的全部潛力,打造更豐富的個人影音娛樂體驗。

4.使用域名反向代理

SyncTV和openlist默認情況下的訪問地址都是IP+端口的組合,可以參考該教程進行反向代理。以使用域名訪問。

如何搭建Nginx Proxy Manager並使用反向代理和遠程桌面加速

需要注意,SyncTV和openlist的反向代理都需要使用特定的配置參數,以下是來自官方文檔的配置參數。

SyncTV:

 location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
client_max_body_size 20m;
proxy_http_version 1.1;
}

SyncTV的寶塔面板用戶請刪除以下代碼段:

location ~ ^/(.user.ini|.htaccess|.git|.svn|.project|LICENSE|README.md
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
location ~ .*.(js|css)?$

Openlist:

location / {
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_set_header Host $http_host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header Range $http_range;
  proxy_set_header If-Range $http_if_range;
  proxy_redirect off;
  proxy_pass http://127.0.0.1:5244;
  proxy_http_version 1.1;
  # the max size of file to upload
  client_max_body_size 20000m;
}

5.訪問異常

如果遇到無法訪問的SyncTV或者openlist的情況,請檢查是否安裝了防火牆或者時面板程序。

如果有,請給對應端口放行(SyncTV是8080,openlist是5244)。