Shengshampoo Page Post anything I understand, from anywhere I attend.

構建 DLNA連線播放區網音樂伺服器 Minimserver 微筆記

構建DLNA連線播放區網音樂伺服器 Minimserver 微筆記

構建 DLNA的三個組成

何謂 DLNA/UPnP?參考網路相關資料:

簡單來說,
就是家用網路播放媒體的一套規範標準,
其目的是透過區網串聯家裡的數位媒體裝置,
彼此互相連結相通,
其中一個裝置存放的影音檔案或是接通好的串流媒體服務,
可以即時傳輸到區網內其他的裝置播放。
而且不需要進行額外複雜的設定,
如存放檔案的設備 IP 位址及登入帳號密碼。
比起傳統的Samba 網路芳鄰,
設定IP 位址,檔案權限,檔案路徑,
登入帳號密碼,啟動服務等作業設定。
DLNA 對新手而言,學習門檻較低,
也比較輕鬆上手。

構成一個DLNA 連線播放區網裝置的音樂檔案,
至少需要 3 個部分:

  • Media Server/媒體伺服器
    常見於電腦或NAS 等內建大容量硬碟空間,
    可以儲存管理多筆高解析音樂檔案。
    或者是可連線網外串流媒體服務,
    如網路音樂電台,線上串流音樂等的接收設備。
    我個人家用電腦作業系統,
    是選擇Ubuntu Linux 作業系統,
    所以安裝的音樂伺服器軟體是Minimserver。
    透過Minimserver建立DLNA 音樂檔案索引。
  • Media Renderer 媒體渲染器
    播放輸出任何由媒體伺服器所提供媒體檔案的裝置。
    一般而言聆聽音樂,我個人比較偏好的播放器材:

    • 一是Android 手機安裝Usb audio player pro,
      或是海貝音樂APP,USB OTG外接 DAC 。
    • 另一個則是 Raspberry Pi2 + USB/I2S DAC,
      安裝Volumio/Runeaudio/MoOde。

    以上兩個播放方式都可選用DLNA 連線。

  • Controller/控制節點
    選擇媒體檔案來源,建立播放清單,並指定播放輸出的裝置。
    我自己是在Android 手機安裝BubbleUPnP,
    透過這個app 建立播放清單,
    指定播放音樂輸出裝置。

安裝設定 Minimserver

Minimserver:官網
翻閱資料:

Minimserver 是UPnP AV/DLNA 網路音樂管理伺服器,
可以讓區網終端播放設備存取音樂檔案。
僅能當 DLNA Media Server,
功能單一簡單,設置選項也不多,
或許因此系統運行速度很快。

我個人家用電腦作業系統,
是選擇Ubuntu Linux 作業系統,
因此以下安裝步驟是針對 Linux 環境執行,
會比較偏向輸入命令列指令執行安裝動作。

Minimserver 是使用Java 程式語言,
撰寫編譯的網路應用程式,
須預先安裝Java 相關程式套件,
如Java Runtime Environment (JRE)。
也正因為使用Java 跨平台語言的優點,
Minimserver 能夠在 Windows/Linux 兩大系統安裝使用。

我是直接在Oracle Java JREMinimserver 官網,
下載最新的版本,直接解壓縮,
設定Java 程式執行必要環境變數,
就開始執行Minimserver 指令依序設定相關選項。

  • 指令:tar -vxf XXX.tar.gz
    解壓縮下載的Java/Minimserver GZ 程式壓縮檔。
tar -vxf jre-8u???-linux-x64.tar.gz     
tar -vxf MinimWatch-0.?.?-linux-x64.tar.gz      
  • 撰寫Java 程式執行必要環境變數文本,
    檔名取名 “exe_set_java_variable”,內容如下:
#file name:exe_set_java_variable        
export PATH=$PATH:$HOME/Downloads/jre1.8.0_???/bin      
export JAVA_HOME=$HOME/Downloads/jre1.8.0_???       
  • 撰寫Minimserver 程式執行啟動執行批次檔,
    檔名取名 “exe_minimserver”,
    為繼承套用 “exe_set_java_variable” 文本裡的Java 執行環境變數,
    才能透過Java 執行 Minimserver。
    解壓縮後,Minimserver 啟動檔路徑為:/minimserver/bin/startc

    exe_minimserver 文本內容如下:

#file name:exe_minimserver      
source ./exe_set_java_variable      
export LD_LIBRARY_PATH=$JAVA_HOME/lib/amd64:$JAVA_HOME/lib/amd64/server     
$HOME/Downloads/minimserver/bin/startc      
  • 命令列執行exe_minimserver 啟動設定Minimserver:
