From 3bfb8c1f0f072cb0ff592ce338e01d0b2315b896 Mon Sep 17 00:00:00 2001 From: qydysky <32743305+qydysky@users.noreply.github.com> Date: Tue, 20 Sep 2022 06:51:20 +0800 Subject: [PATCH] =?utf8?q?=E5=9B=9E=E6=94=BE=E5=BD=95=E5=83=8F=E6=97=B6?= =?utf8?q?=E4=B8=8D=E4=B8=80=E6=AC=A1=E4=B8=8B=E8=BD=BD=E5=AE=8C=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Reply/F.go | 31 ++++++++++++++++++++++++++++--- Reply/stream.go | 2 +- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/Reply/F.go b/Reply/F.go index 8ec3bca..70d9ad7 100644 --- a/Reply/F.go +++ b/Reply/F.go @@ -3,12 +3,14 @@ package reply import ( "context" "encoding/json" + "errors" "fmt" "io" "io/ioutil" "math" "net/http" "net/url" + "os" "os/exec" "path/filepath" "strconv" @@ -1139,10 +1141,33 @@ func init() { v += referer.Path } if p.Checkfile().IsExist(v + "0.flv") { - http.ServeFile(w, r, v+"0.flv") + v += "0.flv" + } else if p.Checkfile().IsExist(v + "0.mp4") { + v += "0.mp4" } - if p.Checkfile().IsExist(v + "0.mp4") { - http.ServeFile(w, r, v+"0.mp4") + if f, e := os.OpenFile(v, os.O_RDONLY, 0644); e != nil { + w.Header().Set("Retry-After", "1") + w.WriteHeader(http.StatusServiceUnavailable) + flog.L(`E: `, e) + } else { + // 流推送 + l := limit.New(5, 500, -1) + defer l.Close() + var buf = make([]byte, 1<<16) + for { + if n, e := f.Read(buf); e != nil { + if errors.Is(e, io.EOF) { + break + } else { + flog.L(`E: `, e) + } + } else { + if _, e := w.Write(buf[:n]); e != nil { + break + } + } + l.TO() + } } } else { w.Header().Set("Retry-After", "1") diff --git a/Reply/stream.go b/Reply/stream.go index ddd19e4..789d87e 100644 --- a/Reply/stream.go +++ b/Reply/stream.go @@ -399,7 +399,7 @@ func (t *M4SStream) fetchParseM3U8() (m4s_links []*m4s_link_item, m3u8_addon []b func (t *M4SStream) saveStream() { // 设置保存路径 - t.Current_save_path = t.config.save_path + "/" + strconv.Itoa(t.common.Roomid) + "_" + time.Now().Format("2006_01_02_15-04-05-000") + `/` + t.Current_save_path = t.config.save_path + "/" + time.Now().Format("2006_01_02_15_04_05_000") + "_" + strconv.Itoa(t.common.Roomid) + `/` // 清除初始值 t.last_m4s = nil -- 2.39.2