最近使用 youtube-dl 指令下載 youtube 的影音,下載速度真的可以用「龜速」來形容。上網爬文了一下,有一個 youtube-dl 分支程式 yt-dlp,指令使用的方式幾乎一樣,但是下載速度超快的,所以改用 yt-dlp 來 [下載 | 搭配 mpv 即時觀看] youtube上的影音。
安裝方式如下:
1. 安裝
由於使用 python 的 pip 的方式安裝,可以先參考這篇 https://tinyurl.com/2s427cnk 如何安裝 youtube-dl。
升級 python3.8 +pip3:
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.8
sudo update-alternatives --config python
選項 路徑 優先權 狀態
------------------------------------------------------------
0 /usr/bin/python3.8 3 自動模式
1 /usr/bin/python2.7 1 手動模式
2 /usr/bin/python3.7 2 手動模式
* 3 /usr/bin/python3.8 3 手動模式
按下 <enter> 鍵以保留目前選項[*],或是輸入選擇編號:
輸入想要的python版本選項編號: 3
檢查python版本:
python -V
安裝pip3:
sudo apt install python3-pip
檢查pip3版本:
pip3 -V
使用 pip3 安裝更新 pip 及 yt-dlp:
sudo -H pip3 install -U pip yt-dlp
安裝 mp3gain (可以將音量標準化的一個軟體):
sudo apt update && sudo apt install snapd && sudo snap install mp3gain
安裝 mpv 影音播放軟體:
sudo apt install mpv
2. 自訂函數
you2mp3() #下載 youtube 轉成 mp3
you2mp4() #下載 youtube 轉成 mp4
youtv() #直接使用 yt-dlp + mpv 線上聽音樂或觀看影片
編輯 .bashrc 將you2mp3() you2mp4() youtv() 3個自訂函數貼到 .bashrc 檔案的最下方並存檔
vi ~/.bashrc
#如果是下載整個播放清單,網址須符合右方的格式 => https://www.youtube.com/playlist?list=PLf4gvJzKEA1IB_qHaFz4uaIy2Yq6jqFKy
#youtube-dl -cit --extract-audio --audio-format mp3 $1
yt-dlp -ci --extract-audio --audio-format mp3 $1
if [ $2 ] ; then
find $(pwd) -type f -iname \*.mp3 |
while read f ;do echo '處理中………"$f"'
mp3gain -p -a -r -k -d 6 "$f"
#mid3iconv -e gbk --remove-v1 "$f" &>/dev/null
done
fi
echo "$1" | grep -i "?v=" > /dev/null && f=$(echo "$1" | sed -e "s/^.*\?v=\(.*$\)/\1/") || f=$(echo "$1" | sed -e "s/^.*[a-z]\/\(.*$\)/\1/")
if [ "$f" != "" ] ; then
f1=$(find ./ -name "*$f*.mp3")
echo "mp3gain音量處理 $f1"
mp3gain -p -a -r -k -d 6 "$f1"
fi
}
you2mp4() {
如果是下載整個播放清單,網址須符合右方的格式 => https://www.youtube.com/playlist?list=PLo4HKDlY6L_nWnTF8EYBC0EeykU0LNYis
#youtube-dl "$1" -ci -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4
yt-dlp "$1" -ci -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4
}
youtv() {
[ $# == 0 ] && echo "請輸入Youtube影片網址URL" && return
mxy="--autofit=350 --ontop --geometry=100%:97%"
msync="--autosync=1 --mc=1"
mm="mpv $mxy $msync --cache=yes --loop=0"
tv="$mm --no-border"
#mp3="$mm --no-video --shuffle"
mp3="mpv --cache=yes --no-video --shuffle"
url=$1
border=$2
if [ "$border" == "" ] ; then
read -p "只播放音樂(請輸入mp3):" border
fi
case $border in
"mp3") $mp3 $url ;;
*) yt-dlp -q --no-check-certificate --prefer-ffmpeg -o- $url | $tv - ;;
esac
}
重新載入 ~/.bashrc
source ~/.bashrc
3. 使用
下載youtube影音儲存為mp3音樂檔(並標準化音量95db)
you2mp3 https://www.youtube.com/watch?v=xxxxx
下載youtube影音儲存為mp4影音檔
you2mp4 https://www.youtube.com/watch?v=xxxxx
觀看公視直播
youtv https://www.youtube.com/watch?v=JAzRXylm3M0