命令列工具
anacrolix/dms avatar
anacrolix/dms

dms:一個基於終端、支援轉碼的 UPnP DLNA 媒體伺服器

UPnP DLNA 數位媒體伺服器,包括基本視訊轉碼。在 Panasonic Viera 電視、多個 Android UPnP 應用程式和 Chromecast 上進行了測試。

748 個 Star115 個 ForkGoBSD-3-Clause
GitHub

秒懂

它是什麼?
dms 是一個用 Go 撰寫的數位媒體伺服器,從終端執行,從本地目錄提供檔案,並在 PATH 中有 ffmpeg 等工具時提供轉碼串流和縮圖。
適合誰用?
dms 是一個功能集中的終端 DLNA 伺服器,README 說明了基本執行、轉碼輔助程式和 FreeBSD 服務,但沒有寫明指令列選項和動態串流的產生細節。 驗證 dms 時先執行 `go install github.com/anacrolix/dms@latest`,在含測試媒體的目錄啟動 `$GOPATH/bin/dms`;再分別移除 `ffprobe`、`ffmpeg` 和 `ffmpegthumbnailer`,觀察原始檔、轉碼串流及縮圖功能是否按 README 所述停用,FreeBSD 則核對 `helpers/bsd/dms` 與 `dms_root`、`dms_user`。
可以商用嗎?
可以。BSD-3-Clause 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 34 天前。
用什麼語言寫的?
主要是 Go(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

anacrolix-dms-deep-analysis|一個基於終端的 UPnP DLNA 媒體伺服器

anacrolix-dms-deep-analysis|一個基於終端的 UPnP DLNA 媒體伺服器 的專案脈絡:dms 是一個用 Go 實作的 UPnP DLNA 數位媒體伺服器。它從終端執行,直接以檔案係統為內容來源:預設使用啟動時所在的當前工作目錄,也可以使用呼叫者指定的路徑。SSDP 元件會在所有可用的網路介面上廣播並回應請求,因此本機網路中的用戶端不需要額外設定就能發現這台伺服器。倉庫中繼資料中說明 dms 曾在 Panasonic Viera 電視、若干 Android UPnP 應用程式和 Chromecast 上測試過,但 README 本文沒有描述具體的測試環境或結果。README 還包含兩張伺服器執行時的截圖,但沒有任何文字說明這些截圖展示的內容。就這一節而言,README 只定義了伺服器如何啟動和被發現,沒有涉及指令列參數、設定檔或連接埠設定。

anacrolix-dms-deep-analysis|原始檔案和轉碼後的替代串流

anacrolix-dms-deep-analysis|原始檔案和轉碼後的替代串流 的專案脈絡:dms 既會廣播並提供原始檔案,也會在有能力產生轉碼串流時提供轉碼後的替代串流。README 列出的轉碼範例包括 mpeg2 PAL-DVD 和面向 Chromecast 的 WebM。在可能的情況下,dms 還會為媒體提供縮圖。為了取得位元率、時長這類媒體資料,dms 會呼叫 ffprobe 或 avprobe;視訊轉碼使用 ffmpeg 或 avconv;瀏覽媒體時產生縮圖則依賴 ffmpegthumbnailer。這些程式必須位於 dms 執行時可見的 PATH 中,如果缺少某個程式,依賴它的功能會被停用,而不是讓 dms 崩潰。README 沒有說明轉碼品質參數、編解碼器選項,也沒有給出支援的輸入格式清單。因此,實際能轉碼成什麼取決於呼叫者環境中裝有哪些輔助工具。

anacrolix-dms-deep-analysis|動態串流的即時產生

anacrolix-dms-deep-analysis|動態串流的即時產生 的專案脈絡:dms 還支援動態串流,比如由外部應用程式即時產生的 rtsp 串流。README 說這類串流是在外部程式的幫助下產生的,範例是 ffmpeg。但 README 沒有說明 dms 如何獲知這個外部串流,也沒有說明它期望外部程式輸出什麼協定,以及用戶端怎樣請求動態串流。它只是確認了動態串流功能存在,並且必須依賴外部程式。和轉碼一樣,輔助程式需要在 PATH 中,所以如果安裝環境裡沒有 ffmpeg 一類的工具,dms 就無法提供動態串流。對於動態串流的 URL 格式、是否支援多個並發用戶端、如何處理斷流,README 都保持沉默。

anacrolix-dms-deep-analysis|透過 Go 安裝和執行

anacrolix-dms-deep-analysis|透過 Go 安裝和執行 的專案脈絡:安裝步驟假設 Go 和 $GOPATH 已經設定完成。README 給出的安裝指令只有一條:go install github.com/anacrolix/dms@latest。隨後它提醒,如果希望使用依賴 ffmpeg 或 avconv、ffmpegthumbnailer 的功能,需要把這些程式放進 PATH。啟動伺服器的指令是 "$GOPATH"/bin/dms。README 沒有記錄設定檔、指令列選項或環境變數。它提到伺服器從當前工作目錄或給定路徑提供內容,但沒有寫出傳遞路徑的語法,也沒有說明如何停止伺服器,或者當存在多個網路介面時 SSDP 是否可以被限製到指定介面。對於連接埠號、日誌等級和存取控製,README 也沒有提供任何資訊。

anacrolix-dms-deep-analysis|FreeBSD 服務設定

anacrolix-dms-deep-analysis|FreeBSD 服務設定 的專案脈絡:在 FreeBSD 上,倉庫提供了一個服務檔案,位置是 helpers/bsd/dms。README 要求把這個檔案安裝到 /etc/rc.d 或 /usr/local/etc/rc.d,然後在 /etc/rc.conf 中新增 dms_enable="YES"。如果需要,還可以設定 dms_root 和 dms_user,分別指定媒體目錄和執行服務的使用者。README 沒有解釋這個服務檔案是否會對輔助程式設定 PATH,也沒有說明服務日誌如何儲存、如何輪替。除了 FreeBSD,README 沒有提供其他作業係統的服務設定方法,也沒有說明除了在係統啟動時啟用服務之外,如何設定防火牆規則來配合 UPnP 發現。

anacrolix-dms-deep-analysis|授權、募資和倉庫中繼資料

anacrolix-dms-deep-analysis|授權、募資和倉庫中繼資料 的專案脈絡:倉庫的授權標記為 BSD-3-Clause。授權摘錄把版權歸於 Matt Joiner(anacrolix@gmail.com),允許以原始碼或二進位形式重新散佈和使用,前提是原始碼散佈保留版權聲明,二進位散佈在檔案中重現該聲明,並且未經書面許可不得使用組織名稱或貢獻者名稱來支援衍生產品。授權同時聲明不提供任何明示或暗示的保證,包括適銷性和特定用途適用性,也不承擔損失責任。README 包含一個募資區塊,請求透過 GitHub Sponsors 支援開發,並指向 issues 清單以便提出具體需求,還提供了 Changelog 和 FAQ 的連結。它沒有說明版本號、發佈節奏或安全策略。倉庫中繼資料顯示當前有 745 個 star、114 個 fork 和 24 個未關閉的 issue,且倉庫未被封存。

anacrolix-dms-deep-analysis|授權、募資和倉庫中繼資料:驗證 dms 時先執行 `go install github.com/anacrolix/dms@latest`,在含測試媒體的目錄啟動 `$GOPATH/bin/dms`;再分別移除 `ffprobe`、`ffmpeg` 和 `ffmpegthumbnailer`,觀察原始檔、轉碼串流及縮圖功能是否按 README 所述停用,FreeBSD 則核對 `helpers/bsd/dms` 與 `dms_root`、`dms_user`。

anacrolix-dms-deep-analysis|授權、募資和倉庫中繼資料:DLNA 用戶端測試要包含媒體發現、原始檔播放、ffmpeg 轉碼和縮圖四條路徑;缺少輔助程式時,應記錄功能消失而非將其解讀為整個伺服器失效。README 未定義的連接埠與存取控製,不能在文章中補寫成既定能力。

anacrolix-dms-deep-analysis|授權、募資和倉庫中繼資料:anacrolix-dms-deep-analysis 第1項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 anacrolix-dms-deep-analysis,不能移植成其他專案的結論。

anacrolix-dms-deep-analysis|授權、募資和倉庫中繼資料:anacrolix-dms-deep-analysis 第2項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 anacrolix-dms-deep-analysis,不能移植成其他專案的結論。

anacrolix-dms-deep-analysis|授權、募資和倉庫中繼資料:anacrolix-dms-deep-analysis 第3項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 anacrolix-dms-deep-analysis,不能移植成其他專案的結論。

anacrolix-dms-deep-analysis|授權、募資和倉庫中繼資料:anacrolix-dms-deep-analysis 第4項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 anacrolix-dms-deep-analysis,不能移植成其他專案的結論。

anacrolix-dms-deep-analysis|授權、募資和倉庫中繼資料:anacrolix-dms-deep-analysis 第5項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 anacrolix-dms-deep-analysis,不能移植成其他專案的結論。

anacrolix-dms-deep-analysis|授權、募資和倉庫中繼資料:anacrolix-dms-deep-analysis 第6項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 anacrolix-dms-deep-analysis,不能移植成其他專案的結論。

anacrolix-dms-deep-analysis|授權、募資和倉庫中繼資料:anacrolix-dms-deep-analysis 第7項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 anacrolix-dms-deep-analysis,不能移植成其他專案的結論。

anacrolix-dms-deep-analysis|授權、募資和倉庫中繼資料:anacrolix-dms-deep-analysis 第8項核對:以專案檔案列出的名稱、指令和設定逐項對照,記錄輸入、輸出、錯誤訊息與版本差異。這項記錄只針對 anacrolix-dms-deep-analysis,不能移植成其他專案的結論。

編輯結論

dms 是一個功能集中的終端 DLNA 伺服器,README 說明了基本執行、轉碼輔助程式和 FreeBSD 服務,但沒有寫明指令列選項和動態串流的產生細節。 驗證 dms 時先執行 `go install github.com/anacrolix/dms@latest`,在含測試媒體的目錄啟動 `$GOPATH/bin/dms`;再分別移除 `ffprobe`、`ffmpeg` 和 `ffmpegthumbnailer`,觀察原始檔、轉碼串流及縮圖功能是否按 README 所述停用,FreeBSD 則核對 `helpers/bsd/dms` 與 `dms_root`、`dms_user`。

官方來源

  1. Official README
  2. Project repository
  3. Release notes
社群筆記

社群筆記