HUAN 讙 · 使用教學

上傳素材

/app/media 是素材庫。

素材庫畫面
素材庫

可以上傳什麼

類型格式
影片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 的存取權。

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

當下列情況同時成立時,這份素材就無法再派送:

  • 原始檔已在轉檔後刪除
  • 播放產物已在所有裝置 ACK 後回收
  • 而你現在需要重新派送(新增了裝置、或某台裝置清掉了本機儲存)

後台會直接把它標示為「需要重新上傳」。系統不會假裝檔案還在,然後在派送時才失敗。

解法是重新上傳這個檔案。想降低發生機率的話,把 DISTRIBUTION_RETENTION_HOURS 調長(720 表示 30 天)。

完整理由見 ADR-0003

刪除

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

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

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

不會有無提示的刪除。

轉檔失敗怎麼看

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

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