快轉到主要內容

Linux聽無損Apple Music音樂的方法:跑Android版Apple Music + PipeWire調整取樣率

分類   Linux系統 Linux使用技巧
標籤   Waydroid Apple Music ITunes
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

Read this article in English

如果您有高級耳機,很堅持要在Linux系統聽無損(lossless,又稱保真壓縮音訊)格式的音樂串流,請聽我一言,以Waydroid跑Android版Apple Music吧。

1. 文獻回顧
#

Apple Music為Apple公司推出的訂閱制音樂串流服務,除了基本的AAC 256kbps外,還提供無損音質串流。

所謂無損音質有二個:

  1. 保真壓縮音訊,24bit/48kHz
  2. 高解析保真壓縮無損音訊,24bit/192kHz

Apple Music APP支援iOS與Android系統。電腦聽Apple Music需依賴iTunes或Apple Music Preview,而iTunes只有Windows和macOS版本。

那Linux呢?用Wine跑iTunes?新版本Wine根本開不起來。

KVM Windows虛擬機跑iTunes?No no no只是聽音樂而已開銷太大了。

Apple Music網頁版?不優,不支援無損音質。

Cider?這個只是Apple Music網頁版的wrapper而已,同樣不支援無損音質。

我在google資料的時候還看到熟悉的套路,有廠商宣稱用他們家的軟體,將Apple Music的音樂下載成mp3你就可以在Linux聽啦!…啊如果我下載那聽串流的意義在哪裡?

唉,太苦了,連 Linux Hint也幫TunesKit這種專有軟體打廣告。哈,你知道TunesKit的軟體根本沒有Linux版嗎?

所以我就想到用Waydroid容器跑Android版Apple Music,界面可愛又怡人。

2. 提高PipeWire取樣率
#

OS: Arch Linux 6.5.9,KDE 5.27.9 (Wayland)

PipeWire為新型的音訊系統,向下相容舊有的PulseAudio伺服器。PipeWire預設取樣率(sample rate)是48kHz,我們要把它的取樣率提升到Apple Music無損音質的192kHz。

值得注意的是取樣率48kHz以上的音樂可能得外接DAC才能聽得出效果。

  1. 執行指令pactl info,確認目前使用的是PipeWire,印出...on PipeWire代表目前是PipeWire。

  2. 複製pipewire.conf/etc/pipewire,編輯之

sudo cp /usr/share/pipewire/pipewire.conf /etc/pipewire
sudo vim /etc/pipewire/pipewire.conf
  1. 修改如下,default.clock.rate填入192kHz,default.clock.allowed-rates按照喜好填入所有可用的取樣率。
default.clock.rate          = 192000
default.clock.allowed-rates = [  44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000 ]
  1. 重新啟動PipeWire服務
systemctl restart --user pipewire.service
systemctl restart --user pipewire-pulse.service
  1. pactl info查看是否已經變更成功

3. 安裝Apple Music
#

  1. 請安裝Waydroid,目前是Android 11。 Arch Linux Ubuntu

  2. Apple Music有x86版,可以直接到Play商店下載。

  3. 登入Apple ID,再勾選無損音質就好囉。

  4. 不幸的是,Linux端用pw-top指令查看,儘管Apple Music可以有192Hz輸出(ALSA),但Waydroid輸出到Linux端的音訊取樣率最高只有48Hz(Android SRC本身的限制),這樣也是有符合保真壓縮音訊的標準啦。

Waydroid播放開銷可比虛擬機跑iTunes要小多了。歌詞、專輯封面動態一切正常。

斟酌啟用多視窗模式。在支援好的Wayland環境下,就可以自由調整Apple Music的版面大小。

4. 嘗試解除Waydroid 48kHz的限制
#

音訊播放結構

Apple Music → (Android) Waydroid → PipeWire → DAC

現在應該是卡在Android端的問題。

要解除限制Android端48kHz的限制,使用 usb-samplerate-unlocker或者 lineage-audio-mod模組,可以用Magisk刷。

或是手動改Waydroid vendor.img檔案,把lineage-audio-mod修改的檔案放到Android系統:

cd Downloads
git clone https://github.com/nyarla/magisk-lineage-audio-mod.git
sudo systemctl stop waydroid-container

# 調整vendor.img大小
sudo dd if=/dev/zero bs=1MiB of=/var/lib/waydroid/images/vendor.img  conv=notrunc oflag=append count=512
sudo e2fsck -yf /var/lib/waydroid/images/vendor.img
sudo resize2fs -f /var/lib/waydroid/images/vendor.img
sudo mkdir vendor

# 掛載並把檔案移動進去
sudo mount -t ext4 -o loop,rw /var/lib/waydroid/images/vendor.img vendor
sudo cp magisk-lineage-audio-mod/system/vendor/etc/* vendor/system/vendor/etc/
sudo umount vendor
sudo systemctl restart waydroid-container

重開Waydroid後安裝 Sample Rate Checker看到支援的取樣率有192kHz

但…pw-top依然顯示Waydroid輸出48kHz而已。

如此一來,想要192kHz的音訊恐怕還是得跑虛擬機+iTunes了。

相關討論
#

相關文章

離線安裝Flatpak應用程式,比較Bundles與Create-usb打包方法
分類   Linux系統 Linux使用技巧
標籤   Flatpak
雙顯卡Linux筆電很耗電?用EnvyControl切換Nvidia獨顯,還可以省電
分類   Linux系統 Linux使用技巧
標籤   Nvidia Linux OpenSUSE
Linux透過圖形界面設定靜態IP & 修改DNS伺服器,加快上網速度
分類   Linux系統 Linux使用技巧
標籤   DNS Ubuntu Arch Linux

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請貼Imgur或Postimages。