Skip to content

Commit efd200e

Browse files
committed
mu38下载须知笔记
1 parent 189d21c commit efd200e

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

venv/com/python/mu38/note/mu38下载视频须知.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,3 +137,20 @@ ffmpeg -i "concat:0.mp3|1.mp3" -acodec copy output.mp3
137137
file '文件路径\0.ts'
138138
file '文件路径\1.ts'
139139
file '文件路径\2.ts'
140+
141+
## 分析M3U8文件
142+
当拿到一个m3u8格式的地址时,首先将m3u8格式的文件用\n隔开,并遍历,并检测有没有以EXT-X-KEY:开头或者包含的片段,这个片段就是m3u8格式的加密信息一般命名为:
143+
144+
#EXT-X-KEY:METHOD=AES-128,URI="xx.key",IV=xxx
145+
146+
这里只分析解密方法为aes-128解密的逻辑:
147+
148+
aes128解密需要两个参数一个是key,一个是偏移量(iv)
149+
150+
首先URI开头指向的通常是一个链接这个链接如果以http开头那么直接请求就可以,如果不是那大多数情况下都是以请求m3u8文件的地址去掉最后一个/前面的地址拼接起来的,当我们请求到的地址就是解密所需要的key
151+
152+
大多数情况如果ts片段不是以http开头也可以通过这种方式拿到真实的地址
153+
154+
一般EXT-X-KEY里面会包含iv参数,iv参数是一个32位的字符串,如果包含直接拿到iv参数就可以,如果不包含则是以ts地址所在m3u8文件中的序列号作为iv参数,比如第一个ts片段,那么他的iv值就是
155+
000...0001 (31个0和1),这样拿到了偏移量(iv)
156+
当我们拿到ts片段后直接用aes和刚刚拿到的key和偏移量去解密得到的片段就是新的ts片段

venv/com/python/qt5/xigua/xiguashipin.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,13 +177,13 @@ def mergeAudioVideo(path, title):
177177

178178
# url = "https://www.ixigua.com/6704446868685849092"
179179
# url = "https://www.ixigua.com/6986561438525424165"
180-
url = "https://www.ixigua.com/6812123976207172104"
180+
url = "https://www.ixigua.com/7048552544691290631"
181181

182182
# 是否下载音频
183-
needAudio = False
183+
needAudio = True
184184

185185
# 是否需要合并视频
186-
needMerge = False
186+
needMerge = True
187187
response = getVideoUrl(url, needAudio)
188188

189189
# 获取真实视频地址

0 commit comments

Comments
 (0)