最近发现VLC会出现没有声音的问题,推荐使用iina亲测有效。 具体设置方法如下:[iina设置说明](https://jingyan.baidu.com/article/cb5d6105ad9445005d2fe059.html)
这里利用了VLC及相似的软件可以播放网络视频的功能,下面以VLC为例。
- 首先我们需要下载VLC或者其他可以播放在线视频的软件
- 安装完成后
File->Open NetWork 输入虎牙直播间的url 打开即可
- 那么如何获得特定直播间的url
通过Firefox或者Chrome等浏览器查看直播间的源码
url = sFlvUrl + ‘/’ + sStreamName + ‘.’ + sFlvUrlSuffix + ‘?’ + sFlvAntiCode 这四部分的内容可以在源码中通过command+f搜索得到。将这个url输入到VLC就可以看到喜爱的直播了。
下面是效果图
- 如何快速获取这个url呢,在这里我提供了一个python脚本。
import requests
import json
import os
def loadRecommend():
# 判断文件是否存在不存在则创建
if os.path.isfile("recommend.txt"):
# 如果存在
# 加载推荐列表
str1 = "猜你想看\n"
with open("recommend.txt", 'r') as f:
str1 += f.read()
return str1
else :
# 如果不存在
print("欢迎使用,系统已帮您创建推荐文件!\n")
with open("recommend.txt", "a") as f:
print("已创建recommend.txt")
return ""
def getHTML(url):
# 获取网站源码
try:
r = requests.get(url,timeout=30)
r.raise_for_status()
r.encoding = 'utf-8'
return r.text
except:
return ""
def getVLCURL(html):
# 根据源码,获取URL
vlcURL = ''
# 获取stream
streamBeg = html.find("\"stream\":")
streamEnd = html.find("};", streamBeg)
stream = html[streamBeg + 10 : streamEnd - 8]
try:
stream_json = json.loads(stream)
# data是个列表
data = stream_json['data']
data_json = data[0]
gameStreamInfoList = data_json['gameStreamInfoList']
# gameStreamInfoList同样是个列表
# 需要sFlvUrl sStreamName sFlvUrlSuffix sFlvAntiCode
gameStreamInfoList_json = gameStreamInfoList[0]
sFlvUrl = gameStreamInfoList_json['sFlvUrl']
# print(sFlvUrl)
# print(type(sFlvUrl))
sStreamName = gameStreamInfoList_json['sStreamName']
sFlvUrlSuffix = gameStreamInfoList_json['sFlvUrlSuffix']
sFlvAntiCode = gameStreamInfoList_json['sFlvAntiCode']
sFlvAntiCode = sFlvAntiCode.replace('amp;','')
vlcURL = sFlvUrl + '/' + sStreamName + '.' + sFlvUrlSuffix + '?' + sFlvAntiCode
# 将字符串中的下划线替换为空格
vlcURL = vlcURL.replace('_', ' ')
except json.decoder.JSONDecodeError:
print("房间号错误!!")
except TypeError:
print("房间未开播!!")
# BL 蓝光
# HD 高清
# Fluency 流畅
# &ratio=2500 &ratio=500
BL_vlcURL = vlcURL
HD_vlcURL = vlcURL + "&ratio=2500"
F_vlcURL = vlcURL + "&ratio=500"
URLList = [BL_vlcURL, HD_vlcURL, F_vlcURL]
# 依次返回蓝光,高清,流畅
return URLList
def updateRecommend(html, roomID):
# 获取直播关键字
keyWordsBeg = html.find("<meta name=\"Keywords\" content=")
keyWordsEnd = html.find("\"/>", keyWordsBeg)
keyWords = html[keyWordsBeg + 31 : keyWordsEnd]
# print(keyWords)
# 判断是否有重复,重复则不再在写入
str1 = loadRecommend()
if str1.find(roomID) != -1:
print("推荐列表已更新")
else:
with open("recommend.txt", "a") as f:
content = "ID:" + roomID + "——————" + keyWords + "\n"
f.write(content)
print("推荐列表已更新")
if __name__ == "__main__":
# 加载推荐房间
recommend = loadRecommend()
print(recommend)
url = "https://www.huya.com/"
roomID = input("请输入房间名称: ")
url += roomID
# 获取网页源码
html = getHTML(url)
# 获取播放链接
URLList = getVLCURL(html)
# 更新推荐列表
updateRecommend(html, roomID)
# 打印播放链接
print("蓝光画质:" + URLList[0])
print("\n")
print("高清画质:" + URLList[1])
print("\n")
print("流畅画质:" + URLList[2])
print("\n")
通过在控制台输入房间地址栏中对应的地址如20119169,程序就会在控制台打印可供VLC使用的url,直接复制粘贴就好了。
5. 下面贴出我的github地址,可以在这里找到脚本的最新更新。
文章写于2020-4-5
github仓库地址