liusuyi
2026-05-12 9f327c33730ba10cb2d89aff99b727502232e968
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package com.ard.work.sdk.hb.cache;
 
import lombok.extern.slf4j.Slf4j;
 
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
 
@Slf4j
public class HbStreamStatsCache {
    private HbStreamStatsCache() {
        throw new UnsupportedOperationException("该类为静态工具类,禁止实例化!");
    }
 
    /** 运行状态:Key=相机ID,Value=是否运行 */
    private static final ConcurrentHashMap<String, AtomicBoolean> cameraRunningMap = new ConcurrentHashMap<>();
 
    // ===================== 运行状态操作 =====================
    public static void initRunningStatus(String cameraId) {
        if (cameraId == null) return;
        cameraRunningMap.put(cameraId, new AtomicBoolean(true));
        log.debug("相机[{}]运行状态已初始化:运行中", cameraId);
    }
 
    public static boolean getRunningStatus(String cameraId) {
        if (cameraId == null) return false;
        AtomicBoolean status = cameraRunningMap.get(cameraId);
        return status != null && status.get();
    }
 
    public static void setRunningStatus(String cameraId, boolean isRunning) {
        if (cameraId == null) return;
        AtomicBoolean status = cameraRunningMap.get(cameraId);
        if (status == null) {
            status = new AtomicBoolean(isRunning);
            cameraRunningMap.put(cameraId, status);
        } else {
            status.set(isRunning);
        }
        log.debug("相机[{}]运行状态已设置:{}", cameraId, isRunning ? "运行中" : "已停止");
    }
 
    public static void removeRunningStatus(String cameraId) {
        if (cameraId == null) return;
        cameraRunningMap.remove(cameraId);
        log.debug("相机[{}]运行状态已移除", cameraId);
    }
 
    // ===================== 【核心:停止推流线程】 =====================
    public static void stopRunning(String cameraId) {
        setRunningStatus(cameraId, false);
    }
 
    // ===================== 【核心:清空所有缓存】 =====================
    public static void clearAll() {
        cameraRunningMap.clear();
        log.warn("已清空所有相机运行状态缓存");
    }
}