1.m3u8是什么
m3u8是苹果公司推出的视频播放标准,是基于HTTP的流媒体网络传输协议(HLS)。HLS是把整个流分成一个个小的基于 HTTP 的文件来下载。m3u8 文件实质是一个播放列表(playlist),其内部文字使用的都是 utf-8 编码。
客户端只需按顺序下载上述片段资源,依次进行播放即可。而对于直播来说,客户端需要定时重新请求该 m3u8 文件,看下是否有新的片段数据需要进行下载并播放。
2.下载视频
知道原理开始分流下载片段。其中有些网站的ts文件是采用AES方式进行加密,所以需要对其进行解密。因而我们需要去读取这个key文件,拿取密钥。
代码如下:
import m3u8
import requests
import os
import re
from Crypto.Cipher import AES
import glob
import concurrent.futures
import time
from concurrent.futures import as_completed
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36"
}
#正则表达判断是否为网站地址
def reurl(url):
pattern = re.compile(r'^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+')
m=pattern.search(url)
if m is None:
return False
else:
return True
#获取密钥
def getKey(keystr,url):
keyinfo= str(keystr)
method_pos= keyinfo.find('METHOD')
comma_pos = keyinfo.find(",")
method = keyinfo[method_pos:comma_pos].split('=')[1]
uri_pos = keyinfo.find("URI