From 9684346067485b753d83b45ee80eb571f9b98446 Mon Sep 17 00:00:00 2001 From: tamakyi Date: Sat, 26 Sep 2026 09:37:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E6=8E=89=205=20=E4=B8=AA=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E6=B2=A1=E4=BA=BA=E8=B0=83=E7=94=A8=E7=9A=84=E9=81=97?= =?UTF-8?q?=E7=95=99=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit staticcheck 的 U1000 一直报这 5 个,逐个核对过引用(含同名方法、测试、字符串调用、反射): - runFFmpeg:runFFmpegWith 的薄包装,没有任何调用点 - isLiveOn(uid int):包级函数没人用,实际在跑的始终是 streamer.isLiveOn() 方法 - quitRecord:需要收尾的地方都直接 updateLiveInfo(..., isRecording = false) - setLiveInfo:整体覆盖 liveInfo,早已被 updateLiveInfo(原地改部分字段)取代 - isRecording(liveID):字段 info.isRecording 到处都在直接用 上一轮那个 jobActive 虽然也是 U1000,但它是「本该接上却漏接」的护栏(接回后 P0 的并发问题才解决),所以这次删之前特意确认这 5 个不是同类情况:它们都有 等价且更合适的现役替代实现。 验证:gofmt -l 空;go vet ./... 空;go build ./... 通过;go test ./... 全绿(11.3s); staticcheck -checks=all 的 U1000 归零。 --- danmuburn.go | 5 ----- fetch.go | 16 ---------------- record.go | 5 ----- utils.go | 15 --------------- 4 files changed, 41 deletions(-) diff --git a/danmuburn.go b/danmuburn.go index 56c9f50..7fa7d8d 100644 --- a/danmuburn.go +++ b/danmuburn.go @@ -933,14 +933,9 @@ func buildEncoders(bitrate int, ffmpegFile string) []videoEncoder { return encoders } -// 运行 ffmpeg,输出直接透传到控制台 // ffmpeg 的进度回调:已输出时长(秒)、实时倍速、帧率、已写出字节 type ffmpegProgress func(outSec, speed, fps float64, totalSize int64) -func runFFmpeg(ffmpegFile string, args []string, dir string) error { - return runFFmpegWith(ffmpegFile, args, dir, nil) -} - // 跑一次 ffmpeg。cb 不为空时加 -progress pipe:1 取结构化进度; // ffmpeg 自己的统计行仍在 stderr 里,照旧进日志,单独用命令行时不会少东西。 func runFFmpegWith(ffmpegFile string, args []string, dir string, cb ffmpegProgress) error { diff --git a/fetch.go b/fetch.go index bfe32f4..de922fd 100644 --- a/fetch.go +++ b/fetch.go @@ -258,22 +258,6 @@ func getLiveID(uid int) string { return "" } -// 根据 uid 查看主播是否正在直播 -func isLiveOn(uid int) bool { - liveRooms.RLock() - _, ok := liveRooms.rooms[uid] - liveRooms.RUnlock() - if ok { - return true - } - - if isLive, room, err := tryFetchLiveInfo(uid); err == nil { - defer liveRoomPool.Put(room) - return isLive - } - return false -} - // 获取主播直播间的标题 func (s *streamer) getTitle() string { return getTitle(s.UID) diff --git a/record.go b/record.go index 507521b..b2d5d93 100644 --- a/record.go +++ b/record.go @@ -221,11 +221,6 @@ func stopRecord(uid int) bool { return true } -// 退出直播视频录制相关操作 -func quitRecord(liveID string) { - updateLiveInfo(liveID, func(i *liveInfo) { i.isRecording = false }) -} - // 初始化直播视频录制 func (s streamer) initRecord(ctx context.Context, liveID, filename string) { defer func() { diff --git a/utils.go b/utils.go index 0d9e58b..1e11de0 100644 --- a/utils.go +++ b/utils.go @@ -248,13 +248,6 @@ func getLiveInfo(liveID string) (liveInfo, bool) { return liveInfo{}, false } -// 将 info 放进 lInfoMap 里 -func setLiveInfo(info liveInfo) { - lInfoMap.Lock() - defer lInfoMap.Unlock() - lInfoMap.info[info.LiveID] = info -} - // 原地更新 liveInfo 的部分字段,不覆盖其他字段(弹幕和视频录制共用同一个 liveInfo) func updateLiveInfo(liveID string, f func(*liveInfo)) { lInfoMap.Lock() @@ -275,14 +268,6 @@ func isDanmu(liveID string) bool { return false } -// 根据 liveID 查询是否正在录制直播视频 -func isRecording(liveID string) bool { - if info, ok := getLiveInfo(liveID); ok { - return info.isRecording - } - return false -} - // 跨盘搬运成片时的临时后缀:拷一半失败也能一眼看出不是成品 const partSuffix = ".acfunlive.part"