m3u8常用于网络直播或在线视频,改文件格式最大的特点就是,他不向MP4文件很大的一整个,而是一个大的视频被切分为很多小的,以ts文件结尾的短视频文件.
.ts格式的文件是可以直接被播放器打开的,只是很短而已.
程序下载链接
# 个人服务器下载地址
http://43.138.58.139:83/windows/m3u8%E6%96%87%E4%BB%B6%E4%B8%8B%E8%BD%BD%E5%99%A8.exe
# 百度网盘下载地址
链接: https://pan.baidu.com/s/1Ii2usR1QIptByOEw-8cYPg 提取码: nip7 复制这段内容后打开百度网盘手机App,操作更方便哦
打开视频播放页面,按下F12(如果是笔记本可能需要按下FN+F12),打开开发工具窗口.
打开后如上图:
当然窗口也可能出现在其他位置,如镶嵌在网页中下面或者侧面,可以再右上角三个点的Dock Side选项调整,不管哪种都不影响接下来的操作.
然后
按F5或者浏览器的刷新当前网页.
网页被刷新后,会不断地加载各种文件,这些不需要关心,只需要注意最底部不断出现的,当出现xxx.ts时,就不要继续向下了.
此时,在最开始加载的ts文件上面(ts文件都是有序号的,注意结尾的数字都是递增的),找到一个叫做index.m3u8的文件,如图所示,他肯定在ts文件上面不远的位置,并且这个文件是一定存在的.
优先使用下面的index.m3u8的文件的地址,鼠标右键点击,弹出的窗口中复制下载地址.如下图.
双击之前下载的程序,启动,输入复制的地址,回车,输入要将下载的文件保存为什么名字,回车,稍等片刻(取决于网速)开始下载.
下载完成后窗口自动关闭,此时,他的同级目录下,会出现刚刚输入的要保存的内容的视频,如图.
双击视频,即可开始观看
注意:电影较大下载时间较长,黑窗口不能关闭,下载完成后会自动关闭,.
观看视频时,只能观看已经下载到本地的,也就是边下边播.
如图,已经下载了两分钟的,显示可观看的也是两分钟.如果播放器比较好他会自动更新时长.
上一种方法适合大多数人,这种方式适合少数人.
还是如上方式获取index.m3u8下载地址,然后需要安装Python解释器和pip,同时还要安装几个相关包,优势是下载快(当然也取决于你的网速和服务器的带宽,后者是无法干涉的),缺点是无法边看边播.
下载代码
import requests
from multiprocessing import Pool
import os
class download:
def __init__(self):
self.session = requests.Session()
self.headers = {'Content-Type':'application/json','User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}
def getContent(self,url,filename):
print('开始下载文件:',filename)
tsData = self.session.get(url,headers = self.headers).content
with open(filename,mode='wb') as w:
w.write(tsData)
def index(self,url):
'''
请求index文件 获取列表
'''
tsListString = self.session.get(url=url,headers = self.headers).content.decode('utf-8')
tsList = tsListString.split('\n')
# print(tsList)
'''
根据index.m3u8文件获取对应的ts视频列表
'''
tsDownList = []
for ts in tsList:
if '.ts' in ts:
tsDownList.append(ts)
# print(tsDownList)
'''
获取下载地址
'''
downloadUrl = url.split('index.m3u8')[0]
'''
创建进程池提交任务
'''
print("开始创建进程池...")
pool = Pool(10)
for i in tsDownList:
pool.apply_async(func=self.getContent,args=(downloadUrl+i,i))
pool.close()
pool.join()
def fileIntegration(self,fileNameMp4):
'''
文件合并函数
'''
fileList = os.listdir()
tsFileList = []
for tsFile in fileList:
if '.ts' in tsFile:
tsFileList.append(tsFile)
fileNameMp4 = fileNameMp4 + '.mp4'
if os.path.exists(fileNameMp4):
os.remove(fileNameMp4)
with open(fileNameMp4, mode='ab') as w:
for i in tsFileList:
with open(i,mode='rb') as r:
fileData = r.read()
w.write(fileData)
os.remove(i)
if __name__ == '__main__':
url = input("[url] >")
fileNameMp4 = input("[要保存的文件名] >")
download().index(url)
print("开始合并文件")
download().fileIntegration(fileNameMp4)
Python官网下载解释器
https://www.python.org/
下载安装都是国外地址.操作麻烦,建议非专业人士不要试了,访问量高在写这种方式详细操作安装过程,行内人看到自然知道怎么操作,代码已经写好,新建个文件粘贴进去执行按照提示输入就好,要是在import位置有问题win + R 打开执行pip install [import后面的名称就完事]
文章仅供学习交流使用,转载请附上原文地址
原有下载地址http://49.232.43.42:83/windows/m3u8%E6%96%87%E4%BB%B6%E4%B8%8B%E8%BD%BD%E5%99%A8.exe
已经过期,更换为新地址