前陣子錄影上傳到 YouTube:
發現使用舊有的 yt-dlp 參數會抓不到想要的影片格式,透過 --list-formats
和 --list-subs
工具以後,才知道 YouTube 的影片格式有這麼多種,難怪上傳完成到上架要等很久。
yt-dlp 調整參數時,發現有時候下載的影片沒有聲音、有時候有聲音但畫面解析度較低。下了 --list-formats
以後,才發現影片的格式有很多種:
其中可以看到格式中同時有影像也有聲音的 ID 僅有 17
、18
、22
,其他不是只有影像就是指有音訊。
因此若指定高解析度的格式卻沒有指定音訊格式 -f "bestvideo[height<=1080]"
時,下載回來的檔案會只有影片沒有聲音。
因此若要讓下載視訊也同時附加音訊時,必須同時給定 video 和 audio 參數,yt-dlp 才會分別下載視訊和音訊後,再用 ffmpeg 做一次合併:
$ yt-dlp.sh \ -f "bestvideo[height<=1080]+bestaudio" \ "http://youtube.com/watch/?v=ooxx-yooo
另外看到 reddit 上有人分享懶人下載格式順序,直接指定常見的 format ID 來自動選擇最適合的格式搭配:
$ yt-dlp.sh \ -f "137,248,140,251,137+140,137+251" \ "http://youtube.com/watch/?v=ooxx-yooo
備註:若希望 yt-dlp 使用 ffmpeg 合併影片時輸出特定格式,可以加上 --remux-video "mp4"
參數