???@???:~/Downloads$ ./exe*server       
Migrating autostart configuration       
Acquiring root privilege for system configuration update...     
MinimServer 0.8.4, Copyright (c) 2012-2016 Simon Nash. All rights reserved.     
autoUpdate: installed package 'minimserver-0.8-update-88'       
Enter command (? for help):     
autoUpdate: relaunching runtime     
>MinimServer 0.8.4 update 88, Copyright (c) 2012-2016 Simon Nash. All rights reserved.      
starting MinimServer[exton-os]      
Enter command (? for help):     
>Enter content directory, or null to continue:      
/media/live/my_music_folder     
MinimServer[exton-os] is running        
>       

設定掛載音樂檔案的資料夾路徑後,即成功啟動Minimserver 服務。

  • 指令?,等同help,列出所有可用的指令。
>?      
Commands:       
rescan     restarts the media server and rescans the media library      
props      shows current properties for the media server        
prop n=v   sets media server property name n to value v     
about      shows version and status information for the media server        
stop       stops the media server without exiting the application       
restart    restarts the stopped or running media server     
exit       exits the media server application       
packages   shows installed packages (with status) and available packages        
install p  installs package p       
remove p   removes installed package p      
undo p     undoes a pending change to installed package p       
relaunch   relaunches the runtime and applies pending package changes       
modules    shows installed modules (with status)        
updates    shows available updates for installed packages       
sleep t    delays execution for t seconds (can be useful for scripting)     
help       (or ?) displays this information     
>       
  • 指令packages 列出已安裝和可用的minim套件。
>packages       
The following packages are installed:       
minimserver-0.8-update-88  Active       
minimserver-0.8.4  Active+Original      
The following packages are available for installation:      
minimstreamer-0.5.25        
>       
  • 指令install minimstreamer-0.5.25 安裝minimstreamer。
    完成後先關閉Minimserver 服務。

  • Minimstreamer:Minimserver 擴充套件,
    用於傳輸串流音頻,及相關應用,如:轉碼,錄製等。
    安裝的理由是傳輸DSD音頻,並封裝成DoP 的WAV 格式。

  • 修改/minimserver/data/minimserver.config 增加一行設定敘述。

    stream.transcode=dsf:dopwav,dff:dopwav
    

    意思就是DSD格式的dsf/dff 轉碼為DoP 封裝的WAV 形式傳輸。
    之後再執行啟動 Minimserver 服務。

  • 以上就差不多完成初步設定。

個人 DLNA 網路配置

實際配置 DLNA 網路播放音樂 - 1:

  • Media Server:個人電腦 + Minimserver
  • Media Renderer:Raspberry Pi2 + Runeaudio 0.3bata
  • Controller:Android 手機 + BubbleuPnP
  • 執行Android 手機上的BubbleuPnP,
    音樂來源為個人電腦上的Minimserver裡的一首DSD128 音樂檔,
    播放音樂輸出至Raspberry Pi2 外接的Usb DAC。
    不過比較疑惑的是,Usb DAC 可以順利啟動DoP DSD解碼,
    BubbleuPnP 顯示播放的格式卻是 352kHz wav?

實際配置 DLNA 網路播放音樂 - 2:

  • Media Server:個人電腦 + Minimserver
  • Media Renderer:Android 手機A + Usb Audio Player Pro。
  • Controller:Android 手機B + BubbleuPnP
  • Usb Audio Player Pro 和 BubbleuPnP 可以裝在同一隻Android 手機,
    控制播放及輸出音樂全由這個Android 手機運作。
    也可以分別裝在不同Android 手機,
    個別用作控制播放和輸出音樂。
    本例是裝在同一隻Android 手機,
    OTG 外接 Usb DAC,
    使用Usb Audio Player Pro 播放24bit/192kHz音樂。

後續說明

使用 UPnP/DLNA 區網播放有個一個好處:
畢竟Raspberry Pi 的I/O及運算效能有限,
一方面建立播放清單,
管理分批NAS/個人電腦硬碟的海量儲存音樂檔案,
同時間又要撥出運算能力處理解碼音樂格式,
還是有些力不從心,
有可能在播放過程中遇到延遲停頓一下。
因此,將播放清單管理的角色,
分擔交給運算效能表現較好的移動智能手機,
或者是個人家用電腦。
由它們充當 DLNA 區網的 Controller,
而 Raspberry Pi 純粹作個單一的播放終端就比較妥當點。