zhaowenyu
2025-12-04 f5fe67e04309b041ec98a5e071cb227a7a1021ca
ard-sample/src/main/java/com/ard/sample/manage/service/impl/LiveStreamServiceImpl.java
@@ -22,6 +22,7 @@
import com.ard.vtdu.domain.ArdVtdu;
import com.ard.vtdu.service.IArdMediaService;
import com.ard.vtdu.service.IArdVtduService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -40,6 +41,7 @@
 * @version 0.1
 * @date 2021/11/22
 */
@Slf4j
@Service
@Transactional
public class LiveStreamServiceImpl implements ILiveStreamService {
@@ -116,7 +118,7 @@
        ServiceReply receiveReply = this.publishLiveStart(respTopic, liveParam);
        if (ResponseResult.CODE_SUCCESS != receiveReply.getResult()) {
            return ResponseResult.error(LiveErrorEnum.find(receiveReply.getResult()));
            return ResponseResult.error(receiveReply.getResult(), LiveErrorEnum.find(receiveReply.getResult()).getErrorMsg());
        }
        LiveUrlTypeEnum urlType = LiveUrlTypeEnum.find(liveParam.getUrlType());
@@ -140,12 +142,36 @@
                // 如果没有,插入新的记录
                ArdVtdu vtdu =
                        ArdVtdu.builder().name(name).rtspSource("publisher").rtspUrl(rtspUrl).rtmpUrl(rtmpUrl).webrtcUrl(webrtcUrl).build();
                int i = ardVtduService.insertArdVtdu(vtdu);  // 保存到媒体表
                if (i > 0) {
                    live.setRtmpUrl(rtmpUrl);
                    live.setRtspUrl(rtspUrl);
                    live.setWebrtcUrl(webrtcUrl);
                // 在停止直播时不删除Vtdu表记录,所以在开启直播时再插入会报错,
                // 所以要先查询是否存在该记录,如果已经存在记录,直接返回直播地址
                // 查询是否已经存在该记录
                ArdVtdu ardVtdu = ardVtduService.selectArdVtduByName(vtdu.getName());
                int i = 0;
                log.info("机场视频插入前vtdu:{}",vtdu);
                if(ardVtdu == null){
                    i = ardVtduService.insertArdVtdu(vtdu);  // 保存到媒体表
                    log.info("机场视频插入后 i:{}",i);
                    if (i > 0) {
                        live.setRtmpUrl(rtmpUrl);
                        live.setRtspUrl(rtspUrl);
                        live.setWebrtcUrl(webrtcUrl);
                    }
                }
                else{
                    i = ardVtduService.updateArdVtdu(vtdu);
                    log.info("机场视频更新后 i:{}",i);
                    if (i > 0) {
                        live.setRtmpUrl(rtmpUrl);
                        live.setRtspUrl(rtspUrl);
                        live.setWebrtcUrl(webrtcUrl);
                    }
                }
                //int i = ardVtduService.insertArdVtdu(vtdu);  // 保存到媒体表
//                if (i > 0) {
//                    live.setRtmpUrl(rtmpUrl);
//                    live.setRtspUrl(rtspUrl);
//                    live.setWebrtcUrl(webrtcUrl);
//                }
                break;
            case RTSP: