From 048a26977fed1a70d4b0232cd45c55881afe0809 Mon Sep 17 00:00:00 2001 From: qydysky Date: Tue, 22 Sep 2020 14:40:52 +0800 Subject: [PATCH] 19 --- Reply/F.go | 37 ++++++++++++++++++++++++++++--------- bili_danmu.go | 1 + demo/go.mod | 4 ++-- demo/go.sum | 4 ++++ 4 files changed, 35 insertions(+), 11 deletions(-) diff --git a/Reply/F.go b/Reply/F.go index 8e88ec8..a8a8c0d 100644 --- a/Reply/F.go +++ b/Reply/F.go @@ -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() diff --git a/bili_danmu.go b/bili_danmu.go index 74904e0..0df380d 100644 --- a/bili_danmu.go +++ b/bili_danmu.go @@ -111,6 +111,7 @@ func Demo() { {//附加功能 直播流转码 reply.Saveflv_transcode() + reply.Saveflv_wait() } danmulog.I("结束退出") } diff --git a/demo/go.mod b/demo/go.mod index 6a42917..7cb07e0 100644 --- a/demo/go.mod +++ b/demo/go.mod @@ -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 ) diff --git a/demo/go.sum b/demo/go.sum index 6f87032..7597f5e 100644 --- a/demo/go.sum +++ b/demo/go.sum @@ -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= -- 2.39.2