]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
Add 配置项 直播流仅清晰度
authorqydysky <qydysky@foxmail.com>
Tue, 10 Sep 2024 23:17:00 +0000 (07:17 +0800)
committerqydysky <qydysky@foxmail.com>
Tue, 10 Sep 2024 23:17:00 +0000 (07:17 +0800)
Reply/stream.go
demo/config/config_K_v.json

index 18633b69a581632928529e0691630818d72cade5..770a4fb228998ab82a32ddae3fe9fbe50c5909af 100644 (file)
@@ -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
index 8e0d1b7a009e61e07577aec9cabefa72d46dd8d6..dc522c4173e3f740fa8f0dcfcda53b221de5f19f 100644 (file)
@@ -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,