openssl aes-128-cbc -d -in 原.ts -out 解密後.ts -nosalt -iv 偏移量 -K key16進制
其中 iv 偏移量和 key 通常都會在 m3u8
中。 key要按地址下載下來, iv偏移量是可選的,若是m3u8裏沒有iv,iv能夠隨便設置爲0。還能夠直接使用 ffmpeg 直接合並文件。
github
五,對於加密的m3u8文件:
m3u8視頻另外一種下載方式
如上圖中用ts連接直接下載下來的ts視頻文件是加密的(爲何要下加密的?雖然加密可是下載速度快啊)。瀏覽器
#EXT-X-KEY 字段已經寫明瞭加密方式是AES-128,key經過URI獲取,IV也有。markdown
那怎麼解密呢?
1.複製URI地址到網頁,你將秒速自動下載獲得一個16字節文件
2.打開終端,打開該文件查看16進制:多線程
六,獲取key值:
下載m3u8裏的key文件,下載winhex.exe應用程序,安裝以後,把key文件拖入winhex裏,自動生成16進制。函數
七,合成下載好的.ts文件:post
左下角點擊運行:cmd網站
copy /b 文件所在盤:\子文件\*.ts 儲存的文件夾:\子文件\new.ts
把上邊的漢字換成盤符和文件所在的文件夾。
注意:合併ts文件時,若是ts文件超過1000,排序就會有問題,會出現,121,1210,1211.。。。。。122,1220,1221,1222.。。。。。
這裏分爲幾個部分,按批次合併。
八,合成一個ts文件以後還不能打開,由於ts是加密的。
這裏,沒有iv值,用0代替。這樣解密以後的ts文件便可播放。
九,注:ts文件的順序必須是有序的,不可缺乏的。
參考網址:簡書:https://www.jianshu.com/p/1b0adcc7b426
全部的ts轉MP4,新建文本文檔,ren *.mp4 *.ts,修改後綴.bat,運行便可。
key值文件下載以下圖:(需轉16進制數)
十,關於報錯
hex string is too short, padding with zero bytes to length
bad decrypt
25916:error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length:crypto\evp\evp_enc.c:559:
解決方法:
# 遍歷文件夾進行解密(執行cmd命令,必定查看當前路徑問題) import os for root, dirs, files in os.walk("E://BaiduNetdiskDownload//123//1",topdown=False): print(len(files)) os.system("cd 1") os.system("cd") for f in files: print(f) # os.system("openssl aes-128-cbc -d -in 7udG3475000.ts -out ./11/7udG3475000.ts -iv 00000000000000000000000000000000 -K 65323739393530323866636362626661"%(f,f)) os.system("openssl aes-128-cbc -d -in ./1/%s -out ./1/11/%s -iv 00000000000000000000000000000000 -K 65323739393530323866636362626661"%(f,f))
先解密,再合併爲一個文件。先把一個個小的ts文件解密,以後再進行合併爲大的ts,最後再改格式爲MP4,這種比較好,視頻播放不會出現卡頓,若是是先合併再解密,斷點播放會出現卡頓現象。