記一次加密的ts視頻下載


想要下載一個視頻,但是網站上不能直接下載。試過IDM,以及Streaming Video Recorder 都不行。因為視頻被加密了。

ts 是分片的視頻文件,m3u8 是播放索引列表(還可配置其他參數,比如加密)。

未加密的 ts 視頻下載方法

如果沒有加密的話,那么直接下載所有ts文件,然后合並即可。

  • windows 下合並: copy /b D:\a\*.ts D:\b\new.ts
  • Unix 下合並:echo 'd9c25b2f8f666097d855bfffcb22f529_' {1..9}.ts | tr "" "\ n"> tslist 接着 while read line; do cat $line >> new.ts; done < tslist (參考如何用Chrome下載視頻流

m3u8 文件中指定加密方式的 ts 視頻下載

有加密的話,需要處理m3u8文件,並使用ffmpeg進行轉換,具體步驟如下。 (參考m3u8加密文件的解密及ts文件的合並

有加密的視頻如何判斷,在m3u8文件中,有 EXT-X-KEY 的話就有加密,如下圖,后面有加密方式以及密鑰地址:

1595860320807

處理步驟:

  • 首先,下載所需文件:

    • 下載所有 .ts 文件;
    • 下載 .m3u8 文件(我這里命名a.m3u8);
    • .m3u8 文件中拿到 key,並保存,這里注意正確的 key 為16字節。(我本地命名 alikey)
  • 修改 .m3u8 文件,其中 key 的 URI 改為上一步保存本地的文件;ts是本地路徑的文件,如果是同一個目錄,只寫名字即可。

    1595860458255

  • ffmpeg命令 ffmpeg -allowed_extensions ALL -protocol_whitelist "file,http,crypto,tcp" -i a.m3u8 -c copy new.mp4 就生成了所需要的視頻文件。

報錯:Error when loading first segment

把key保存起來,m3u8文件配置改好,用ffmpeg下載時候,報錯

Error when loading first segment

搞了半天發現是下的key有問題,當時保存的是被壓縮的。

1595858073203

1595858090830

原來是被壓縮了,解碼后的key就是正確的,共16字節。

多個ts文件批量下載

  1. 拿到 m3u8 中的ts文件名,然后拼接即可拿到所有url,粘貼到下載工具即可批量下載。

  2. 如果文件名是按序號遞增的,那可以直接用迅雷批量下載:比如我們的文件名是 http://abc.com/0001.ts ... http://abc.com/0020.ts 共20個文件,迅雷可以使用通配符,直接指定范圍和通配符長度,就可以批量下載

    1595861445892


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM