|
|
@@ -28,6 +28,7 @@ import com.genersoft.iot.vmp.media.event.media.MediaArrivalEvent;
|
|
|
import com.genersoft.iot.vmp.media.event.media.MediaDepartureEvent;
|
|
|
import com.genersoft.iot.vmp.media.event.media.MediaNotFoundEvent;
|
|
|
import com.genersoft.iot.vmp.media.service.IMediaServerService;
|
|
|
+import com.genersoft.iot.vmp.media.zlm.dto.StreamAuthorityInfo;
|
|
|
import com.genersoft.iot.vmp.service.IReceiveRtpServerService;
|
|
|
import com.genersoft.iot.vmp.service.ISendRtpServerService;
|
|
|
import com.genersoft.iot.vmp.service.bean.*;
|
|
|
@@ -121,6 +122,9 @@ public class PlayServiceImpl implements IPlayService {
|
|
|
@Autowired
|
|
|
private IReceiveRtpServerService receiveRtpServerService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ICloudRecordService cloudRecordService;
|
|
|
+
|
|
|
/**
|
|
|
* 流到来的处理
|
|
|
*/
|
|
|
@@ -1053,8 +1057,40 @@ public class PlayServiceImpl implements IPlayService {
|
|
|
@Override
|
|
|
public StreamInfo getDownLoadInfo(Device device, DeviceChannel channel, String stream) {
|
|
|
InviteInfo inviteInfo = inviteStreamService.getInviteInfo(InviteSessionType.DOWNLOAD, channel.getId(), stream);
|
|
|
+ if (inviteInfo == null) {
|
|
|
+ String app = "rtp";
|
|
|
+ StreamAuthorityInfo streamAuthorityInfo = redisCatchStorage.getStreamAuthorityInfo(app, stream);
|
|
|
+ if (streamAuthorityInfo != null) {
|
|
|
+ List<CloudRecordItem> allList = cloudRecordService.getAllList(null, app, stream, null, null, null, streamAuthorityInfo.getCallId(), null);
|
|
|
+ if (allList.isEmpty()) {
|
|
|
+ log.warn("[获取下载进度] 未查询到录像下载的信息 {}/{}-{}", device.getDeviceId(), channel.getDeviceId(), stream);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ String filePath = allList.get(0).getFilePath();
|
|
|
+ if (filePath == null) {
|
|
|
+ log.warn("[获取下载进度] 未查询到录像下载的文件路径 {}/{}-{}", device.getDeviceId(), channel.getDeviceId(), stream);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ String mediaServerId = allList.get(0).getMediaServerId();
|
|
|
+ MediaServer mediaServer = mediaServerService.getOne(mediaServerId);
|
|
|
+ if (mediaServer == null) {
|
|
|
+ log.warn("[获取下载进度] 未查询到录像下载的节点信息 {}/{}-{}", device.getDeviceId(), channel.getDeviceId(), stream);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ log.warn("[获取下载进度] 发现下载已经结束,直接从数据库获取到文件 {}/{}-{}", device.getDeviceId(), channel.getDeviceId(), stream);
|
|
|
+ DownloadFileInfo downloadFileInfo = CloudRecordUtils.getDownloadFilePath(mediaServer, filePath);
|
|
|
+ StreamInfo streamInfo = new StreamInfo();
|
|
|
+ streamInfo.setDownLoadFilePath(downloadFileInfo);
|
|
|
+ streamInfo.setApp(app);
|
|
|
+ streamInfo.setStream(stream);
|
|
|
+ streamInfo.setServerId(mediaServerId);
|
|
|
+ streamInfo.setProgress(1.0);
|
|
|
+ return streamInfo;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (inviteInfo == null || inviteInfo.getStreamInfo() == null) {
|
|
|
- log.warn("[获取下载进度] 未查询到录像下载的信息");
|
|
|
+ log.warn("[获取下载进度] 未查询到录像下载的信息 {}/{}-{}", device.getDeviceId(), channel.getDeviceId(), stream);
|
|
|
return null;
|
|
|
}
|
|
|
|