本代码直接复制可用,前提是要先安装ffmpeg!要先安装ffmpeg!要先安装ffmpeg!ffmpeg非常好用,装了不后悔。
使用方式:先将以下代码保存为down_load_m3u8.py,然后在cmd窗口中执行"python down_load_m3u8.py m3u8链接/有m3u8列表的文件路径"。
比如:
1.直接下载链接:python down_load_m3u8.py https://abc.com/def/hijk/index.m3u8
2.指定文件批量下载:python down_load_m3u8.py m3u8_urls.txt (m3u8_urls.txt内是你要下载的链接,按行读取)
3.或者安装好了ffmpeg以后,不用到以下的python代码下载,而是直接通过ffmpeg下载,在cmd执行命令即可:ffmpeg -i m3u8链接 file_name.mp4,比如"ffmpeg -i https://abc.com/def/hijk/index.m3u8 file_name.mp4"
class DownLoadM3u8:
def get_now_time(self):
"""
获取当前时间
"""
from datetime import datetime
return datetime.now().strftime("%Y-%m-%d_%H%M%S")
def down_m3u8(self,m3u8_url):
import os
import subprocess
this_file_dir_path = os.path.abspath(os.path.dirname(__file__))
result = subprocess.run(f'ffmpeg -i {m3u8_url} {self.get_now_time()}.mp4', shell=True, stdout=subprocess.PIPE, cwd=this_file_dir_path)
print(result)
def run(self):
import sys
param = sys.argv[1] # 获取参数
if param.startswith("http"): # 直接输入链接下载
self.down_m3u8(param)
else: # 参数是指定文件路径,文件内有下载列表
#读取行,遍历行,每一行都调用一次下载
file = open(param)
while 1:
line = file.readline()
if not line:
break
print(f"开始下载{line}")
self.down_m3u8(line)
file.close()
if __name__ == "__main__":
DownLoadM3u8().run()
效果图: