package com.aegis.camera.service;

import java.util.Map;
import com.aegis.camera.domain.Camera;

/**
 * ZLMediaKit 集成服务
 *
 * 负责与 ZLMediaKit 的 HTTP API 交互，启动/停止流并生成播放地址。
 *
 * 说明：
 * - 此接口只定义能力，不直接耦合到具体协议细节（rtsp/gb28181 等）；
 * - 由实现类从 Camera.extraConfig 中解析出协议相关参数。
 */
public interface ZLMediaKitService {

    /**
     * 启动指定摄像头的流（通常是从 RTSP/GB28181 拉流）。
     *
     * @param camera 摄像头实体，需包含 protocol 和 extraConfig 等信息
     * @return true 表示已成功向 ZLMediaKit 下发启动指令（不保证设备一定在线）
     */
    boolean startStream(Camera camera);

    /**
     * 停止指定摄像头的流。
     *
     * @param camera 摄像头实体
     * @return true 表示已成功向 ZLMediaKit 下发停止指令
     */
    boolean stopStream(Camera camera);

    /**
     * 根据摄像头编码获取播放地址（HLS/FLV/WebSocket-FLV 等）。
     *
     * @param cameraCode 摄像头编码（通常映射为 ZLM 的 streamId）
     * @return key 为协议类型（如 hls、flv、wsFlv），value 为对应播放 URL
     */
    Map<String, String> getPlayUrls(String cameraCode);
}