package com.ard.zlm.service;
|
|
import com.ard.gb28181.api.domain.Device;
|
import com.ard.zlm.domain.StreamChannel;
|
import com.ard.zlm.domain.StreamChannel;
|
import com.ard.work.api.domian.ArdChannel;
|
import com.ard.zlm.api.domain.*;
|
import com.ard.zlm.common.InviteSessionType;
|
import com.ard.zlm.domain.MediaServerLoad;
|
import com.ard.zlm.domain.RecordInfo;
|
import com.ard.zlm.domain.Snap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 媒体服务器Service接口
|
*
|
* @FileName IMediaServerService
|
* @Description
|
* @Author fengcheng
|
* @date 2026-03-31
|
**/
|
public interface IMediaServerService {
|
|
/**
|
* 获取默认的媒体服务器
|
*
|
* @return
|
*/
|
ZlmMediaServer getDefaultMediaServer();
|
|
/**
|
* 添加媒体服务器
|
*
|
* @param zlmMediaServer
|
*/
|
int add(ZlmMediaServer zlmMediaServer);
|
|
/**
|
* 修改媒体服务器
|
*
|
* @param zlmMediaServer
|
*/
|
int update(ZlmMediaServer zlmMediaServer);
|
|
/**
|
* 删除媒体服务器
|
*
|
* @param zlmMediaServer
|
*/
|
void delete(ZlmMediaServer zlmMediaServer);
|
|
/**
|
* 从数据库中获取所有媒体服务器
|
*
|
* @return
|
*/
|
List<ZlmMediaServer> getAllFromDatabase();
|
|
/**
|
* 从数据库中获取指定id的媒体服务器
|
*
|
* @param id
|
* @return
|
*/
|
ZlmMediaServer getOneFromDatabase(String id);
|
|
/**
|
* 从数据库中获取指定id的媒体服务器
|
*
|
* @param id
|
* @return
|
*/
|
ZlmMediaServer getOne(String id);
|
|
/**
|
* 获取所有在线媒体服务器
|
*
|
* @return
|
*/
|
List<ZlmMediaServer> getAllOnlineMediaServe();
|
|
/**
|
* 获取负载最小的媒体服务器
|
*
|
* @param hasAssist 是否包含辅助媒体服务器
|
* @return
|
*/
|
ZlmMediaServer getMediaServerForMinimumLoad(Boolean hasAssist);
|
|
/**
|
* 拉流播放
|
*
|
* @param streamPullPlay 拉流播放请求参数
|
* @param callback 回调
|
*/
|
void streamPullPlay(StreamPullPlay streamPullPlay, ErrorCallback<StreamInfo> callback);
|
|
/**
|
* 根据应用名和流ID获取播放地址, 通过zlm接口检查是否存在
|
*
|
* @param app 应用名
|
* @param stream 流ID
|
* @param mediaServerId 媒体服务器ID
|
* @param addr 媒体服务器地址
|
* @param authority 鉴权
|
* @return
|
*/
|
StreamInfo getStreamInfoByAppAndStreamWithCheck(String app, String stream, String mediaServerId, String addr, boolean authority);
|
|
/**
|
* 根据应用名和流ID获取播放地址, 只是地址拼接
|
*
|
* @param mediaServer 媒体服务器
|
* @param app 应用名
|
* @param stream 流ID
|
* @param mediaInfo 媒体信息
|
* @return
|
*/
|
StreamInfo getStreamInfoByAppAndStream(ZlmMediaServer mediaServer, String app, String stream, MediaInfo mediaInfo);
|
|
/**
|
* 停止拉流播放
|
*
|
* @param streamPullPlay
|
*/
|
void stopStreamPullPlay(StreamPullPlay streamPullPlay);
|
|
/**
|
* 点播成功时调用截图
|
*
|
* @param mediaServer media
|
* @param app app
|
* @param stream 流id
|
*/
|
String snapOnPlay(ZlmMediaServer mediaServer, String app, String stream);
|
|
/**
|
* 获取截图
|
*
|
* @param mediaServer
|
* @param snap
|
* @return
|
*/
|
String getSnap(ZlmMediaServer mediaServer, Snap snap);
|
|
/**
|
* 创建RTP服务器
|
*
|
* @param mediaServer zlm服务实例
|
* @param app 应用名
|
* @param streamId 流Id
|
* @param ssrc ssrc
|
* @param port 端口, 0/null为使用随机
|
* @param onlyAuto 是否只自动分配
|
* @param disableAudio 是否禁用音频
|
* @param reUsePort 是否重用端口
|
* @param tcpMode 0/null udp 模式,1 tcp 被动模式, 2 tcp 主动模式。
|
* @return
|
*/
|
int createRTPServer(ZlmMediaServer mediaServer, String app, String streamId, long ssrc, Integer port, Boolean onlyAuto, Boolean disableAudio, Boolean reUsePort, Integer tcpMode);
|
|
/**
|
* rtp播放
|
*
|
* @param rtpServerParam 创建rtp端口请求参数
|
* @param callback
|
* @return
|
*/
|
void rtpPlay(RTPServerParam rtpServerParam, ErrorCallback<StreamInfo> callback);
|
|
/**
|
* 关闭RTP服务器
|
*
|
* @param mediaServerItem
|
* @param streamId
|
*/
|
void closeRTPServer(ZlmMediaServer mediaServerItem, String streamId);
|
|
/**
|
* 停止rtp播放
|
*
|
* @param rtpServerParam 创建rtp端口请求参数
|
* @return
|
*/
|
void stopRtpPlay(RTPServerParam rtpServerParam);
|
|
/**
|
* 判断流是否已经准备好
|
*
|
* @param mediaServer
|
* @param rtp
|
* @param streamId
|
* @return
|
*/
|
Boolean isStreamReady(ZlmMediaServer mediaServer, String rtp, String streamId);
|
|
/**
|
* 加载文件形成播放地址
|
*
|
* @param id 设备id
|
* @param callback 回调
|
* @return
|
*/
|
void loadRecord(Long id, ErrorCallback<StreamInfo> callback);
|
|
/**
|
* 关闭流文件形成播放地址
|
*
|
* @param id 设备id
|
*/
|
void closeStreams(Long id);
|
|
/**
|
* 获取流媒体服务器列表
|
*
|
* @return
|
*/
|
List<ZlmMediaServer> getAll();
|
|
/**
|
* 测试流媒体服务
|
*
|
* @param ip 流媒体服务IP
|
* @param port 流媒体服务HTT端口
|
* @param secret 流媒体服务secret
|
* @param type 流媒体服务类型
|
* @return
|
*/
|
ZlmMediaServer checkMediaServer(String ip, int port, String secret, String type);
|
|
/**
|
* 获取流信息
|
*
|
* @param app 应用名
|
* @param stream 流ID
|
* @param mediaServer 媒体服务器
|
* @return
|
*/
|
MediaInfo getMediaInfo(ZlmMediaServer mediaServer, String app, String stream);
|
|
/**
|
* 删除录制文件
|
*
|
* @param mediaServer
|
* @param app
|
* @param stream
|
* @param date
|
* @param fileName
|
* @return
|
*/
|
boolean deleteRecordDirectory(ZlmMediaServer mediaServer, String app, String stream, String date, String fileName);
|
|
/**
|
* 获取下载文件路径
|
*
|
* @param mediaServer
|
* @param recordInfo
|
* @return
|
*/
|
DownloadFileInfo getDownloadFilePath(ZlmMediaServer mediaServer, RecordInfo recordInfo);
|
|
/**
|
* 设置录像播放速度
|
*
|
* @param mediaServer 使用的节点
|
* @param app 应用名
|
* @param stream 流id
|
* @param stamp 播放速度
|
* @param schema 播放协议
|
*/
|
void seekRecordStamp(ZlmMediaServer mediaServer, String app, String stream, Double stamp, String schema);
|
|
/**
|
* 定位录像播放到制定位置
|
*
|
* @param mediaServer 使用的节点
|
* @param app 应用名
|
* @param stream 流ID
|
* @param speed 要定位的时间位置,从录像开始的时间算起
|
* @param schema 播放协议
|
*/
|
void setRecordSpeed(ZlmMediaServer mediaServer, String app, String stream, Integer speed, String schema);
|
|
/**
|
* 关闭流
|
*
|
* @param mediaServer 媒体服务器
|
* @param app 应用名
|
* @param stream 流ID
|
*/
|
void closeStreams(ZlmMediaServer mediaServer, String app, String stream);
|
|
/**
|
* 开始播放
|
*
|
* @param channel 通道信息
|
* @param record 是否录制
|
* @param callback 回调
|
*/
|
void play(ArdChannel channel, Boolean record, ErrorCallback<StreamInfo> callback);
|
|
/**
|
* 获取流媒体服务器负载
|
*
|
* @param mediaServer
|
* @return
|
*/
|
MediaServerLoad getLoad(ZlmMediaServer mediaServer);
|
|
/**
|
* 重启流媒体
|
*
|
* @param mediaServer 流媒体ID
|
* @return
|
*/
|
void restartServer(ZlmMediaServer mediaServer);
|
|
/**
|
* 生成推流地址
|
*
|
* @param id 设备id
|
* @param callId
|
* @return
|
*/
|
Map<String, Object> getStreamPushAddress(Long id, String callId);
|
|
/**
|
* 推流播放
|
*
|
* @param id
|
* @param callback
|
*/
|
void streamPullPush(Long id, ErrorCallback<StreamInfo> callback);
|
|
/**
|
* gb28181 播放
|
*
|
* @param streamChannel
|
* @param gbDevice
|
* @param callback
|
*/
|
void startGb28181Play(StreamChannel streamChannel, Device gbDevice, ErrorCallback<StreamInfo> callback);
|
|
/**
|
* 连接rtp服务
|
*
|
* @param mediaServer
|
* @param address
|
* @param port
|
* @param stream
|
* @return
|
*/
|
Boolean connectRtpServer(ZlmMediaServer mediaServer, String address, int port, String stream);
|
|
/**
|
* gb28181 停止点播
|
*
|
* @param type
|
* @param streamChannel
|
* @param device
|
* @param stream
|
*/
|
void stopGb28181Play(InviteSessionType type, StreamChannel streamChannel, Device device, String stream);
|
|
/**
|
* gb28181 播放(基于GbChannel,不依赖QS)
|
*/
|
void startGb28181PlayByGbChannel(StreamChannel streamChannel, Device gbDevice, ErrorCallback<StreamInfo> callback);
|
|
/**
|
* gb28181 停止点播(基于GbChannel,不依赖QS)
|
*/
|
void stopGb28181PlayByGbChannel(InviteSessionType type, StreamChannel streamChannel, Device device, String stream);
|
|
/**
|
* 通过通道ID拉流代理(简化传参,自动根据通道类型确定app/url等参数)
|
*
|
* @param channelId 通道ID
|
* @param callback 回调
|
*/
|
void streamPullPlayByChannelId(String channelId, ErrorCallback<StreamInfo> callback);
|
|
/**
|
* 通过通道ID停止拉流代理
|
*
|
* @param channelId 通道ID
|
*/
|
void stopStreamPullPlayByChannelId(String channelId);
|
}
|