电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python通過m3u8文件下載合并ts視頻的操作

瀏覽:9日期:2022-06-22 11:57:34

前段時間,接到一個需求,要求下載某一個網站的視頻,然后自己從網上查閱了相關的資料,在這里做一個總結。

1. m3u8文件

m3u8是蘋果公司推出一種視頻播放標準,是一種文件檢索格式,將視頻切割成一小段一小段的ts格式的視頻文件,然后存在服務器中(現在為了減少I/o訪問次數,一般存在服務器的內存中),通過m3u8解析出來路徑,然后去請求,是現在比較流行的一種加載方式。目前,很多新聞視頻網站都是采用這種模式去加載視頻。

M3U8文件是指UTF-8編碼格式的M3U文件。M3U文件是記錄了一個索引純文本文件,打開它時播放軟件并不是播放它,而是根據它的索引找到對應的音視頻文件的網絡地址進行在線播放。原視頻數據分割為很多個TS流,每個TS流的地址記錄在m3u8文件列表中。

下面就是m3u8文件的格式。

#EXTM3U#EXT-X-VERSION:3#EXT-X-MEDIA-SEQUENCE:0#EXT-X-ALLOW-CACHE:YES#EXT-X-TARGETDURATION:15#EXTINF:6.916667,out000.ts#EXTINF:10.416667,out001.ts#EXTINF:10.416667,out002.ts#EXTINF:1.375000,out003.ts#EXTINF:1.541667,out004.ts#EXTINF:7.666667,out005.ts#EXTINF:10.416667,2. ts文件處理

只有m3u8文件,需要下載ts文件

ts文件能正常播放,但太多而小,需要合并 有ts文件

但因為被加密無法播放,需要解碼

在這里我只記錄下前兩個步驟,因為,我目前研究的比較少,還沒有遇到ts被加密的情況。

3. 分析舉例

那么下面,我就正式舉一個網站,第一財經網(直接點擊)跟大家正式的講解下。

這是該網站的視頻。如下圖:

Python通過m3u8文件下載合并ts視頻的操作

點擊第一個視頻,這就是我們這次要爬取的視頻。

Python通過m3u8文件下載合并ts視頻的操作

然后鼠標右鍵點擊,選擇'檢查' 或者按F12鍵,進入開發者模式,查看網頁代碼。

然后,點擊Network ,再點擊other,尋找請求地址中帶有m3u8和ts標記的請求地址。

不懂,請看下圖。有一點,很重要。網站通過切割后ts加載視頻,并不是沒有規律的,而是通過m3u8文件附帶的。也就說,網站一定是先加載m3u8文件,然后根據m3u8文件,去請求ts文件。所以,如果你找不到m3u8文件的話,你可以先找第一個ts文件,然后往上面翻,一定能找到m3u8文件。

Python通過m3u8文件下載合并ts視頻的操作

再點擊這個m3u8文件,右側對應的就是它的請求地址。

Python通過m3u8文件下載合并ts視頻的操作

請求地址如下:

https://ycalvod.yicai.com/record/live/cbn/ca233887-1443-4bdf-b762-3b4b3a217085_LD.m3u8?auth_key=1575703722-0-0-6f09e9a156491f027a035e31c238c48c&ycfrom=yicaiwww

你可以把上面那個地址,輸入瀏覽器地址框內,下載下來。也可以通過查看源碼,找到該功能的對應的html代碼。

這是下載下來的m3u8文件。

Python通過m3u8文件下載合并ts視頻的操作

Python通過m3u8文件下載合并ts視頻的操作

從圖片可以看出來,每一個ts文件都是相對的地址,所以下面我們就需要找到絕對地址。

Python通過m3u8文件下載合并ts視頻的操作

ts文件地址如下:

https://ycalvod.yicai.com/record/live/cbn_yld/1575111614_3446078.ts

上面,我們已經把這個網站的視頻加載模式分析的很透徹,下面就開始擼代碼了。

4. 獲取ts文件

def getTsUrl(): ts_url_list = [] baseUrl = 'https://ycalvod.yicai.com/record/live' with open('ca233887-1443-4bdf-b762-3b4b3a217085_LD.m3u8', 'r', encoding='utf-8') as f:m3u8Contents = f.readlines()for content in m3u8Contents: if content.endswith('tsn'):ts_Url = baseUrl + content.replace('n', '').replace('..', '')ts_url_list.append(ts_Url)print(ts_Url) return ts_url_list5. 下載ts文件

def download_ts_video(download_path, ts_url_list): download_path = r'C:UsersAdministratorDesktopAiShu下載視頻TS視頻' for i in range(len(ts_url_list)):ts_url = ts_url_list[i]try: response = requests.get(ts_url, stream=True, verify=False)except Exception as e: print('異常請求:%s' % e.args) returnts_path = download_path + '{}.ts'.format(i)with open(ts_path, 'wb+') as file: for chunk in response.iter_content(chunk_size=1024):if chunk: file.write(chunk) print('TS文件下載完畢!!')

這就是我本地下載好的ts切割視頻

Python通過m3u8文件下載合并ts視頻的操作

6. 合并TS視頻

def heBingTsVideo(download_path,hebing_path): all_ts = os.listdir(download_path) with open(hebing_path, ’wb+’) as f:for i in range(len(all_ts)): ts_video_path = os.path.join(download_path, all_ts[i]) f.write(open(ts_video_path, ’rb’).read()) print('合并完成!!')

最后的結果如下:

Python通過m3u8文件下載合并ts視頻的操作

7. 完整的代碼

有興趣的小伙伴,可以研究下。

