HUAN 讙 · 使用教學

上傳素材

/app/media 是素材庫。

素材庫畫面素材庫畫面
素材庫

用資料夾整理

素材庫可以開資料夾,也可以開資料夾裡的資料夾(最多 8 層)。

  • 新增資料夾:素材列表上方那一條(「全選這一層的 N 個素材」那列)最右邊的「新增資料夾」,會建在你現在所在的那一層。
  • 進出資料夾:點資料夾卡片進去,用上面的麵包屑回上一層。
  • 改名或換位置:資料夾卡片上的鉛筆圖示。裡面的素材會跟著一起走。
  • 刪除:垃圾桶圖示。只能刪空的資料夾——裡面還有東西時請先搬走,這樣你一定會經過「這個素材正在被使用」那一關。

上傳區會顯示「上傳素材到『某某資料夾』」,丟進去的檔案就落在那一層。

搬移素材

素材卡片左上角有勾選框。勾好之後按「搬移到…」,挑一個目標資料夾就完成了。

搜尋是跨資料夾的

搜尋框會找遍整個素材庫,不受你目前在哪一層影響。找東西的時候還要先猜它放在哪裡,等於沒有搜尋。

可以上傳什麼

類型格式
影片MP4、MOV、MKV、WebM、MPEG、AVI
圖片JPEG、PNG、WebP、AVIF、GIF
HTML單一自帶資源的 .html

文字與網址不需要上傳。 它們直接寫在版面設定裡,不佔用素材庫。

上傳流程

檔案不經過 Server 的記憶體,瀏覽器直接傳到物件儲存。一支 4 GB 的影片如果經過 Node.js,幾個人同時上傳就會把 Server 打掛。

狀態

狀態意義
上傳中檔案正在傳到物件儲存
處理中Worker 正在轉檔、產生縮圖與預覽
就緒可以放進版面
失敗轉檔失敗,畫面上會有原因
需要重新上傳舊資料才有,已經沒有可派送的副本

影片會被怎麼處理

Worker 會產生三種版本:

版本用途
縮圖素材庫的預覽圖
預覽後台排版時的低解析度播放
播放實際派送到裝置的版本

播放版本的規格:MP4 容器、H.264、yuv420p、最高 1920×1080、最高 30fps、AAC 音訊、啟用 fast start。

不做放大。 640×360 的來源轉出來還是 640×360。長寬比一律保持原樣。

yuv420p 是刻意指定的:某些來源使用 yuv444p 或 10-bit 格式,Raspberry Pi 的硬體解碼器不支援,會退回軟體解碼而卡頓。

圖片會被怎麼處理

同樣產生三種版本。播放版本限制在合理尺寸——不能讓 Raspberry Pi 每次算繪都去解一張 12000×9000 的原圖。

來源含有透明資訊時會保留,不會被壓成黑底。

HTML

第一版只支援單一自帶資源的 HTML 檔案。需要圖片時請用 data: URI 內嵌。

HTML 在裝置上以 sandbox iframe 執行,沒有 Node、檔案系統或 Electron API 的存取權。

檔案會留多久

縮圖、預覽與播放版本長期留在伺服器上,不會被清掉。要看預覽挑素材、或是之後多一台裝置要拿同一份檔案,都不會撲空。

原始上傳檔在轉檔成功後會刪除。 伺服器不是母帶庫,請自己留一份原始檔。

「需要重新上傳」是什麼意思

舊版的 HUAN 會在所有裝置都下載完成之後回收播放版本。那個機制已經拿掉了,但當時被回收的素材還留著這個標示——伺服器上真的已經沒有它的檔案。

解法是重新上傳同一個檔案。新上傳的素材不會再變成這樣。

完整理由見 ADR-0008。

刪除

刪除之前,HUAN 會檢查這份素材有沒有被使用:

  • 草稿中的版面
  • 已發布的版面修訂
  • 排程
  • 裝置目前的狀態

有任何一項使用中,刪除會被擋下來,並列出是哪些版面或排程在用它。請先解除引用再刪除。

不會有無提示的刪除。

轉檔失敗怎麼看

畫面上顯示的是給使用者看的說明,例如「影片轉檔失敗,來源檔案可能損毀或格式不支援」。

完整的 FFmpeg 指令、stderr 與檔案系統路徑只留在伺服器日誌裡。那些資訊對一般使用者沒有幫助,而且會洩漏伺服器的內部結構。