python获取rtsp流,python rtmp拉流
斗鱼直播间比赛背景照片截图
最近看英雄联盟比赛的时候,考虑了取直播的实际rtmp播放地址的方法,放“potplayer Player”之类的东西或者自己写APP来玩,就有了这篇文章的内容。
1.工具类下载
搜索关键词:“在斗鱼直播工作室获取真实rtmp地址”下载工具
下载的是可执行的exe文件。
双击鼠标运行,然后输入房间号如下图:房间号一般是1-7个字母数字字符,浏览器地址栏显示的房间号不一定是实际的rid。
注:以下内容是python实现的具体方法。如果只需要一个可用的工具,就到此为止。以后不需要看了。
2 )2:python获取斗鱼直播工作室的真实rtmp地址。
上一篇文章介绍了《最经典的Python爬虫(图片)案例》,我们从各个网站得到了很多图片。其实如果后期想做一个视频,用python做也是很有可能的。
但为了快速实现,不做双轮,我上网查了一下,找到了哔哩哔哩的视频教育文章。如下
说明:运行该模块时,必须保证python有以下模块(request,bs4,BeautifulSoup,re-regular,json,execjs,time)):可以用pip install升级安装。我的是一台新电脑,所以现在我安装的pip的最新版本是
最后输入:python。\py1.py,执行程序的结果如下。
可以看出,虽然获得了宇都的分类信息,但是没有获得rtmp地址。我看了视频的上映日期。2020-05-06 22:11:10。可能是因为时间过去了,斗鱼升级了,也给了我思路。那只能靠自己体会了。让我们简单地实现:
其实代码很少,但重点是这样的:
首先打开斗鱼官网,F12进入调试模式,
通过抓包,可以发现请求接口等重要数据。
通过这个接口可以看到xTraceWhiteList的响应。恐怕按照意思,好像是接口白名单。
这就是为什么我们需要一个网址。http://TX2PLAY 1怎么样?douyucdn.cn/live/{}.FLV?这个链接的网址与哔哩哔哩视频中的网址相同。
完整的参数
{error:0, msg :操作成功, data :{ JSON error : 1 , httperrorresponsefilter : component performance : 1 ,SocketError 3360 EpicerError : 1 , httpThreshold:5000 , Report Length Palette: 1 , JSErrorStackFilter : sc . 58 Tian.cn,img src= alt= socketperformation : 0 , probability:0.003 , epicperformon 3360 dbg :
最后,完成源代码DouYu.py参考:
#获取斗鱼直播工作室真实流媒体地址,默认最高画质。
导入请求
进口re
导入js
导入时间
导入hashlib
宇都等级:
def __init__(self,ri)
d):
#房间号一般是1~7位数,浏览器地址栏看到的房间号不一定是真实的rid。
self . did= 1000000000000000000000000001501
self.t10=str(int(time.time()))
self . t13=str(int((time . time()* 1000)))
self.s=请求。会话()
self . RES=self . s . get( https://m . dou Yu . com/ str(rid))。文本
result=re.search(rrid:(\d{1,7}), vipId ,self.res)
如果结果:
self.rid=result.group(1)
否则:
打印(“错误的房间号”)
@静态方法
def md5(数据):
返回hashlib.md5(data.encode(utf-8 ))。hexdigest()
def get_pre(self):
URL= https://play web . douyu cdn . cn/lapi/live/HLS H5 preview/ self . rid
数据={
rid: self.rid
did :自我did
}
auth=douyu . MD5(self . rid self . t13)
标题={
rid: self.rid
time: self.t13,
验证:验证
}
res=self.s.post(url,headers=headers,data=data)。json()
error=res[error]
data=res[data]
key=
如果数据:
rtmp_live=data[rtmp_live]
key=re.search(r(\d{1,7}[0-9a-zA-Z] )_?\d{0,4}(/playlist.m3u8),rtmp_live)。组(1)
返回错误,键
def get_js(self):
result=re.search(r (函数ub98484234。*)\s(var。*),self.res)。群组()
func _ ub9=re sub(r eval。*;} , strc} ,结果)
js=execjs.compile(func_ub9)
res=js.call(ub98484234 )
v=re.search(rv=(\d),res)。组(1)
Rb=douyu . MD5(self . rid self . did self . t10v)
func _ sign=re sub(r return rt;}\);返回rt;} ,res)
func_sign=func_sign.replace((函数(,函数符号()
func _ sign=func _ sign . replace( CryptoJS。MD5(cb)。toString(), rb )
js=execjs.compile(func_sign)
params=js.call(sign ,self.rid,self.did,self.t10)
params= ver=219032101 rid={ } rate=-1 。格式(自我标识)
URL= https://m . dou Yu . com/API/room/ratestream
res=self.s.post(url,params=params)。文本
key=re.search(r(\d{1,7}[0-9a-zA-Z] )_?\d{0,4}(.m3u8/playlist),res)。组(1)
回车键
def get_real_url(self):
错误,key=self.get_pre()
如果误差==0:
及格
elif误差==102:
打印(“房间不存在”)
elif误差==104:
打印(“房间不在广播中”)
否则:
key=self.get_js()
return http://tx 2 play 1 . douyu cdn . cn/live/{ } . flv?uuid=。格式(键)
if __name__==__main__ :
R=输入([ Zhihu Bgwan提示]请输入斗鱼直播工作室号:\n )
s=宇都
print(s.get_real_url()
您可以通过修改并在稍后再次运行来成功获取live studio的地址。
然后就可以用播放器(pc,android,ios)打开了。稍后我会在安卓专栏单独更新安卓直播解决方案,会和这个内容有关,敬请关注。
注意:未来斗鱼升级也可能导致此代码不可用。(本文发表于2020年9月5日。)这个请你知道。如何在各种界面和控制台中找到一些关键点,也需要一定的技术积累。具体可以自己参考百度,或者系统学习python相关知识。本文仅供参考。
以上内容是斗鱼直播工作室真实rtmp地址获取(包括工具下载)的全部内容。
请尊重你的劳动成果,关注这篇文章。作者:sunst发布时间:2020-09-05 21:11修改时间:2020-09-08 15:19
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。