python获取rtsp流,python rtmp拉流

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: