From 90df991929ae3d29d4062078eeae5b11a0bc6cfe Mon Sep 17 00:00:00 2001 From: qydysky <32743305+qydysky@users.noreply.github.com> Date: Mon, 23 Jan 2023 07:29:12 +0800 Subject: [PATCH] =?utf8?q?Improve=20=E9=87=8D=E5=86=99m4s=E5=90=8C?= =?utf8?q?=E6=97=B6=E4=B8=8B=E8=BD=BD=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Reply/stream.go | 24 +++++++++++------------- demo/go.mod | 2 +- demo/go.sum | 2 ++ go.mod | 2 +- go.sum | 2 ++ 5 files changed, 17 insertions(+), 15 deletions(-) diff --git a/Reply/stream.go b/Reply/stream.go index f069d65..5e1ace3 100644 --- a/Reply/stream.go +++ b/Reply/stream.go @@ -751,23 +751,20 @@ func (t *M4SStream) saveStreamM4s() (e error) { // 存在待下载切片 if len(download_seq) != 0 { - - // 设置限制计划 - download_limit.Plan(int64(len(download_seq))) - // 下载切片 for _, v := range download_seq { // 已下载但还未移除的切片 if v.status == 2 { - download_limit.Block() - download_limit.UnBlock() continue } + download_limit.Block(func() { + time.Sleep(time.Millisecond * 10) + }) go func(link *m4s_link_item, path string) { + // t.log.L(`I: `, `下载`, link.Base) defer download_limit.UnBlock() - download_limit.Block() link.status = 1 // 设置切片状态为正在下载 link.tryDownCount += 1 @@ -803,7 +800,7 @@ func (t *M4SStream) saveStreamM4s() (e error) { r := req.Item.(*reqf.Req) reqConfig := reqf.Rval{ Url: link.Url, - Timeout: 2000, + Timeout: 3000, Proxy: t.common.Proxy, Header: map[string]string{ `Connection`: `close`, @@ -815,7 +812,7 @@ func (t *M4SStream) saveStreamM4s() (e error) { if e := r.Reqf(reqConfig); e != nil && !errors.Is(e, io.EOF) { if !reqf.IsTimeout(e) { t.log.L(`E: `, `hls切片下载失败:`, link.Url, e) - link.tryDownCount = 4 // 设置切片状态为下载失败 + link.tryDownCount = 2 // 设置切片状态为下载失败 } else { link.status = 3 // 设置切片状态为下载失败 } @@ -837,9 +834,10 @@ func (t *M4SStream) saveStreamM4s() (e error) { } // 等待队列下载完成 - download_limit.PlanDone(func() { - time.Sleep(time.Millisecond * 20) + download_limit.BlockAll(func() { + time.Sleep(time.Millisecond * 10) }) + download_limit.UnBlockAll() } // 传递已下载切片 @@ -847,8 +845,8 @@ func (t *M4SStream) saveStreamM4s() (e error) { // v := download_seq[k] if download_seq[k].status != 2 { - if download_seq[k].tryDownCount >= 4 { - //下载了4次,任未下载成功,忽略此块 + if download_seq[k].tryDownCount >= 2 { + //下载了2次,任未下载成功,忽略此块 t.putM4s(download_seq[k]) download_seq = append(download_seq[:k], download_seq[k+1:]...) k -= 1 diff --git a/demo/go.mod b/demo/go.mod index 25ac499..2baa19d 100644 --- a/demo/go.mod +++ b/demo/go.mod @@ -15,7 +15,7 @@ require ( github.com/mdp/qrterminal/v3 v3.0.0 // indirect github.com/miekg/dns v1.1.50 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/qydysky/part v0.21.10 // indirect + github.com/qydysky/part v0.21.11 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e // indirect github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect diff --git a/demo/go.sum b/demo/go.sum index b54d889..ae0f59b 100644 --- a/demo/go.sum +++ b/demo/go.sum @@ -156,6 +156,8 @@ github.com/qydysky/part v0.21.9 h1:sgq56nNZcb6vaDSwzWChnkWJ07brKvj6lTVs9xKmG3A= github.com/qydysky/part v0.21.9/go.mod h1:BG0tulTKW58jSkC0EZ0MrxDHe+gkPULfGNzksiGCayw= github.com/qydysky/part v0.21.10 h1:GAMCJToiYp+G2FBD8YiptdZj3UhVAIrpxzEvw3aN4gg= github.com/qydysky/part v0.21.10/go.mod h1:BG0tulTKW58jSkC0EZ0MrxDHe+gkPULfGNzksiGCayw= +github.com/qydysky/part v0.21.11 h1:9gAsrvyFBlrz5Y4ZpmkrKCwWV4hMGc2K7X8ryB1YFok= +github.com/qydysky/part v0.21.11/go.mod h1:BG0tulTKW58jSkC0EZ0MrxDHe+gkPULfGNzksiGCayw= github.com/shirou/gopsutil v3.20.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil v3.21.5+incompatible h1:OloQyEerMi7JUrXiNzy8wQ5XN+baemxSl12QgIzt0jc= github.com/shirou/gopsutil v3.21.5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= diff --git a/go.mod b/go.mod index 47d576f..d8d681d 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/gofrs/uuid v4.3.0+incompatible github.com/gotk3/gotk3 v0.6.1 github.com/mdp/qrterminal/v3 v3.0.0 - github.com/qydysky/part v0.21.10 + github.com/qydysky/part v0.21.11 github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 golang.org/x/text v0.3.8 diff --git a/go.sum b/go.sum index 4a9b915..f9164a5 100644 --- a/go.sum +++ b/go.sum @@ -62,6 +62,8 @@ github.com/qydysky/part v0.21.9 h1:sgq56nNZcb6vaDSwzWChnkWJ07brKvj6lTVs9xKmG3A= github.com/qydysky/part v0.21.9/go.mod h1:BG0tulTKW58jSkC0EZ0MrxDHe+gkPULfGNzksiGCayw= github.com/qydysky/part v0.21.10 h1:GAMCJToiYp+G2FBD8YiptdZj3UhVAIrpxzEvw3aN4gg= github.com/qydysky/part v0.21.10/go.mod h1:BG0tulTKW58jSkC0EZ0MrxDHe+gkPULfGNzksiGCayw= +github.com/qydysky/part v0.21.11 h1:9gAsrvyFBlrz5Y4ZpmkrKCwWV4hMGc2K7X8ryB1YFok= +github.com/qydysky/part v0.21.11/go.mod h1:BG0tulTKW58jSkC0EZ0MrxDHe+gkPULfGNzksiGCayw= github.com/shirou/gopsutil v3.20.12+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -- 2.39.2