]> 127.0.0.1 Git - bili_danmu/.git/commitdiff
19
authorqydysky <qydysky@foxmail.com>
Tue, 22 Sep 2020 06:40:52 +0000 (14:40 +0800)
committerqydysky <qydysky@foxmail.com>
Tue, 22 Sep 2020 06:40:52 +0000 (14:40 +0800)
Reply/F.go
bili_danmu.go
demo/go.mod
demo/go.sum

index 8e88ec8f6e1abf7b21eafdb6d68983ed41286695..a8a8c0de33e2543e46b356c90f13262a96d44ab0 100644 (file)
@@ -91,6 +91,8 @@ func selfcross2(a []string) (float32, string) {
 type Saveflv struct {
        Inuse bool
        path string
+       wait chan bool
+       cancel chan interface{}
 }
 
 var saveflv = Saveflv {
@@ -100,6 +102,7 @@ var saveflv = Saveflv {
 func Saveflvf(){
        if !saveflv.Inuse || saveflv.path != "" {return}
        l := p.Logf().New().Open("danmu.log").Base(1, "saveflv")
+       defer l.BC()
 
        r := p.Get(p.Rval{
                Url:"https://live.bilibili.com/" + strconv.Itoa(Msg_roomid),
@@ -114,15 +117,22 @@ func Saveflvf(){
                        if saveflv.path != "" {return}
                        saveflv.path = strconv.Itoa(Msg_roomid) + "_" + p.Sys().GetTime()
                        l.I("直播流保存到", saveflv.path)
-                       if e := p.Req().Reqf(p.Rval{
+
+                       saveflv.wait = make(chan bool,1)
+                       saveflv.cancel = make(chan interface{},1)
+
+                       rr := p.Req()
+                       go func(){
+                               <- saveflv.cancel
+                               close(rr.Cancel)
+                       }()
+                       if e := rr.Reqf(p.Rval{
                                Url:url.(string),
                                SaveToPath:saveflv.path + ".flv",
                                Timeout:-1,
-                       }); e != nil{
-                               l.E(e)
-                               return
-                       }
+                       }); e != nil{l.E(e)}
                        Saveflv_transcode()
+                       close(saveflv.wait)
                } 
        }
 }
@@ -130,12 +140,18 @@ func Saveflvf(){
 func Saveflv_transcode(){
        if !saveflv.Inuse || saveflv.path == "" {return}
        if p.Checkfile().IsExist(saveflv.path+".flv"){
-               saveflv.path = ""
                p.Exec().Run(false, "ffmpeg", "-i", saveflv.path+".flv", "-c", "copy", saveflv.path+".mp4")
        } else if p.Checkfile().IsExist(saveflv.path+".flv.dtmp"){
-               saveflv.path = ""
                p.Exec().Run(false, "ffmpeg", "-i", saveflv.path+".flv.dtmp", "-c", "copy", saveflv.path+".mp4")
        }
+       saveflv.path = ""
+}
+
+func Saveflv_wait(){
+       if !saveflv.Inuse || saveflv.path == "" {return}
+       close(saveflv.cancel)
+       p.Logf().New().Open("danmu.log").Base(1, "saveflv").I("等待转码").Block()
+       <- saveflv.wait
 }
 
 type Obs struct {
@@ -153,6 +169,7 @@ var obs = Obs {
 func Obsf(on bool){
        if !obs.Inuse {return}
        l := p.Logf().New().Open("danmu.log").Base(1, "obs")
+       defer l.BC()
 
        if on {
                if p.Sys().CheckProgram("obs")[0] != 0 {l.W("obs已经启动");return}
@@ -181,6 +198,8 @@ func Obs_R(on bool){
        if !obs.Inuse {return}
 
        l := p.Logf().New().Open("danmu.log").Base(1, "obs_R")
+       defer l.BC()
+
        if p.Sys().CheckProgram("obs")[0] == 0 {
                l.W("obs未启动")
                return
@@ -273,7 +292,7 @@ func Autobanf(s string) bool {
        res = append(res, pt)
 
        l := p.Logf().New().Open("danmu.log").Base(1, "autoban")
-       l.W(res)
+       l.W(res).Block()
        return true
 }
 
@@ -499,7 +518,7 @@ func Jiezouf(s []string) bool {
        jiezou.Lock()
        if now > 1.3 * jiezou.avg {//触发
                l := p.Logf().New().Open("danmu.log").Base(1, "jiezou")
-               l.W("节奏注意", now, jiezou.avg, S)
+               l.W("节奏注意", now, jiezou.avg, S).Block()
                jiezou.avg = now //沉默
                jiezou.Unlock()
 
index 74904e0825c9ba108aee1548b333f37a8b328476..0df380dcadd297e4af9b0926f253aff9217f9d0c 100644 (file)
@@ -111,6 +111,7 @@ func Demo() {
 
                {//附加功能 直播流转码
                        reply.Saveflv_transcode()
+                       reply.Saveflv_wait()
                }
                danmulog.I("结束退出")
        }
index 6a4291794043fdd17e02a8f6ee37a0fe18385355..7cb07e055b8f38b4fa900b3929b3262faec18398 100644 (file)
@@ -5,8 +5,8 @@ go 1.14
 require (
        github.com/christopher-dG/go-obs-websocket v0.0.0-20200720193653-c4fed10356a5 // indirect
        github.com/mitchellh/mapstructure v1.3.3 // indirect
-       github.com/qydysky/bili_danmu v0.0.0-20200921055847-0aab038f7dd3
-       github.com/qydysky/part v0.0.0-20200922024213-39a1b17b5fa0 // indirect
+       github.com/qydysky/bili_danmu v0.0.0-20200922044320-64c89f442142
+       github.com/qydysky/part v0.0.0-20200922062343-5096e51d5989 // indirect
        golang.org/x/sys v0.0.0-20200918174421-af09f7315aff // indirect
 )
 
index 6f870321b48168fb9cef15a3a3160dc4fb884f45..7597f5ed4f82172b923db5b6cadf77d1a5732a69 100644 (file)
@@ -46,6 +46,10 @@ github.com/qydysky/part v0.0.0-20200918231831-729ead5cbddf h1:SuHY5rzEtAci6DUqlK
 github.com/qydysky/part v0.0.0-20200918231831-729ead5cbddf/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0=
 github.com/qydysky/part v0.0.0-20200922024213-39a1b17b5fa0 h1:2o5ixlGUZBXvRnwqILAYT2Na0LsVVKHBOK4g7+g4nvc=
 github.com/qydysky/part v0.0.0-20200922024213-39a1b17b5fa0/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0=
+github.com/qydysky/part v0.0.0-20200922060746-8db61966366b h1:9Qe6wazp6ImV0jyIELhJKlcHmnngEt9Ztukoj3CE21s=
+github.com/qydysky/part v0.0.0-20200922060746-8db61966366b/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0=
+github.com/qydysky/part v0.0.0-20200922062343-5096e51d5989 h1:W3Sm7L2/7q2VHEc0NFQKLV4mJpwouQCGDxziKiyCU/o=
+github.com/qydysky/part v0.0.0-20200922062343-5096e51d5989/go.mod h1:+8N3UgJBVyJj8ar31eZtucwrKpLpay854Y5qq0xk3x0=
 github.com/shirou/gopsutil v2.20.7+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
 github.com/shirou/gopsutil v2.20.8+incompatible h1:8c7Atn0FAUZJo+f4wYbN0iVpdWniCQk7IYwGtgdh1mY=
 github.com/shirou/gopsutil v2.20.8+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=