skip to content

起因

原本在 chrome 的 extension 上有找到一個 MAX Video Downloader,看起來可以幫你下載 MPD stream, 但他有個問題,就是要在 mac 上需要安裝另一個 download app, 且安裝之後,需要開高權限給他

Terminal window
xattr -dr com.apple.quarantine "/Applications/mvdcoapp.app" && open "/Applications/mvdcoapp.app"

雖說作者有說,這個上面這段的用途是什麼,為什需要這樣做,甚至還有提供 VirusTotal Scan 的報告,但不免還是有點小疑慮。如果你願意相信作者,那就可以不用往下看了 XD

Tech Stack

Docker

會用 docker 是因為要隔離開 Mac 的環境,這樣在 docker 裡的程式要幹啥鳥事都隨便他

N_m3u8DL-RE

目前看起來最好用的 MPD stream downloader

Arch Linux

主要原因是在 N_m3u8DL-RE 有提供 Arch Linux 的 AUR,所以透過 Arch Linux 應該會比較方便…吧?

另外,這個安裝照理說是該寫成 docker file, 單因為我還找不到在 Arch Linux 下如何讓 pacman 可以依照 script 選擇 options, 所以就只好以這種方式記錄下來

Steps

Terminal window
# 當然你也可以挑其他的 image, 且官方沒有提供 arm64 的 image, 只能找別人 build 好的
docker pull fascinatedcow/archlinux:arm64
# 進入 arch linux 的 bash, 並 mount videos
docker run -it -v ./videos:/videos fascinatedcow/archlinux:arm64 bash

在 arc linux 的 bash 裡:

Terminal window
## 重新 init key
pacman-key --init
pacman-key --populate archlinuxarm
pacman -Syu
## 加入 user
useradd -m -G wheel,users -s /bin/bash hermes
passwd hermes
## 設定環境變數給 visudo 並進入 visudo
## 強烈建議一定要用其他的 editor 去取代原本 visudo,
## 因為那個預設的 vi 根本是什麼惡作劇軟體吧?
EDITOR=nano visudo

在 visudo 的 editor 裡:

## 讓 user 可以 sudo
# 找到並取消註解以下行: 在開啟的檔案中,找到以下這一行(通常在文件後半部),並將行首的 # 符號刪除,使其生效:
# %wheel ALL=(ALL:ALL) ALL
# 修改後應為:
%wheel ALL=(ALL:ALL) ALL

回到 arch linux 的 bash

Terminal window
## 安裝 yay
sudo pacman -Sy --needed git base-devel && git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si
## 安裝 n-m3u8dl-re 會需要的 clang packages
sudo pacman -S clang
## 加上這個 sybolic link 是因為 n-m3u8dl-re 會需要 `指名 clang-9` 的套件
## 由於我也找不到 clang-9 的套件, 就只好用 sybolic link 來騙騙他 XD
sudo ln -s /usr/bin/clang /usr/bin/clang-9
## 安裝 n-m3u8dl-re 會需要的 binutils packages
sudo pacman -S binutils
## 再加上這個 sybolic link, 也是因為 n-m3u8dl-re 會需要 `指名 aarch64-linux-gnu-objcopy` 的套件
## 就只好再騙他第二次了
sudo ln -s $(which objcopy) /usr/bin/aarch64-linux-gnu-objcopy
## 順便更新 dotnet
sudo dotnet workload update
## 開始安裝 N_m3u8DL-RE
yay -S n-m3u8dl-re
## 選擇 n-m3u3dl-re-git,重新從 git 上拉下來重新 build
## 為什麼要重新 build 呢?因為我的環境是 arm64 的緣故,n-m3u8dl-re-bin 是 x86 的架構
## :: There are 2 providers available for n-m3u8dl-re:
## :: Repository AUR
## 1) n-m3u8dl-re-bin 2) n-m3u8dl-re-git
Enter a number (default=1): 2

如果到目前為止都沒有什麼問題的話,那就快完成了。如果安裝過程有遇到問題的話 ,建議丟到 chatgpt 或是 gemini 去問,會比你在 google 上搜尋快很多。

尤其現在 google 的搜尋因為會被 AI 介入的關係,那個搜尋結果根本跟屎一樣

繼續往下安裝:

Terminal window
## 安裝 ffmpeg
sudo pacman -S ffmpeg
## 選擇 pipewire-jack (gemini 建議的 XD)
## resolving dependencies...
## :: There are 2 providers available for jack:
## :: Repository extra
## 1) jack2 2) pipewire-jack
Enter a number (default=1): 2

至此,該安裝完的就安裝完了,可以快樂的下載了 XD

如果有要下載有 DRM 保護的東西,那個就再請自行研究了,我只是單純要下載我上課的影片罷了

Terminal window
## 下載 video and audio
n-m3u8dl-re "url.mpd" --save-dir ./videos --save-name 'video_name.mp4'
## 將 download 下來的影片跟聲音檔合併
ffmpeg -i video.mp4 -i video.mp3 -c:v copy -c:a copy output.mp4