From: qydysky Date: Tue, 10 Sep 2024 23:17:00 +0000 (+0800) Subject: Add 配置项 直播流仅清晰度 X-Git-Tag: v0.14.18~2 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=a6b78e768bf68eb00c2349ee61b41affd4ab6941;p=bili_danmu%2F.git Add 配置项 直播流仅清晰度 --- diff --git a/Reply/stream.go b/Reply/stream.go index 18633b6..770a4fb 100644 --- a/Reply/stream.go +++ b/Reply/stream.go @@ -278,12 +278,23 @@ func (t *M4SStream) getFirstBuf() []byte { } func (t *M4SStream) fetchCheckStream() bool { + _log := t.log.BaseAdd("获取流") // 获取流地址 t.common.Live_want_qn = t.config.want_qn if F.Get(t.common).Get(`Live`); len(t.common.Live) == 0 { return false } + // 直播流仅清晰度 + if v, ok := t.common.K_v.LoadV("直播流仅清晰度").(bool); ok && v { + if _, ok := t.common.Qn[t.config.want_qn]; ok { + if t.config.want_qn != t.common.Live_qn { + _log.L(`W: `, `仅清晰度true,当前清晰度`, t.common.Qn[t.common.Live_qn]) + return false + } + } + } + // 保存流类型 if strings.Contains(t.common.Live[0].Url, `m3u8`) { t.stream_type = "mp4" @@ -309,7 +320,7 @@ func (t *M4SStream) fetchCheckStream() bool { ) if v, ok := t.common.K_v.LoadV("直播流不使用mcdn").(bool); ok && v { if reg, err := regexp.Compile(`\.mcdn\.`); err != nil { - t.log.L(`W: `, `停用流服务器`, `正则错误`, err) + _log.L(`W: `, `停用流服务器`, `正则错误`, err) } else { noSer = append(noSer, reg) } @@ -318,7 +329,7 @@ func (t *M4SStream) fetchCheckStream() bool { for i := 0; i < len(v); i++ { if s, ok := v[i].(string); ok { if reg, err := regexp.Compile(s); err != nil { - t.log.L(`W: `, `停用流服务器`, `正则错误`, err) + _log.L(`W: `, `停用流服务器`, `正则错误`, err) } else { noSer = append(noSer, reg) } @@ -332,7 +343,7 @@ func (t *M4SStream) fetchCheckStream() bool { for _, v := range t.common.Live { if noSerF(v.Url) { v.Disable(time.Now().Add(time.Hour * 100)) - t.log.L(`I: `, `停用流服务器`, F.ParseHost(v.Url)) + _log.L(`I: `, `停用流服务器`, F.ParseHost(v.Url)) continue } @@ -355,23 +366,23 @@ func (t *M4SStream) fetchCheckStream() bool { Timeout: 5 * 1000, JustResponseCode: true, }); e != nil { - t.log.L(`W: `, F.ParseHost(v.Url), e) + _log.L(`W: `, F.ParseHost(v.Url), e) v.DisableAuto() continue } if r.Response == nil { - t.log.L(`W: `, `live响应错误`, F.ParseHost(v.Url)) + _log.L(`W: `, `live响应错误`, F.ParseHost(v.Url)) v.DisableAuto() continue } else if r.Response.StatusCode&200 != 200 { - t.log.L(`W: `, `live响应错误`, F.ParseHost(v.Url), r.Response.Status) + _log.L(`W: `, `live响应错误`, F.ParseHost(v.Url), r.Response.Status) v.DisableAuto() continue } // 显示使用流服务器 - t.log.L(`I: `, `使用流服务器`, F.ParseHost(v.Url)) + _log.L(`I: `, `使用流服务器`, F.ParseHost(v.Url)) } return t.common.ValidLive() != nil diff --git a/demo/config/config_K_v.json b/demo/config/config_K_v.json index 8e0d1b7..dc522c4 100644 --- a/demo/config/config_K_v.json +++ b/demo/config/config_K_v.json @@ -67,7 +67,9 @@ "统计营收": true, "Gtk弹幕窗": false, "直播流清晰度-help": "清晰度可选-1:不保存 0:默认 20000:4K 10000:原画 400:蓝光 250:超清 150:高清 80:流畅,无提供所选清晰度时,使用低一档清晰度", - "直播流清晰度": 10000, + "直播流清晰度": 0, + "直播流仅清晰度-help": "为true时,且清晰度在大于0的可选值内时,限制仅录制指定清晰度,避免清晰度不可用时自动降低清晰度。当清晰度不符时,将等候5s重试。默认为false", + "直播流仅清晰度": false, "直播流类型-help": "flv,fmp4,flvH,fmp4H,带H后缀的为Hevc格式编码", "直播流类型": "fmp4", "直播流不使用mcdn": false,