本文介绍: m3u8 文件实质是一个播放列表(playlist),其可能是一个媒体播放列表(Media Playlist),或者是一个主列表(Master Playlist)。但无论是哪种播放列表,其内部文字使用的都是 utf-8 编码。当 m3u8 文件作为媒体播放列表(Meida Playlist)时,其内部信息记录的是一系列媒体片段资源,顺序播放该片段资源,即可完整展示多媒体资源。#EXTM3U。
多任务异步协程
协程:更高效的利用CPU
import time
def func():
print("黎明")
time.sleep(3)
print("还是黎明")
func()
等待时机长 sleep时CPU不再工作 IO操作(费时不费力)->阻塞
python实现协程
import asyncio #借助event_loop
async def func():#协程 生成器
print("233")
if __name__ == "__main__":
result = func()
#print(result)
asyncio.run(result)#loop.close()可能报错
#同下
"""
event_loop = asyncio.get_event_loop()
#event_loop执行协程对象,直到该对象内容执行完毕
event_loop.run_until_complete(result)
"""
官方方案
import asyncio #借助event_loop
import time
async def func1():
print("func1")
await asyncio.sleep(1)
print("func1 over")
async def func2():#协程 生成器
print("func2")
await asyncio.sleep(2)
print("func2 over")
async def func3():#协程 生成器
print("func3")
await asyncio.sleep(3)
print("func3 over")
#多函数任务
if __name__ == '__main__':
start = time.time()
result1 = func1()
result2 = func2()
result3 = func3()
#三个任务放一起
tasks = [result1,result2,result3,]
asyncio.run(asyncio.wait(tasks)) #无阻塞
print(time.time() - start())
#await 挂起
import asyncio
async def func1():
print("func1")
await asyncio.sleep(1)
print("func1 over")
return "func1 返回值"
async def func2():#协程 生成器
print("func2")
await asyncio.sleep(2)
print("func2 over")
return "func2 返回值"
async def func3():#协程 生成器
print("func3")
await asyncio.sleep(3)
print("func3 over")
return "func2 返回值"
async def main():
f1 = func1()
f2 = func2()
f3 = func3()
tasks = [
asyncio.create_task(f1),
asyncio.create_task(f2),
asyncio.create_task(f3),
]
result = asyncio.gather(*tasks) #位置参数 有顺序
#结束,运行
done,pending = await asyncio.wait(tasks)#第二
#print(done)
#print(pending) 空
"""
for t in done:
print(t.done())#done set集合 无序 返回结果没有顺序
"""
if __name__ == "__main__":
asyncio.run(main())
视频下载
"""
<video>
无直接url,占网速,占内存
切片 .ts
名称散列 顺序
ts文件正确顺序保存 ->M3U -> urf-8 -> M3U8
1请求M3U8文件
2加载ts文件
3正常播放
服务器压力小,用户体验好
"""
M3U8 文件简介
m3u8 文件实质是一个播放列表(playlist),其可能是一个媒体播放列表(Media Playlist),或者是一个主列表(Master Playlist)。但无论是哪种播放列表,其内部文字使用的都是 utf-8 编码。
当 m3u8 文件作为媒体播放列表(Meida Playlist)时,其内部信息记录的是一系列媒体片段资源,顺序播放该片段资源,即可完整展示多媒体资源。其格式如下所示:
#EXTM3U #EXT-X-TARGETDURATION:10 #EXTINF:9.009, http://media.example.com/first.ts #EXTINF:9.009, http://media.example.com/second.ts #EXTINF:3.003, http://media.example.com/third.ts
"""
<video> 无直接url,占网速,占内存
.ts 是视频切片
名称散列 顺序
ts文件正确顺序保存 ->M3U -> urf-8 -> M3U8
1请求M3U8文件
2加载ts文件
3正常播放
服务器压力小,用户体验好
#EXTM3U
#EXT-X-TARGETDURATION:13 //视频最大切片时长
#EXT-X-KEY:METHOD=AES-128,URI="key.key" //切片文件加密方式&密钥地址
对称加密
"""
"""步骤"""
#拿到视频页的页面源代码
#找到iframe src 为M3U8
#请求到src对应的页面源代码 M3U8地址
#第一层M3U8
#第二层
#ts解密
#对ts 合并
原文地址:https://blog.csdn.net/SHI_56/article/details/134666577
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_13373.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。