解决,vlc播放虎牙url只有画面没声音的问题。

vlc播放虎牙url参考之前的文章。

最近发现VLC会出现没有声音的问题,推荐使用iina亲测有效。
具体设置方法如下:iina设置说明

今天在用vlc看虎牙直播时,发现只有画面没有声音,我尝试播放了斗鱼的url是正常的,我怀疑是虎牙那边的问题。

在比较新旧的html文件后,暂时没有发现改动。

几经尝试我发现把.flv格式改为.m3u8格式就有声音了。但是声音有时候也会出现卡顿的情况。博主最近都是考试,等过段时间再研究解决。
下面附上代码.m3u8
只改动了一小部分,改动部分用

####################只改动了这个地方###########################

标注。

大家也可以参考我的github:github地址

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['sHlsUrl']
        # print(sFlvUrl)
        # print(type(sFlvUrl))
        sStreamName = gameStreamInfoList_json['sStreamName']
        sFlvUrlSuffix = gameStreamInfoList_json['sHlsUrlSuffix']
        sFlvAntiCode = gameStreamInfoList_json['sHlsAntiCode']

        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")






评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值