InviteRequestBuilder play playback download
This commit is contained in:
parent
63b2a7d3d0
commit
84cd2110f4
@ -15,30 +15,66 @@ import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import javax.sdp.Connection;
|
||||
import javax.sip.address.Address;
|
||||
import javax.sip.header.SubjectHeader;
|
||||
import javax.sip.message.Request;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class InviteRequestBuilder extends RequestBuilder implements InviteBuilder {
|
||||
public Request createPlayInviteRequest(String callId, long cSeq, String channelId, String rtpIp, int rtpPort, String ssrc, MediaStreamMode mediaStreamMode, int receiveId){
|
||||
private SubjectHeader createSubject(String senderId, String senderStreamId, String receiveId, String receiveStreamId){
|
||||
String subject = StringUtils.joinWith(",",
|
||||
// 发送者 channelId:流序号
|
||||
StringUtils.joinWith(":", senderId, senderStreamId),
|
||||
// 接收者 id:流序号号
|
||||
StringUtils.joinWith(":", receiveId, receiveStreamId));
|
||||
return SipBuilder.createSubjectHeader(subject);
|
||||
}
|
||||
|
||||
public Request createPlayInviteRequest(String callId, long cSeq, String channelId, String rtpIp, int rtpPort, String ssrc, MediaStreamMode mediaStreamMode, String receiveId){
|
||||
GB28181Description description = GB28181SDPBuilder.Receiver.play(getTargetId(), channelId, Connection.IP4,rtpIp,rtpPort,ssrc,mediaStreamMode);
|
||||
|
||||
SIPRequest request = (SIPRequest) createRequest(METHOD, callId, cSeq, description);
|
||||
Address address = request.getFrom().getAddress();
|
||||
|
||||
String subject = StringUtils.joinWith(",",
|
||||
// 发送者 channelId:流序号
|
||||
StringUtils.joinWith(":", channelId, ssrc),
|
||||
// 接收者 id:流序号号
|
||||
StringUtils.joinWith(":", getLocalId(), receiveId));
|
||||
return SipBuilder.addHeaders(request,
|
||||
SipBuilder.createContactHeader(address),
|
||||
SipBuilder.createSubjectHeader(subject));
|
||||
createSubject(channelId, ssrc, getLocalId(), receiveId));
|
||||
}
|
||||
|
||||
public Request createPlayInviteRequest(String callId, long cSeq, String channelId, String rtpIp, int rtpPort, String ssrc, MediaStreamMode mediaStreamMode) {
|
||||
return createPlayInviteRequest(callId, cSeq, channelId, rtpIp, rtpPort, ssrc, mediaStreamMode, 0);
|
||||
return createPlayInviteRequest(callId, cSeq, channelId, rtpIp, rtpPort, ssrc, mediaStreamMode, String.valueOf(0));
|
||||
}
|
||||
|
||||
public Request createPlaybackInviteRequest(String callId, long cSeq, String channelId, String rtpIp, int rtpPort, String ssrc, MediaStreamMode mediaStreamMode, String receiveId, Date startTime, Date endTime) {
|
||||
GB28181Description description = GB28181SDPBuilder.Receiver.playback(getTargetId(), channelId, Connection.IP4, rtpIp, rtpPort, ssrc, mediaStreamMode, startTime, endTime);
|
||||
|
||||
SIPRequest request = (SIPRequest) createRequest(METHOD, callId, cSeq, description);
|
||||
Address address = request.getFrom().getAddress();
|
||||
|
||||
return SipBuilder.addHeaders(request,
|
||||
SipBuilder.createContactHeader(address),
|
||||
createSubject(channelId, ssrc, getLocalId(), receiveId));
|
||||
}
|
||||
|
||||
public Request createPlaybackInviteRequest(String callId, long cSeq, String channelId, String rtpIp, int rtpPort, String ssrc, MediaStreamMode mediaStreamMode, Date startTime, Date endTime) {
|
||||
return createPlaybackInviteRequest(callId, cSeq, channelId, rtpIp, rtpPort, ssrc, mediaStreamMode, String.valueOf(0), startTime, endTime);
|
||||
}
|
||||
|
||||
public Request createDownloadInviteRequest(String callId, long cSeq, String channelId, String rtpIp, int rtpPort, String ssrc, MediaStreamMode mediaStreamMode, String receiveId, Date startTime, Date endTime, Double downloadSpeed) {
|
||||
GB28181Description description = GB28181SDPBuilder.Receiver.download(getTargetId(), channelId, Connection.IP4, rtpIp, rtpPort, ssrc, mediaStreamMode, startTime, endTime,downloadSpeed);
|
||||
|
||||
SIPRequest request = (SIPRequest) createRequest(METHOD, callId, cSeq, description);
|
||||
Address address = request.getFrom().getAddress();
|
||||
|
||||
return SipBuilder.addHeaders(request,
|
||||
SipBuilder.createContactHeader(address),
|
||||
createSubject(channelId, ssrc, getLocalId(), receiveId));
|
||||
}
|
||||
|
||||
public Request createDownloadInviteRequest(String callId, long cSeq, String channelId, String rtpIp, int rtpPort, String ssrc, MediaStreamMode mediaStreamMode, Date startTime, Date endTime, Double downloadSpeed) {
|
||||
return createDownloadInviteRequest(callId, cSeq, channelId, rtpIp, rtpPort, ssrc, mediaStreamMode, String.valueOf(0), startTime, endTime, downloadSpeed);
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package cn.skcks.docking.gb28181.sip.process;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.RandomUtil;
|
||||
import cn.skcks.docking.gb28181.constant.CmdType;
|
||||
@ -30,6 +31,7 @@ import javax.sip.header.WWWAuthenticateHeader;
|
||||
import javax.sip.message.Request;
|
||||
import javax.sip.message.Response;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
|
||||
@Slf4j
|
||||
public class RequestTest {
|
||||
@ -67,8 +69,20 @@ public class RequestTest {
|
||||
String playSsrc = "0" + ssrc;
|
||||
// 1 开头的为历史
|
||||
String playBackSsrc = "1" + ssrc;
|
||||
// 实时点播请求
|
||||
Request playInviteRequest = inviteRequestBuilder.createPlayInviteRequest(callId, 1, localId, rtpIp, rtpPort, playSsrc, MediaStreamMode.TCP_ACTIVE);
|
||||
log.info("\n{}", playInviteRequest);
|
||||
|
||||
Date now = DateUtil.date();
|
||||
Date startTime = DateUtil.beginOfDay(DateUtil.offsetDay(now,-1));
|
||||
Date endTime = DateUtil.endOfDay(DateUtil.offsetDay(now,-1));
|
||||
// 回放请求
|
||||
Request playbackInviteRequest = inviteRequestBuilder.createPlaybackInviteRequest(callId, 1, localId, rtpIp, rtpPort, playBackSsrc, MediaStreamMode.TCP_ACTIVE,startTime,endTime);
|
||||
log.info("\n{}", playbackInviteRequest);
|
||||
|
||||
// 下载请求
|
||||
Request downloadInviteRequest = inviteRequestBuilder.createDownloadInviteRequest(callId, 1, localId, rtpIp, rtpPort, playBackSsrc, MediaStreamMode.TCP_ACTIVE,startTime,endTime,4.0);
|
||||
log.info("\n{}", downloadInviteRequest);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user