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

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

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

瀏覽:3日期: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 編程
相關文章:
主站蜘蛛池模板: 全自动烧卖机厂家_饺子机_烧麦机价格_小笼汤包机_宁波江北阜欣食品机械有限公司 | 柔性测斜仪_滑动测斜仪-广州杰芯科技有限公司 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 净化板-洁净板-净化板价格-净化板生产厂家-山东鸿星新材料科技股份有限公司 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 一航网络-软件测评官网 | 超声骨密度仪,双能X射线骨密度仪【起草单位】,骨密度检测仪厂家 - 品源医疗(江苏)有限公司 | 七维官网-水性工业漆_轨道交通涂料_钢结构漆 | app开发|app开发公司|小程序开发|物联网开发||北京网站制作|--前潮网络 | 浙江红酒库-冰雕库-气调库-茶叶库安装-医药疫苗冷库-食品物流恒温恒湿车间-杭州领顺实业有限公司 | 金属清洗剂,防锈油,切削液,磨削液-青岛朗力防锈材料有限公司 | 兰州牛肉面加盟,兰州牛肉拉面加盟-京穆兰牛肉面 | 哔咔漫画网页版在线_下载入口访问指引 | 电磁流量计_智能防腐防爆管道式计量表-金湖凯铭仪表有限公司 | 400电话_400电话申请_866元/年_【400电话官方业务办理】-俏号网 3dmax渲染-效果图渲染-影视动画渲染-北京快渲科技有限公司 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛婚外情取证-青岛王军侦探事务所 | 运动木地板厂家_体育木地板安装_篮球木地板选购_实木运动地板价格 | LED投光灯-工矿灯-led路灯头-工业灯具 - 山东普瑞斯照明科技有限公司 | 胀套-锁紧盘-风电锁紧盘-蛇形联轴器「厂家」-瑞安市宝德隆机械配件有限公司 | 奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌 | 首页 - 军军小站|张军博客| 广东风淋室_广东风淋室厂家_广东风淋室价格_广州开源_传递窗_FFU-广州开源净化科技有限公司 | 交通信号灯生产厂家_红绿灯厂家_电子警察监控杆_标志杆厂家-沃霖电子科技 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 车充外壳,车载充电器外壳,车载点烟器外壳,点烟器连接头,旅行充充电器外壳,手机充电器外壳,深圳市华科达塑胶五金有限公司 | 玻璃钢板-玻璃钢防腐瓦-玻璃钢材料-广东壹诺 | 包塑丝_高铁绑丝_地暖绑丝_涂塑丝_塑料皮铁丝_河北创筹金属丝网制品有限公司 | 亚克隆,RNAi干扰检测,miRNA定量检测-上海基屹生物科技有限公司 | 淘趣英语网 - 在线英语学习,零基础英语学习网站 | 电竞馆加盟,沈阳网吧加盟费用选择嘉棋电竞_售后服务一体化 | 无锡装修装潢公司,口碑好的装饰装修公司-无锡索美装饰设计工程有限公司 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 行业分析:提及郑州火车站附近真有 特殊按摩 ?2025实地踩坑指南 新手如何避坑不踩雷 | 电机修理_二手电机专家-河北豫通机电设备有限公司(原石家庄冀华高压电机维修中心) | 【孔氏陶粒】建筑回填陶粒-南京/合肥/武汉/郑州/重庆/成都/杭州陶粒厂家 | 大巴租车平台承接包车,通勤班车,巴士租赁业务 - 鸿鸣巴士 | 微型气象仪_气象传感器_防爆气象传感器-天合传感器大全 | 苏州西朗门业-欧盟CE|莱茵UL双认证的快速卷帘门品牌厂家 | 空冷器|空气冷却器|空水冷却器-无锡赛迪森机械有限公司[官网] | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 |