File tree Expand file tree Collapse file tree 2 files changed +20
-3
lines changed
Expand file tree Collapse file tree 2 files changed +20
-3
lines changed Original file line number Diff line number Diff line change @@ -137,3 +137,20 @@ ffmpeg -i "concat:0.mp3|1.mp3" -acodec copy output.mp3
137137file '文件路径\0.ts'
138138file '文件路径\1.ts'
139139file '文件路径\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片段
Original file line number Diff line number Diff 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
187187response = getVideoUrl (url , needAudio )
188188
189189# 获取真实视频地址
You can’t perform that action at this time.
0 commit comments