[心得] 使用netJACK串流至Hifiberry DAC+

作者: twetto912 (左手食指的那個繭)   2019-02-22 19:02:18
大家好,耳機板首po就決定是這個主題了
大概一年前吧,家裡多了台不知名綜擴,
剛好之前就有使用小電腦作為電視用HTPC的想法,
於是就選擇了樹莓派+Hifiberry的組合。
用volumio播了一段時間之後...
擴就壞了(′・ω・`)
所以我就拿回宿舍自己把玩了嘻嘻
摸了幾個月總算有點心得了,想說來分享一下
首先,要把電腦音訊透過LAN串流到樹莓派上,大概有三種方法:
1. AirPlay (使用ShairportSync實作,大部分的音樂用OS都有內建,如Volumio,
RuneAudio等)
2. PulseAudio (Linux專用)
3. JACK audio connection kit (使用netJACK協議,大部分OS皆適用)
AirPlay的缺點是延遲大,無法影音同步,且只有48kHz
PulseAudio...別提了,bug超多
於是我們只剩下一條路...
先來總結一下流程吧:
1. 樹莓派SD卡裝Raspbian
2. 樹莓派設定好Hifiberry DAC+,將它設為預設卡
3. 樹莓派安裝JACK,開啟jackd netmanager等待PC連線
4. PC安裝JACK,連上樹莓派
細部設定:
1. 樹莓派SD卡裝Raspbian:
可以使用NOOBS或者直接抓映像檔塞進去,這邊我是直接抓映像檔,並使用Etcher寫入。
Etcher的好處是它會直接把整片SD卡的空間都用完,不用再自己擴充partition
映像檔的部份,我選擇headless的Lite版本,畢竟只是要聽音樂嘛,桌面環境就不用裝了

燒完進去boot partition,創造一個名字叫ssh的空檔案,以後就用PC終端機連線就好了

改好插進樹莓派,插上網路線跟電源,完成。
2. 樹莓派設定好Hifiberry DAC+,將它設為預設卡:
PC端打開終端機,找樹莓派的ip(個人使用nmap),用ssh登入。
之後請參考這篇官方教學:
https://www.hifiberry.com/build/documentation/configuring-linux-3-18-x/
隨便scp個音樂進來放,有聲音就成功囉~
成功之後,可以選擇要不要開啟超取樣:
先用alsacap確認音效卡最高支援什麼格式
https://imgur.com/uYzAjiI
可以看到384000Hz S32_LE是ALSA對這塊板子的最高支援;
雖然pcm5122本身只有到192kHz/24bit,不過ALSA可以做padding;
網路跟PC端夠力的話,可以試試調到最高
如果有更改,要再reboot一次套用
可以參考這篇:
https://unix.stackexchange.com/questions/74558/change-sampling-rate-in-alsa
3. 樹莓派安裝JACK,開啟jackd netmanager等待PC連線
可以裝JACK囉
sudo apt-get install jackd2 qjackctl xserver-xorg
裝Xorg的目的是使用qjackctl的GUI,這樣比較方便設定
登出pi,使用ssh -X 再進去一次以啟用X11 forwarding
qjackctl這邊,可以設定取樣率,直接拉到192k
https://imgur.com/BGCx9Bo
之後按下start套用成功就可以stop & quit了(也可以進~/.jackdrc 強制拉到384kHz做極
限測試)
最後開server等待:
jack_load netmanager -i -c
這樣pi這邊就算設定完成了
4. PC安裝JACK,連上樹莓派
以Arch Linux為例,先將user加入realtime跟audio的group,再裝jack2_dbus跟cadence
進入cadence,configure -> driver點到net -> OK,點選start就連上了
https://imgur.com/SgligZu
DSP load有點高...上傳速度3MiB多也有點高...之後應該會調低一點
Windows 就去抓JACK官方的installer,
之後照著教學,開啟net driver 用ASIO Bridge連到jack server就好了。
你問我音質如何?
我聽不出來(′・ω・`)老實講,直插GH2時,跟AirPlay聽起來一樣
但是可以低延遲/影音同步+浪費電腦資源
哈哈 爽啦
老實講,我也不知道什麼人會有這種需求
就當作是一個setup的紀錄好了
感謝各位的閱讀

Links booklink

Contact Us: admin [ a t ] ucptt.com