import requests,osdef getTsUrl(): ts_url_list = [] baseUrl = 'https://ycalvod.yicai.com/record/live' with open('ca233887-1443-4bdf-b762-3b4b3a217085_LD.m3u8', 'r', encoding='utf-8') as f:m3u8Contents = f.readlines()for content in m3u8Contents: if content.endswith('tsn'):ts_Url = baseUrl + content.replace('n', '').replace('..', '')ts_url_list.append(ts_Url)print(ts_Url) return ts_url_listdef download_ts_video(download_path, ts_url_list): download_path = r'C:UsersAdministratorDesktopAiShu下載視頻TS視頻' for i in range(len(ts_url_list)):ts_url = ts_url_list[i]try: response = requests.get(ts_url, stream=True, verify=False)except Exception as e: print('異常請求:%s' % e.args) returnts_path = download_path + '{}.ts'.format(i)with open(ts_path, 'wb+') as file: for chunk in response.iter_content(chunk_size=1024):if chunk: file.write(chunk) print('TS文件下載完畢!!')def heBingTsVideo(download_path,hebing_path): all_ts = os.listdir(download_path) with open(hebing_path, ’wb+’) as f:for i in range(len(all_ts)): ts_video_path = os.path.join(download_path, all_ts[i]) f.write(open(ts_video_path, ’rb’).read()) print('合并完成!!')if __name__ == ’__main__’: download_path = r'C:UsersAdministratorDesktopAiShu下載視頻TS視頻' hebing_path = r'C:UsersAdministratorDesktopAiShu下載視頻合并TS視頻第一財經.mp4' ts_url_list = getTsUrl() download_ts_video(download_path, ts_url_list) heBingTsVideo(download_path,hebing_path)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 扬尘监测_扬尘监测系统_带证扬尘监测设备 - 郑州港迪科技有限公司 | 宿舍管理系统_智慧园区系统_房屋/房产管理系统_公寓管理系统 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 北京办公室装修,办公室设计,写字楼装修-北京金视觉装饰工程公司 北京成考网-北京成人高考网 | 点胶机_点胶阀_自动点胶机_智能点胶机_喷胶机_点胶机厂家【欧力克斯】 | 升降炉_真空气氛炉_管式电阻炉厂家-山东中辰电炉有限公司 | 冷凝水循环试验箱-冷凝水试验箱-可编程高低温试验箱厂家-上海巨为(www.juweigroup.com) | 【同风运车官网】一站式汽车托运服务平台,验车满意再付款 | 成都竞价托管_抖音代运营_网站建设_成都SEM外包-成都智网创联网络科技有限公司 | 欧洲MV日韩MV国产_人妻无码一区二区三区免费_少妇被 到高潮喷出白浆av_精品少妇自慰到喷水AV网站 | RTO换向阀_VOC高温阀门_加热炉切断阀_双偏心软密封蝶阀_煤气蝶阀_提升阀-湖北霍科德阀门有限公司 | 刑事律师_深圳著名刑事辩护律师_王平聚【清华博士|刑法教授】 | 全自动实验室洗瓶机,移液管|培养皿|进样瓶清洗机,清洗剂-广州摩特伟希尔机械设备有限责任公司 | 哈尔滨治「失眠/抑郁/焦虑症/精神心理」专科医院排行榜-京科脑康免费咨询 一对一诊疗 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 山东齐鲁漆业有限公司【官网】-工业漆专业生产厂家 | 镀锌方管,无缝方管,伸缩套管,方矩管_山东重鑫致胜金属制品有限公司 | 富森高压水枪-柴油驱动-养殖场高压清洗机-山东龙腾环保科技有限公司 | 温州中研白癜风专科_温州治疗白癜风_温州治疗白癜风医院哪家好_温州哪里治疗白癜风 | 哈尔滨发电机,黑龙江柴油发电机组-北方星光| 找果网 | 苹果手机找回方法,苹果iPhone手机丢了找回,认准找果网! | 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 道达尔润滑油-食品级润滑油-道达尔导热油-合成导热油,深圳道达尔代理商合-深圳浩方正大官网 | 珠宝展柜-玻璃精品展柜-首饰珠宝展示柜定制-鸿钛展柜厂家 | 电磁流量计_智能防腐防爆管道式计量表-金湖凯铭仪表有限公司 | 瑞典Blueair空气净化器租赁服务中心-专注新装修办公室除醛去异味服务! | 菏泽商标注册_菏泽版权登记_商标申请代理_菏泽商标注册去哪里 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 厌氧工作站-通用型厌氧工作站-上海胜秋科学仪器有限公司 | 天津蒸汽/热水锅炉-电锅炉安装维修直销厂家-天津鑫淼暖通设备有限公司 | 选矿设备,选矿生产线,选矿工艺,选矿技术-昆明昆重矿山机械 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | 事迹材料_个人事迹名人励志故事| 德国BOSCH电磁阀-德国HERION电磁阀-JOUCOMATIC电磁阀|乾拓百科 | 蜘蛛车-高空作业平台-升降机-高空作业车租赁-臂式伸缩臂叉装车-登高车出租厂家 - 普雷斯特机械设备(北京)有限公司 | 中国产业发展研究网 - 提供行业研究报告 可行性研究报告 投资咨询 市场调研服务 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 储能预警-储能消防系统-电池舱自动灭火装置-四川千页科技股份有限公司官网 | 桐城新闻网—桐城市融媒体中心主办| 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 土壤养分检测仪_肥料养分检测仪_土壤水分检测仪-山东莱恩德仪器 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 |