在 ARM64 的 docker 環境下擷取 MPD stream
/ 5 min read
Table of Contents
起因
原本在 chrome 的 extension 上有找到一個 MAX Video Downloader,看起來可以幫你下載 MPD stream, 但他有個問題,就是要在 mac 上需要安裝另一個 download app, 且安裝之後,需要開高權限給他
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
# 當然你也可以挑其他的 image, 且官方沒有提供 arm64 的 image, 只能找別人 build 好的docker pull fascinatedcow/archlinux:arm64
# 進入 arch linux 的 bash, 並 mount videosdocker run -it -v ./videos:/videos fascinatedcow/archlinux:arm64 bash在 arc linux 的 bash 裡:
## 重新 init keypacman-key --initpacman-key --populate archlinuxarmpacman -Syu
## 加入 useruseradd -m -G wheel,users -s /bin/bash hermespasswd 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
## 安裝 yaysudo pacman -Sy --needed git base-devel && git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si
## 安裝 n-m3u8dl-re 會需要的 clang packagessudo pacman -S clang
## 加上這個 sybolic link 是因為 n-m3u8dl-re 會需要 `指名 clang-9` 的套件## 由於我也找不到 clang-9 的套件, 就只好用 sybolic link 來騙騙他 XDsudo ln -s /usr/bin/clang /usr/bin/clang-9
## 安裝 n-m3u8dl-re 會需要的 binutils packagessudo pacman -S binutils
## 再加上這個 sybolic link, 也是因為 n-m3u8dl-re 會需要 `指名 aarch64-linux-gnu-objcopy` 的套件## 就只好再騙他第二次了sudo ln -s $(which objcopy) /usr/bin/aarch64-linux-gnu-objcopy
## 順便更新 dotnetsudo dotnet workload update
## 開始安裝 N_m3u8DL-REyay -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-gitEnter a number (default=1): 2如果到目前為止都沒有什麼問題的話,那就快完成了。如果安裝過程有遇到問題的話 ,建議丟到 chatgpt 或是 gemini 去問,會比你在 google 上搜尋快很多。
尤其現在 google 的搜尋因為會被 AI 介入的關係,那個搜尋結果根本跟屎一樣
繼續往下安裝:
## 安裝 ffmpegsudo pacman -S ffmpeg
## 選擇 pipewire-jack (gemini 建議的 XD)## resolving dependencies...## :: There are 2 providers available for jack:## :: Repository extra## 1) jack2 2) pipewire-jackEnter a number (default=1): 2至此,該安裝完的就安裝完了,可以快樂的下載了 XD
如果有要下載有 DRM 保護的東西,那個就再請自行研究了,我只是單純要下載我上課的影片罷了
## 下載 video and audion-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