当前位置:首页 > 世界杯资讯 > 正文内容

给大家科普一下光辉娱乐下471187作(2022已更新(今日/知乎)

杏彩体育2年前 (2022-12-31)世界杯资讯55

背景图片斗鱼直播间比赛截图

最近在看英雄联盟比赛的时候,就在思考如何取直播的真实rtmp播放地址,放到类似于(potplayer播放器)中,或者自己也可以写一个app来玩一下,所以便有了本篇的内容。

1:工具类下载

搜索关键字:"斗鱼直播间真实rtmp地址获取"下载工具

链接: https://pan.baidu.com/s/1lU3PVi3YRiYioFECy7bvog 提取码: snbz

下载下来是一个可执行的exe文件

鼠标双击即可运行,然后输入房间号(房间号通常为1~7位纯数字,浏览器地址栏中看到的房间号不一定是真实rid),如。

可以看到直播间地址为:http://tx2play1.douyucdn.cn/live/3857053rcp0Jiusv.flv?uuid=

说明:

后面内容的是python实现的具体方法,如果是仅需要一个可用工具的,那么到这里就结束了,后面不必再阅读

2:python获取斗鱼直播间真实rtmp地址

之前一篇文章介绍过《最经典的Python爬虫(图片)案例》,我们从各大网站爬取了大量的图片,其实后来一想爬取视频其实用python是很容实现的

但为了快速实现,避免重复造轮子,我在网上查了一下,找到bilibili的视频教学文章:如下

【python爬虫】斗鱼直播间真实地址rtmp爬取 代码下载链接: https://pan.baidu.com/s/1Wmc5OSqGHnCw9u75FkGdrA

提取码: yj44

说明:在运行该模块的时候需要保证python有以下模块( requests,bs4 ,BeautifulSoup,re正则,json, execjs,time),你可以使用pip install 升级安装,因为我的是新电脑,当前我安装的pip最新版本为:

最后在终端下输入:python .\py1.py,运行程序结果如下:

可以看到成功获取到了斗鱼直播的分类信息,但是却拿不到rtmp地址,我看了一下视频的发布日期: 2020-05-06 22:11:10,时间不久,可能是斗鱼升级了的原因导致,但也给了我思路,那只能自己来实现了,下面简单说一下实现:

其实代码很少,关键点就这些:

1.url = https://playweb.douyucdn.cn/lapi/live/hlsH5Preview/

+ self.rid

2.url = https://m.douyu.com/api/room/ratestream3.return "http://tx2play1.douyucdn.cn/live/{}.flv?uuid=".format(key)

首先打开斗鱼官网,F12进入到调试模式,

通过抓包我们能找到一些数据,如关键请求接口

通过这个接口我们可以查看到 xTraceWhiteList的一个Response,大概根据意思,好像是接口白名单,

如图中黑色标记出来,那么它的值就是: http://m.douyu.com/api/room/ratestream

而这个正是我们需要url请求的,至于http://tx2play1.douyucdn.cn/live/{}.flv?这个拼接的url就和bilibili那个视频里面是一样的

完整的参数

{"error":0,"msg":"操作成功","data":{"jsonpErrorOn":"1","httpErrorResponseFilter":"请先登录,您已关注了这个直播间","fpsPerformOn":"0","serviceErrorOn":"1","jsonpPerfomOn":"1","componentPerformOn":"1","socketErrorOn":"0","servicePerformOn":"1","performOn":"1","epicErrorOn":"1","httpThreshold":"5000","threshold.abnormal":"120000","reportLength":"10","fmpOn":"0","httpErrorOn":"1","componentErrorOn":"1","jsErrorStackFilter":"sc.58mingtian.cn,<img src="" alt="斗鱼直播">,chrome-extension,$","httpPerformOn":"1","cookiePre":"acf_","socketPerformOn":"0","probability":"0.003","epicPerformOn":"1","resourceErrorOn":"1","perform":"1","dbg":"false","schemasErrorOn":"1","url":"https://mapm.douyucdn.cn/wapm/collect","pagePerformOn":"1","jsErrorOn":"1","threshold.slowPage":"2000","xTraceWhiteList":"/japi/task,/japi/carnival,m.douyu.com/api/room/ratestream,lapi/athena/,/wgapi/livenc/liveweb/","threshold.slowAjax":"500","reportTime":"5","client_code":"web"},"redirectUrl":null}

最后是完成源码DouYu.py参考:

# 获取斗鱼直播间的真实流媒体地址,默认最高画质。 import requests import re import execjs import time import hashlib class DouYu: def __init__(self, rid): # 房间号通常为1~7位纯数字,浏览器地址栏中看到的房间号不一定是真实rid. self.did = 10000000000000000000000000001501 self.t10 = str(int(time.time())) self.t13 = str(int((time.time() * 1000))) self.s = requests.Session() self.res = self.s.get(https://m.douyu.com/ + str(rid)).text result = re.search(rrid":(\d{1,7}),"vipId, self.res) if result: self.rid = result.group(1) else: print(房间号错误) @staticmethod def md5(data): return hashlib.md5(data.encode(utf-8)).hexdigest() def get_pre(self): url = https://playweb.douyucdn.cn/lapi/live/hlsH5Preview/ + self.rid data = { rid: self.rid, did: self.did } auth = DouYu.md5(self.rid + self.t13) headers = { rid: self.rid, time: self.t13, auth: auth } res = self.s.post(url, headers=headers, data=data).json() error = res[error] data = res[data] key = if data: rtmp_live = data[rtmp_live] key = re.search(r(\d{1,7}[0-9a-zA-Z]+)_?\d{0,4}(/playlist|.m3u8), rtmp_live).group(1) return error, key def get_js(self): result = re.search(r(function ub98484234.*)\s(var.*), self.res).group() func_ub9 = re.sub(reval.*;}, strc;}, result) js = execjs.compile(func_ub9) res = js.call(ub98484234) v = re.search(rv=(\d+), res).group(1) rb = DouYu.md5(self.rid + self.did + self.t10 + v) func_sign = re.sub(rreturn rt;}\);?, return rt;}, res) func_sign = func_sign.replace((function (, function sign() 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.format(self.rid) url = https://m.douyu.com/api/room/ratestream res = self.s.post(url, params=params).text key = re.search(r(\d{1,7}[0-9a-zA-Z]+)_?\d{0,4}(.m3u8|/playlist), res).group(1) return key def get_real_url(self): error, key = self.get_pre() if error == 0: pass elif error == 102: print(房间不存在) elif error == 104: print(房间未开播) else: key = self.get_js() return "http://tx2play1.douyucdn.cn/live/{}.flv?uuid=".format(key) if __name__ == __main__: r = input([知乎Bgwan提示]请输入斗鱼直播间号:\n) s = DouYu(r) print(s.get_real_url())

修改以后再次运行可以成功拿到直播间地址

然后就可以用播放器(电脑的pc,android,ios)打开,后面我会单独在Android专栏中更新android直播的解决方案,会关联到本篇内容,敬请期待

说明:未来斗鱼升级可能会同样导致本代码不可用,(本文发布日期为:2020-09-05)这点请知;关于如何在各个接口和控制台中寻找一些关键的点,也需要一定的技术积累,具体可以自行百度参考,或者系统的学习python相关知识,本篇内容仅共学习参考.

以上内容便是,斗鱼直播间真实rtmp地址获取(含工具类下载)全部内容

请尊重劳动成果,注意文中版权声明人工智能专栏不定时更新,欢迎点击关注我知乎。也可以同时关注Android专栏文艺语录专栏,本内容作者sunst,技术上有问题请沟通qyddai@gmail.com

作者:sunst 发布日期:2020-09-05 21:11 修改日期:2020-09-08 15:19

扫描二维码推送至手机访问。

版权声明:本文由财神资讯-领先的体育资讯互动媒体转载发布,如需删除请联系。

本文链接:http://www.tengj.cn/?id=21795

“给大家科普一下光辉娱乐下471187作(2022已更新(今日/知乎)” 的相关文章

给大家科普一下买球运营体育赌场(2022已更新(今日/知乎)

央视新闻 近日, 2022亚瑟士青少年网球巡回赛广州站, 一个背背篓的网球少年受到关注, 经过激烈比赛, 最终夺得了U14组男单冠军。 △在赛场上背背篓的王发。(赛事举办方供图) 背篓少年成黑马 捧起冠军奖杯 少年...

给大家科普一下对赌协议是什么意思(2022已更新(今日/知乎)

给大家科普一下对赌协议是什么意思(2022已更新(今日/知乎)

美国东岸街头大佬 KITH 对于篮球文化的钟情,大家有目共睹 运动服饰一直是潮流文化里为各位不断涌现搭配灵感的缪斯,但似乎有一个运动类别一直在时尚领域起着高瞻远瞩的领头作用,却屡屡被大众所忽视……精明的你,肯定猜到我说的就是今天的主角,网球。 被后世誉为...

给大家科普一下主角靠赌博起家的小说(2022已更新(今日/知乎)

给大家科普一下主角靠赌博起家的小说(2022已更新(今日/知乎)

2022年的男子网球赛季已经全部结束,纳达尔和德约科维奇堪称本年度的最大赢家,两人合力砍下了3座大满贯,1座大师赛和1座年终总决赛冠军,不过两人的境遇却截然不同,纳达尔在上半年风光无限,而德约在下半年疯狂追赶。 对此,著名网球专栏作家克里斯·奥多道出了自己的看法...

给大家科普一下足球世界杯知乎(2022已更新(今日/知乎)

给大家科普一下足球世界杯知乎(2022已更新(今日/知乎)

#2022世界杯# 看了昨天的比赛,多少有点激情了。 澳大利亚取得首胜 波兰取胜,莱万进球 法国绝杀,姆巴佩梅开二度 阿根廷,嗯,这场没看,就已经在码字了 日本VS哥斯达黎加 日本队首轮比赛逆转德国,虽然75分钟之前都处于落...

给大家科普一下抖音世界杯哪里买输赢票(2022已更新(今日/知乎)

给大家科普一下抖音世界杯哪里买输赢票(2022已更新(今日/知乎)

  财联社11月23日讯(编辑 马兰)昨日世界杯小组赛阿根廷对战沙特阿拉伯,踢出世纪大冷门,沙特以2:1战胜冠军大热门阿根廷,刷屏海内外网络。中国网友甚至称呼沙特为“亚洲之光”。   昨日,沙特赔率也一路飙上微博热搜。赛前沙特赢球的赔率高达23,阿根廷赢球赔率则低至1.1...

给大家科普一下手机世界杯哪里买彩票(2022已更新(今日/知乎)

给大家科普一下手机世界杯哪里买彩票(2022已更新(今日/知乎)

  又一次大败而归,中国男足面对韩国队,再一次让全国球迷感到失望。当然,失望这个词用在中国足球身上,其实并不是一次两次,失望多了,或许就变成了绝望。是的,正如有知名媒体人说的那样,看了这场比赛,如今连愤怒的心都没有了。因为,对中国足球的心或许已经死了,现在还关注着中国足球的比赛,实际上就是...