廊坊网站建设公司哪家好,做关于植物的网站,青岛今天发生的重大新闻,html5开发安卓app前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家#xff1a;点击跳转
方法#xff1a;
解析m3u8#xff0c;获取其中的ts列表#xff0c;多线程下载所有ts文件。
全部下完之后#xff0c;用ffmpeg合… 前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家点击跳转
方法
解析m3u8获取其中的ts列表多线程下载所有ts文件。
全部下完之后用ffmpeg合并成mp4
代码
import requests
import os
import threadingtnum 64class Downloader(threading.Thread):def __init__(self, id, url, ts_list, file_path):threading.Thread.__init__(self)self.id idself.url urlself.ts_list ts_listself.file_path file_pathdef run(self):for i in range(self.id, len(self.ts_list), tnum):ts_url self.ts_list[i]r requests.get(ts_url, streamTrue)if r.status_code 200:with open(self.file_path f_{i}.ts, wb) as f:for chunk in r.iter_content(chunk_size1024):if chunk:f.write(chunk)def download_m3u8_video(url, file_path):r requests.get(url)if r.status_code ! 200:print(m3u8视频下载链接无效)return Falsem3u8_list r.text.split(\n)m3u8_list [i for i in m3u8_list if i and i[0] ! #]ts_list []for ts_url in m3u8_list:ts_url url.rsplit(/, 1)[0] / ts_urlts_list.append(ts_url)f open(file_pathfile_list.txt, w)for i in range(len(ts_list)):f.write(file \ f_{i}.ts \n)f.close()threads []for i in range(0, tnum):thread Downloader(i, url, ts_list, file_path.rsplit(., 1)[0])thread.start()threads.append(thread)for thread in threads:thread.join()return not endflagdef merge_file(path, save_path):ffmpeg_bin_dic C:/ffmpeg-2023-08-07-git-d295b6b693-full_build/bin/os.system(ffmpeg_bin_dicffmpeg -f concat -safe 0 -i pathfile_list.txt -c copy save_path)def down(url):name url[-41:-5]print(name)ts_file_path D:/v/ name/os.makedirs(ts_file_path)mp4_file_path D:/v2/name.mp4global endflagendflag Falseif download_m3u8_video(url, ts_file_path):print(m3u8视频下载完成)merge_file(ts_file_path, mp4_file_path)else :print(error!!!!)print(url)url_list [https://sth.com/videos/202305091/d63b006e-c6fb-4997-8d43-7ebd086e9c75.m3u8,https://sth.com/videos/202305081/2c9fa41b-e25b-4371-908f-d246628d7bed.m3u8,
]for url in url_list:down(url)