网上的TS流视频文件下载,解密,合成一个文件的python方法(转的别人大佬的,自己存一份~~)

 1 # -*- coding:utf-8 -*-
 2 import os
 3 import sys
 4 import requests
 5 import datetime
 6 from Crypto.Cipher import AES
 7 from binascii import b2a_hex, a2b_hex
 8
 9 # reload(sys)
10 # sys.setdefaultencoding(‘utf-8‘)
11
12 import importlib
13 importlib.reload(sys)
14
15 def download(url):
16   download_path = os.getcwd() + "\download"
17   if not os.path.exists(download_path):
18     os.mkdir(download_path)
19
20   #新建日期文件夹
21   download_path = os.path.join(download_path, datetime.datetime.now().strftime(‘%Y%m%d_%H%M%S‘))
22   #print download_path
23   os.mkdir(download_path)
24
25   all_content = requests.get(url).text # 获取第一层M3U8文件内容
26   if "#EXTM3U" not in all_content:
27     raise BaseException("非M3U8的链接")
28
29   if "EXT-X-STREAM-INF" in all_content: # 第一层
30     file_line = all_content.split("\n")
31     for line in file_line:
32       if ‘.m3u8‘ in line:
33         url = url.rsplit("/", 1)[0] + "/" + line # 拼出第二层m3u8的URL
34         all_content = requests.get(url).text
35
36   file_line = all_content.split("\n")
37
38   unknow = True
39   key = ""
40   for index, line in enumerate(file_line): # 第二层
41     if "#EXT-X-KEY" in line: # 找解密Key
42       method_pos = line.find("METHOD")
43       comma_pos = line.find(",")
44       method = line[method_pos:comma_pos].split(‘=‘)[1]
45       print("Decode Method:", method)
46
47       uri_pos = line.find("URI")
48       quotation_mark_pos = line.rfind(‘"‘)
49       key_path = line[uri_pos:quotation_mark_pos].split(‘"‘)[1]
50
51       key_url = url.rsplit("/", 1)[0] + "/" + key_path # 拼出key解密密钥URL
52       res = requests.get(key_url)
53       key = res.content
54       print( "key:" , key)
55
56     if "EXTINF" in line: # 找ts地址并下载
57       unknow = False
58       pd_url = url.rsplit("/", 1)[0] + "/" + file_line[index + 1] # 拼出ts片段的URL
59       #print pd_url
60
61       res = requests.get(pd_url)
62       c_fule_name = file_line[index + 1].rsplit("/", 1)[-1]
63
64       if len(key): # AES 解密
65         cryptor = AES.new(key, AES.MODE_CBC, key)
66         with open(os.path.join(download_path, c_fule_name + ".mp4"), ‘ab‘) as f:
67           f.write(cryptor.decrypt(res.content))
68       else:
69         with open(os.path.join(download_path, c_fule_name), ‘ab‘) as f:
70           f.write(res.content)
71           f.flush()
72   if unknow:
73     raise BaseException("未找到对应的下载链接")
74   else:
75     print( "下载完成")
76   # merge_file(download_path)
77
78 def merge_file(path):
79   os.chdir(path)
80   cmd = "copy /b * new.tmp"
81   os.system(cmd)
82   os.system(‘del /Q *.ts‘)
83   os.system(‘del /Q *.mp4‘)
84   os.rename("new.tmp", "new.mp4")
85
86 if __name__ == ‘__main__‘:
87   url = input("please input the url of index.m3u8 file")
88   download(url)

原文地址:https://www.cnblogs.com/gsp1004/p/11337433.html

时间: 2024-10-22 21:11:29

网上的TS流视频文件下载,解密,合成一个文件的python方法(转的别人大佬的,自己存一份~~)的相关文章

gcc 将两个文件合成一个文件(c)

一个文件是: 一个文件是: 两个文件的作用是输出一段文字,其中一个文件调用了另一个文件 gcc 命令为: -c 生成了object 文件,-o 生成了可执行文件,并且合成. 原文地址:https://www.cnblogs.com/zijidefengge/p/12244487.html

html文件中flash视频格式(flv、swf)文件的嵌入方法

flash文件的格式:.FLV 和 .SWF flash视频格式有两种扩展名可以使用:.flv和.swf.他们有什么不同呢? (1)一个.flv文件(flash视频)是基于图片的视频流和音频.如果你在运行一个流服务,flv将是一个好的选择.上游条件是,这个文件的任何部分可以被客户终端访问,并且任何时间不会等待下载.话又说回来了,运行一个流服务待价昂贵. (2).swf也是Macromedia Flash文件格式,是一个完整的视频-音频文件,并具有脚本和其它更多的.这将有利于HTTP(渐进式)下载

网络视频m3u8解密及ts文件合并

网络视频m3u8解密及ts文件合并 参考了两篇博客: https://blog.csdn.net/weixin_41624645/article/details/95939510 https://blog.csdn.net/u014484783/article/details/79350392 再加上了自己的办法写的更详细了一点: 直接用ffmpeg下载是排队逐个下载,嫌慢就写了个脚本多线程下载能快一些,,然后用ffmpeg合并ts文件. 进入chrome开发者模式,然后Network选项卡,如

TS流文件

简介编辑 随着从HDTV录制的高清节目在网上的流传,烧友们对TS这个名词大概已经不陌生了,但随之而来就是如何播放.如何添加字幕等等的一系列问题,本文将重点介绍一下这方面的应用操作. 先来简要介绍一下什么是MPEG2-TS吧.MPEG2格式大家都通过对DVD的接触而多少了解了一些,DVD节目中的MPEG2格式,确切地说是MPEG2-PS,简单地打个比喻说,你将DVD上的VOB文件的前面一截cut掉(或者干脆就是数据损坏),那么就会导致整个文件无法解码了. 2概述编辑 DVD节目中的MPEG2格式,

(原)关于MEPG-2中的TS流数据格式学习

关于MEPG-2中的TS流数据格式学习 Author:lihaiping1603 原创:http://www.cnblogs.com/lihaiping/p/8572997.html 本文主要记录了,结合网上两篇博客 1) https://www.maizhiying.me/posts/2017/07/12/demux-ts.html 2) https://my.oschina.net/u/727148/blog/666824 ,mepg-2(13818)文档以及使用ffmpeg将mp4文件转码

TS流

声明:大部分内容转自https://blog.csdn.net/dxpqxb/article/details/79654004 一 从TS流开始 数字电视机顶盒接收到的是一段段的码流,我们称之为TS(Transport Stream,传输流),每个TS流都携带一些信息,如Video.Audio以及我们需要学习的PAT.PMT等信息.因此,我们首先需要了解TS流是什么,以及TS流是怎样形成.有着怎样的结构. (一) TS流.PS流.PES流和ES流都是什么? ES流    (Elementary

ASI和TS流有什么区别

TS流是信源码流,最高码率为44.209 Mbit/s,它是经过信源编码后的压缩码流,为了使欲传输的信源信息在传输速率一定的条件下更快更多地传输,还要把数据进行压缩,也就是通过信源编码去掉信息中多余的部分,从而提高通信的有效性,信源编码包括霍夫曼编码.LZ编码等多种..TS 流为MPEG一2传送流,MPEG一2是运动图像专家组(Moving Pictures ExpertGroup)制定的主要用于传输声音.图像数据压缩的标准.MPEG中的关键压缩技术虽然也是DCT.霍夫曼编码等,但是它在图像压缩

TS流解析 四

一 从TS流开始 数字电视机顶盒接收到的是一段段的码流,我们称之为TS(Transport Stream,传输流),每个TS流都携带一些信息,如Video.Audio以及我们需要学习的PAT.PMT等信息.因此,我们首先需要了解TS流是什么,以及TS流是怎样形成.有着怎样的结构. (一) TS流.PS流.PES流和ES流都是什么? ES流(Elementary Stream):基本码流,不分段的音频.视频或其他信息的连续码流. PES流:把基本流ES分割成段,并加上相应头文件打包成形的打包基本码

[视频播放] HLS协议之M3U8、TS流详解

本文转载自:<hls之m3u8.ts流格式详解> HLS,Http Live Streaming 是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件. 1.M3U8文件 用文本方式对媒体文件进行描述,由一系列标签组成. #EXTM3U #EXT-X-TARGETDURATION:5 #EXTINF:5, ./0.ts #EXTINF:5, ./1.ts #EXTM3U:每个M3U8文件第一行必须是这个tag. #