需求

  • 在網路上要下載影片時,遇到影片嵌入在網頁裡無法下載的問題。

  • 使用過 yt-dlp "在網站中的影片嵌入連結" --referer "該網站的網址" 無效。

  • 使用過 yt-dlp "影片請求網址" 發現下載下來的影片只有畫面或聲音。

解法

  • 仔細觀察這支影片有哪些可請求檔案的 .m3u8 網路請求。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    #EXTM3U
    #EXT-X-VERSION:7
    
    #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",LANGUAGE="eng",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="c74f43166cf91fa68d78e5c446527f70_mpegts-aac-1-eng.m3u8"
    
    #EXT-X-STREAM-INF:BANDWIDTH=1885250,CODECS="avc1.64001e,mp4a.40.2",RESOLUTION=640x360,AUDIO="audio"
    c74f43166cf91fa68d78e5c446527f70_mpegts-h264-640:360.m3u8
    
    #EXT-X-STREAM-INF:BANDWIDTH=3614257,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1920x1080,AUDIO="audio"
    c74f43166cf91fa68d78e5c446527f70_mpegts-h264-1920:1080.m3u8
    
  • 用相同方式下載網址差異最大的兩個。

    會發現一個是有聲音但沒畫面的影片檔,另一個是沒聲音但有畫面的影片檔。

  • 開啟終端機依照語法輸入指令,來合併兩個檔案,就可以得到完整的影片檔。

    語法:

    1
    
    ffmpeg -i "有畫面沒聲音的影片.mp4" -i "沒畫面有聲音的影片.mp4" -c:v copy -c:a aac "合併後的影片.mp4"
    

    範例:

    1
    
    ffmpeg -i "c74f43166cf91fa68d78e5c446527f70_mpegts-h264-1920:1080.mp4" -i "c74f43166cf91fa68d78e5c446527f70_mpegts-aac-1-eng.mp4" -c:v copy -c:a aac "c74f43166cf91fa68d78e5c446527f70.mp4"